Issue #440 keep login window up when a username or password is incorrect.

Former-commit-id: dc4bf6dfbb2f0c58f9986b524ad49f18656cebc7
This commit is contained in:
Brad Gonzales 2012-04-10 17:20:38 -05:00
parent 020be00301
commit 107c8ba7b9
3 changed files with 53 additions and 37 deletions

View file

@ -209,41 +209,13 @@ public class CollaborationDataManager {
}
LoginDialog dlg = new LoginDialog(shell);
loginData = null;
while (isConnected() == false) {
loginData = (LoginData) dlg.open();
dlg.close();
if (loginData == null) {
break;
}
try {
sessionManager = new SessionManager(loginData
.getAccount(), loginData.getPassword());
loginId = loginData.getAccount();
DataUser user = CollaborationDataManager
.getInstance().getUser(loginId);
// try {
// System.out.println("enter sleep...");
// Thread.sleep(5000L);
// System.out.println("Wake from sleep...");
// } catch (InterruptedException e) {
// }
// // TODO set mode and message here.
// user.setMode(loginData.getMode());
// user.type = Type.AVAILABLE;
// user.statusMessage = loginData.getModeMessage();
} catch (Exception e) {
MessageBox box = new MessageBox(shell, SWT.ERROR);
box.setText("Login Failed");
if (e.getMessage() != null) {
box.setMessage(e.getMessage());
} else {
box.setMessage("Login Failed.");
}
box.open();
// statusHandler.handle(Priority.WARN,
// e.getLocalizedMessage(), e);
}
loginData = (LoginData) dlg.open();
dlg.close();
if (loginData == null) {
return;
}
sessionManager = dlg.getSessionManager();
loginId = loginData.getAccount();
}
});

View file

@ -54,6 +54,9 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence;
import com.raytheon.uf.viz.collaboration.comm.provider.session.SessionManager;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.data.DataUser;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.core.localization.LocalizationManager;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
@ -104,9 +107,12 @@ public class LoginDialog extends CaveSWTDialog {
private LoginData loginData;
private SessionManager sessionManager;
public LoginDialog(Shell parentShell) {
super(parentShell, SWT.DIALOG_TRIM);
setText("Collaboration Server Login");
this.loginData = loginData;
}
/**
@ -367,9 +373,30 @@ public class LoginDialog extends CaveSWTDialog {
// CollaborationUtils.statusModes[statusCombo
// .getSelectionIndex()], messageTF
// .getText().trim());
setReturnValue(loginData);
LoginDialog.this.getShell().dispose();
} else {
try {
sessionManager = new SessionManager(loginData
.getAccount(), loginData.getPassword());
DataUser dUser = CollaborationDataManager
.getInstance().getUser(
loginData.getAccount());
// // TODO set mode and message here.
// dUser.setMode(loginData.getMode());
// dUser.type = Type.AVAILABLE;
// dUser.statusMessage = loginData.getModeMessage();
setReturnValue(loginData);
LoginDialog.this.getShell().dispose();
} catch (Exception e) {
if (focusField == null) {
focusField = passwordTF;
}
errorMessages.add("Inavlid username or password.");
passwordTF.setText("");
if (sessionManager != null) {
sessionManager.closeManager();
}
}
}
if (focusField != null) {
StringBuilder sb = new StringBuilder();
String prefix = "";
for (String msg : errorMessages) {
@ -452,4 +479,18 @@ public class LoginDialog extends CaveSWTDialog {
}
return lFile;
}
/**
* @return the loginData
*/
public LoginData getLoginData() {
return loginData;
}
/**
* @return the sessionManager
*/
public SessionManager getSessionManager() {
return sessionManager;
}
}

View file

@ -169,6 +169,9 @@ public class SessionManager implements IEventPublisher {
try {
connectToContainer();
} catch (ContainerConnectException e) {
if (container != null) {
container.dispose();
}
throw new CollaborationException(
"Login failed. Invalid username or password", e);
}