summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-23 16:52:16 +0200
committerSimon Rettberg2015-09-23 16:52:16 +0200
commit8bb1ae726b5108d8ff58dbfd36378fb8319dfa98 (patch)
tree05e0b880c824673bc9d7e0d8bc2c33e8c3630b28 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
parent[server] Fix race condition on delete; check for vmstore before up/download (diff)
downloadtutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.tar.gz
tutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.tar.xz
tutor-module-8bb1ae726b5108d8ff58dbfd36378fb8319dfa98.zip
[client] Disable login button while login is running; create legacy vmx if server doesn't supply one
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java50
1 files changed, 31 insertions, 19 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
index 8b16bd2b..342ce9eb 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
@@ -73,18 +73,21 @@ public class LoginWindow extends LoginWindowLayout {
private final String NO_USERNAME = "Kein Benutzername angegeben!";
private final String NO_PASSWORD = "Kein Passwort angegeben!";
- public static boolean forceCustomSatellite;
+ private boolean forceCustomSatellite = false;
+
private final KeyEventDispatcher satelliteShiftDispatcher = new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
- int type = event.getID();
int code = event.getKeyCode();
if (code == KeyEvent.VK_SHIFT) { // shift key is pressed
+ int type = event.getID();
if (type == KeyEvent.KEY_PRESSED) {
forceCustomSatellite = true;
- } else if (type == KeyEvent.KEY_RELEASED)
+ event.consume();
+ } else if (type == KeyEvent.KEY_RELEASED) {
forceCustomSatellite = false;
- event.consume();
+ event.consume();
+ }
}
return event.isConsumed();
}
@@ -213,8 +216,7 @@ public class LoginWindow extends LoginWindowLayout {
return;
}
- idpCombo.setModel(
- new DefaultComboBoxModel<Organization>(orgs.toArray(new Organization[orgs.size()])));
+ idpCombo.setModel(new DefaultComboBoxModel<Organization>(orgs.toArray(new Organization[orgs.size()])));
// now check if we had a saved identity provider
String savedOrganizationId = Config.getIdentityProvider();
idpCombo.setSelectedItem(OrganizationCache.find(savedOrganizationId));
@@ -292,7 +294,8 @@ public class LoginWindow extends LoginWindowLayout {
// username contains a known organization
if (!selectedOrg.equals(orgInUsername)) {
// but it does not match the one selected in the combobox
- boolean ret = Gui.showMessageBox(this,
+ boolean ret = Gui.showMessageBox(
+ this,
"Der angegebene Benutzername enthält eine Organisation, die nicht mit Ihrer IDP-Auswahl übereinstimmt."
+ "\nWollen Sie die in Ihrem Benutzername gefundene Organisation verwenden?",
MessageType.QUESTION_YESNO, null, null);
@@ -314,11 +317,16 @@ public class LoginWindow extends LoginWindowLayout {
final LoginWindow me = this;
final AuthenticatorCallback authenticatorCallback = new AuthenticatorCallback() {
@Override
- public void postLogin(ReturnCode returnCode, AuthenticationData data, Throwable t) {
+ public void postLogin(ReturnCode returnCode, final AuthenticationData data, Throwable t) {
switch (returnCode) {
case NO_ERROR:
- postSuccessfulLogin(data);
- break;
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ postSuccessfulLogin(data);
+ }
+ });
+ return;
case IDENTITY_PROVIDER_ERROR:
Gui.showMessageBox(me, "IdP Error", MessageType.ERROR, LOGGER, null);
break;
@@ -329,10 +337,9 @@ public class LoginWindow extends LoginWindowLayout {
LOGGER, t);
break;
case UNREGISTERED_ERROR:
- Gui.showMessageBox(me,
- "You are not registered to bwLehrpool. Please visit "
- + ShibbolethEcp.getRegistrationUrl() + " and register first.",
- MessageType.ERROR, LOGGER, t);
+ Gui.showMessageBox(me, "You are not registered to bwLehrpool. Please visit "
+ + ShibbolethEcp.getRegistrationUrl() + " and register first.", MessageType.ERROR,
+ LOGGER, t);
break;
case INVALID_URL_ERROR:
Gui.showMessageBox(me, "ECP Authenticator says: Invalid URL.", MessageType.ERROR, LOGGER,
@@ -343,6 +350,7 @@ public class LoginWindow extends LoginWindowLayout {
Gui.showMessageBox(me, "Internal error!", MessageType.ERROR, LOGGER, null);
break;
}
+ loginButton.setEnabled(true);
}
};
@@ -363,20 +371,23 @@ public class LoginWindow extends LoginWindowLayout {
return;
}
- // Execute login
- App.waitForInit();
+ loginButton.setEnabled(false);
final String finalUsername = username;
QuickTimer.scheduleOnce(new Task() {
@Override
public void fire() {
+ // Execute login
+ App.waitForInit();
try {
authenticator.login(finalUsername, password, authenticatorCallback);
+ return;
} catch (TException e) {
ThriftError.showMessage(LoginWindow.this, LOGGER, e, "Anmeldung fehlgeschlagen");
} catch (Exception e) {
Gui.showMessageBox(LoginWindow.this, "Anmeldung fehlgeschlagen", MessageType.ERROR,
LOGGER, e);
}
+ loginButton.setEnabled(true);
}
});
}
@@ -391,18 +402,19 @@ public class LoginWindow extends LoginWindowLayout {
// Update known suggested fingerprints
importFingerprints(data.satellites);
// now try to init the session with the data received
- if (ThriftActions.initSession(data, SwingUtilities.getWindowAncestor(this))) {
+ if (ThriftActions.initSession(data, forceCustomSatellite, SwingUtilities.getWindowAncestor(this))) {
if (saveUsernameCheck.isSelected()) {
Config.saveCurrentSession(Session.getSatelliteAddress(), Session.getSatelliteToken(),
Session.getMasterToken());
}
// Remove the listener for the shift key. (For forcing the satellite selection)
- KeyboardFocusManager.getCurrentKeyboardFocusManager()
- .removeKeyEventDispatcher(satelliteShiftDispatcher);
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(
+ satelliteShiftDispatcher);
dispose();
return;
}
+ loginButton.setEnabled(true);
}
/**