1 package org.argosfields.wizard;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.argosfields.multi.client.GameClient;
6 import org.argosfields.multi.client.IGameClient;
7 import org.argosfields.resource.ResourceManager;
8 import org.argosfields.service.ILoginManager;
9 import org.argosfields.service.LoginException;
10 import org.argosfields.spring.ClientContextHelper;
11 import org.eclipse.jface.dialogs.MessageDialog;
12 import org.eclipse.jface.preference.IPreferenceStore;
13 import org.eclipse.jface.preference.JFacePreferences;
14 import org.eclipse.jface.resource.ImageDescriptor;
15 import org.eclipse.jface.wizard.IWizardPage;
16 import org.eclipse.jface.wizard.Wizard;
17
18 /***
19 * LoginWizard.java
20 * @author Xavier Cho
21 * @version $Revision: 1.4 $ $Date: 2004/04/17 08:59:17 $
22 */
23 public class LoginWizard extends Wizard {
24
25 private static Log log = LogFactory.getLog(LoginWizard.class);
26
27 /***
28 * @see org.eclipse.jface.wizard.IWizard#addPages()
29 */
30 public void addPages() {
31 ResourceManager resources = ResourceManager.getInstance();
32
33 String pageName = resources.getString("wizard.login.page1.title");
34
35 ImageDescriptor image = resources
36 .getImageDescriptor("wizard.login.page1.image");
37
38 setWindowTitle(pageName);
39 setDefaultPageImageDescriptor(image);
40
41 IWizardPage page = new LoginWizardPage1(pageName);
42 page.setTitle(pageName);
43
44 addPage(page);
45 }
46
47 public boolean performFinish() {
48 LoginWizardPage1 page = (LoginWizardPage1) getPages()[0];
49
50 String userName = page.getUserName();
51 String password = page.getPassword();
52 String hostAddress = page.getHostAddress();
53
54 int index = hostAddress.lastIndexOf(":");
55 int port = -1;
56
57 if (index == -1) {
58 ResourceManager resources = ResourceManager.getInstance();
59 page.setErrorMessage(resources.getString("error.invalid.host"));
60
61 return false;
62 }
63
64 try {
65 port = Integer.parseInt(hostAddress.substring(index + 1));
66 hostAddress = hostAddress.substring(0, index);
67 } catch (NumberFormatException e) {
68 ResourceManager resources = ResourceManager.getInstance();
69 page.setErrorMessage(resources.getString("error.invalid.host"));
70
71 return false;
72 }
73
74 if (log.isInfoEnabled()) {
75 log.info("Logging in to the remote host :");
76 log.info(" - host : " + hostAddress);
77 log.info(" - port : " + port);
78 }
79
80 IPreferenceStore preferences = JFacePreferences.getPreferenceStore();
81 preferences.setValue("remote.server.host", hostAddress);
82 preferences.setValue("remote.server.port", port);
83
84 ClientContextHelper helper = ClientContextHelper.getInstance();
85
86 ILoginManager manager = helper.getLoginManager();
87
88 String sessionId = null;
89
90 try {
91 sessionId = manager.login(userName, password);
92 } catch (LoginException e) {
93 ResourceManager resources = ResourceManager.getInstance();
94
95 String title = resources.getString("dialog.title.warning");
96 String message = e.getMessage();
97
98 if (message != null) {
99 message = resources.getString(message);
100 }
101
102 if (message == null) {
103 message = resources.getString("error.login");
104 }
105
106 MessageDialog.openWarning(getShell(), title, message);
107
108 return false;
109 }
110
111 IGameClient client = GameClient.getInstance();
112 client.startSession(hostAddress, port, sessionId);
113
114 if (log.isInfoEnabled()) {
115 log.info("Successfully logged on to the remote host.");
116 }
117
118 return true;
119 }
120 }
This page was automatically generated by Maven