/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.login;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import de.rcenvironment.core.authentication.AuthenticationException;
import de.rcenvironment.core.authentication.Session;
import de.rcenvironment.core.authentication.User.Type;
import de.rcenvironment.core.gui.login.internal.LoginDialog;
import de.rcenvironment.core.gui.login.internal.Messages;
import de.rcenvironment.core.login.AbstractLogin;
import de.rcenvironment.core.login.LoginInput;
/**
*
* Concrete implementation of {@link AbstractLogin} for graphical re-login.
*
* @author Bea Hornef
* @author Alice Zorn
*/
public class GUIReLogin extends AbstractLogin {
@Override
protected LoginInput getLoginInput() {
LoginInput loginInput = null;
LoginDialog loginDialog;
try {
Session s = Session.getInstance();
if (s.getUser().getType() == Type.single) {
loginDialog = new LoginDialog(authenticationService, loginConfiguration);
} else if (s.getUser().getType() == Type.certificate){
loginDialog = new LoginDialog(s.getUser(), authenticationService, loginConfiguration);
} else if (s.getUser().getType() == Type.ldap) {
loginDialog = new LoginDialog(s.getUser(), s.getUser().getUserId(), authenticationService, loginConfiguration);
} else {
throw new AssertionError();
}
} catch (AuthenticationException e) {
loginDialog = new LoginDialog(authenticationService, loginConfiguration);
}
// login window is open... waits until the ok-button is pressed
if (loginDialog.open() == Window.OK) {
// gets an object LoginInput with the data saved in loginDialog
loginInput = loginDialog.getLoginInput();
}
return loginInput;
}
@Override
protected void informUserAboutError(String errorMessage, Throwable e) {
MessageDialog.openError(null, Messages.login, errorMessage);
}
}