summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
diff options
context:
space:
mode:
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.java97
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() {
+ }
+ }
}