diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java | 97 |
1 files changed, 77 insertions, 20 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index 9733c4ad..c852b891 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -19,6 +19,7 @@ import java.util.concurrent.TimeUnit; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; @@ -28,6 +29,7 @@ import javax.swing.JSeparator; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.SatelliteStatus; +import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.filetransfer.DownloadTask; import org.openslx.dozmod.gui.Gui.GuiCallable; @@ -37,6 +39,7 @@ import org.openslx.dozmod.gui.activity.UploadPanel; import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.helper.CompositePage; import org.openslx.dozmod.gui.helper.DebugWindow; +import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.UiFeedback; import org.openslx.dozmod.gui.window.ConfigWindow; @@ -186,11 +189,9 @@ public abstract class MainWindow { } }); - createMenu(); - // Set layout for the mainshell, items added to the shell should get a gridData mainContainer.setLayout(new BoxLayout(mainContainer, BoxLayout.PAGE_AXIS)); - + // Scale the ui with the font. int scale = Config.getFontScaling(); mainWindow.setMinimumSize(new Dimension(850 * scale / 100, 650 * scale / 100)); @@ -199,6 +200,7 @@ public abstract class MainWindow { registerPage(new MainMenuWindow()); registerPage(new ImageListWindow()); registerPage(new LectureListWindow()); + registerPage(new PleaseWait()); // Debug? if (System.getProperty("log") != null) { @@ -207,6 +209,7 @@ public abstract class MainWindow { win.setPreferredSize(win.getMinimumSize()); mainWindow.getContentPane().add(win, BorderLayout.PAGE_START); } + // Activity panel at the bottom (file transfer, ...) activityPanel.setLayout(new BoxLayout(activityPanel, BoxLayout.PAGE_AXIS)); activityPanel.setVisible(false); activityPanel.add(new JSeparator()); @@ -217,21 +220,54 @@ public abstract class MainWindow { mainWindow.setLocationRelativeTo(null); mainWindow.setVisible(true); - // now try to init the session with the saved configuration (by giving it null as 2nd param) - if (!ThriftActions.initSession(mainWindow, null)) { - // session resume failed, so do the normal login procedure + if (Config.getSavedSession() == null) { LoginWindow.open(mainWindow); + initWindow(); + } else { + if (!App.isInitDone()) { + showPage(PleaseWait.class); + } + QuickTimer.scheduleOnce(new Task() { + @Override + public void fire() { + App.waitForInit(); + // now try to init the session with the saved configuration (by giving it null) + if (ThriftActions.initSession(null)) { + initWindow(); + } else { + // session resume failed, so do the normal login procedure + Gui.asyncExec(new Runnable() { + @Override + public void run() { + LoginWindow.open(mainWindow); + initWindow(); + } + }); + } + } + }); } + } - if (DisclaimerWindow.shouldBeShown()) { - DisclaimerWindow.open(mainWindow); - } + private static boolean initOnce = false; - mainWindow.setTitle("bwSuite - " + Session.getFirstName() + " " + Session.getLastName() + " [" - + Session.getSatelliteAddress() + "]"); + private static void initWindow() { + if (initOnce || !App.isInitDone()) + return; + initOnce = true; + // Sanity check: This should only happen once the user is logged in, if we don't have + // a session, just bail out completely + if (Session.getSatelliteToken() == null) + System.exit(42); // Show main menu by default showPage(MainMenuWindow.class); + createMenu(); + mainWindow.setTitle("bwSuite - " + Session.getFirstName() + " " + Session.getLastName() + " [" + + Session.getSatelliteAddress() + "]"); + if (DisclaimerWindow.shouldBeShown()) { + DisclaimerWindow.open(mainWindow); + } } /** @@ -306,6 +342,16 @@ public abstract class MainWindow { JMenuBar menuBar = new JMenuBar(); mainWindow.setJMenuBar(menuBar); + JMenu cascadeSessionMenu = new JMenu("Sitzung"); + menuBar.add(cascadeSessionMenu); + JMenuItem configItem = new JMenuItem("Einstellungen"); + cascadeSessionMenu.add(configItem); + cascadeSessionMenu.addSeparator(); + JMenuItem logoutItem = new JMenuItem("Abmelden und beenden"); + cascadeSessionMenu.add(logoutItem); + JMenuItem exitItem = new JMenuItem("Beenden"); + cascadeSessionMenu.add(exitItem); + JMenu cascadeViewMenu = new JMenu("Ansicht"); menuBar.add(cascadeViewMenu); JMenuItem homeItem = new JMenuItem("Startseite"); @@ -314,15 +360,6 @@ public abstract class MainWindow { cascadeViewMenu.add(imagesItem); JMenuItem lecturesItem = new JMenuItem("Veranstaltungen"); cascadeViewMenu.add(lecturesItem); - - JMenu cascadeSessionMenu = new JMenu("Sitzung"); - menuBar.add(cascadeSessionMenu); - JMenuItem configItem = new JMenuItem("Einstellungen"); - cascadeSessionMenu.add(configItem); - JMenuItem logoutItem = new JMenuItem("Abmelden"); - cascadeSessionMenu.add(logoutItem); - JMenuItem exitItem = new JMenuItem("Beenden"); - cascadeSessionMenu.add(exitItem); // the About menu button JMenu cascadeAboutMenu = new JMenu("Über"); @@ -458,5 +495,25 @@ public abstract class MainWindow { } }, 10, 2001); } + + @SuppressWarnings("serial") + private static class PleaseWait extends CompositePage { + public PleaseWait() { + GridManager grid = new GridManager(this, 3); + grid.add(Box.createHorizontalGlue()).expand(true, true); + grid.add(new JLabel("Bitte warten, suche Proxy-Konfiguration...")).expand(false, true).fill(true, true); + grid.add(Box.createHorizontalGlue()).expand(true, true); + grid.finish(false); + } + + @Override + public boolean requestHide() { + return true; + } + + @Override + public void requestShow() { + } + } } |