001: package com.bostechcorp.cbesb.ui.componentflow.componentFlowEditor.diagram.wizards;
002:
003: import java.util.HashMap;
004: import java.util.Map;
005: import java.util.regex.Matcher;
006: import java.util.regex.Pattern;
007:
008: import org.eclipse.jface.wizard.IWizardPage;
009: import org.eclipse.swt.SWT;
010: import org.eclipse.swt.events.ModifyEvent;
011: import org.eclipse.swt.events.ModifyListener;
012: import org.eclipse.swt.events.SelectionAdapter;
013: import org.eclipse.swt.events.SelectionEvent;
014: import org.eclipse.swt.layout.GridData;
015: import org.eclipse.swt.layout.GridLayout;
016: import org.eclipse.swt.widgets.Button;
017: import org.eclipse.swt.widgets.Composite;
018: import org.eclipse.swt.widgets.Label;
019: import org.eclipse.swt.widgets.Text;
020: import org.eclipse.ui.PlatformUI;
021:
022: import com.bostechcorp.cbesb.common.i18n.I18N;
023: import com.bostechcorp.cbesb.common.i18n.Messages;
024: import com.bostechcorp.cbesb.ui.componentflow.componentFlowEditor.SSL;
025: import com.bostechcorp.cbesb.ui.componentflow.componentFlowEditor.SSLMode;
026: import com.bostechcorp.cbesb.ui.componentflow.componentFlowEditor.TCPIP;
027:
028: public class TCPIPServerSettingsWizardPage extends PropertyWizardPage {
029: private Text text;
030:
031: private Text textPort;
032:
033: private Button sslButton;
034:
035: private Button advancedSettingButton;
036:
037: private boolean updateOperation = false;
038:
039: public Map<String, String> sslMap = new HashMap<String, String>();
040:
041: protected TCPIPServerSettingsWizardPage(String pageName) {
042: super (pageName);
043: setTitle(I18N.getString(Messages.TCPIP_SERVER_TITLE));
044: setDescription(I18N
045: .getString(Messages.TCPIP_SERVER_DESCRIPTION));
046: setDefaultSSLMapValues();
047: }
048:
049: public void createControl(Composite parent) {
050: final Composite topLevel = new Composite(parent, SWT.NONE);
051: final GridLayout gridLayout = new GridLayout();
052: gridLayout.numColumns = 2;
053: gridLayout.horizontalSpacing = 10;
054: topLevel.setLayout(gridLayout);
055: topLevel.setLayoutData(new GridData(
056: GridData.VERTICAL_ALIGN_FILL
057: | GridData.HORIZONTAL_ALIGN_FILL));
058: topLevel.setFont(parent.getFont());
059: this .setControl(topLevel);
060:
061: final Label portLabel = new Label(topLevel, SWT.NONE);
062: portLabel.setText(I18N
063: .getString(Messages.TCPIP_SERVER_LISTEN_PORT));
064:
065: textPort = new Text(topLevel, SWT.BORDER);
066: textPort.addModifyListener(new ModifyListener() {
067: public void modifyText(ModifyEvent e) {
068: dialogChanged();
069: }
070: });
071: textPort.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
072: false));
073:
074: final Label maximumConcurrentClientsLabel = new Label(topLevel,
075: SWT.NONE);
076: maximumConcurrentClientsLabel.setText(I18N
077: .getString(Messages.TCPIP_SERVER_MAX_CLIENTS));
078:
079: text = new Text(topLevel, SWT.BORDER);
080: text.setText("20");
081: text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
082: false));
083:
084: final Composite composite = new Composite(topLevel, SWT.NONE);
085: composite.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER,
086: false, false, 2, 1));
087: final GridLayout gridLayout_1 = new GridLayout();
088: gridLayout_1.marginWidth = 0;
089: gridLayout_1.numColumns = 2;
090: composite.setLayout(gridLayout_1);
091:
092: sslButton = new Button(composite, SWT.CHECK);
093: sslButton.addSelectionListener(new SelectionAdapter() {
094: public void widgetSelected(SelectionEvent e) {
095: if (sslButton.getSelection()) {
096: advancedSettingButton.setEnabled(true);
097: } else
098: advancedSettingButton.setEnabled(false);
099: dialogChanged();
100: }
101: });
102: sslButton.setText("SSL");
103:
104: advancedSettingButton = new Button(composite, SWT.NONE);
105: advancedSettingButton.setEnabled(false);
106: advancedSettingButton.setText(I18N
107: .getString(Messages.TCPIP_ADVANCED_SETTINGS));
108: advancedSettingButton
109: .addSelectionListener(new SelectionAdapter() {
110: public void widgetSelected(SelectionEvent e) {
111: TCPIPServerSSLSettingsWizardPage dialog = new TCPIPServerSSLSettingsWizardPage(
112: PlatformUI.getWorkbench()
113: .getActiveWorkbenchWindow()
114: .getShell(), sslMap,
115: updateOperation);
116: dialog.open();
117: }
118: });
119: new Label(topLevel, SWT.NONE);
120:
121: if (this .getWizard().isUpdateOperation()) {
122: updateOperation = true;
123: modelsToControl();
124: }
125:
126: dialogChanged();
127: }
128:
129: private void dialogChanged() {
130: if (textPort.getText().equals("")) {
131: setErrorMessage(I18N.getString(Messages.TCPIP_ERR_PORT_REQ));
132: setPageComplete(false);
133: return;
134: }
135:
136: if (!text.getText().equals("")) {
137: String recordPerMsg = text.getText();
138: Pattern pattern = Pattern.compile("[0-9]+");
139: Matcher matcher = pattern.matcher(recordPerMsg);
140: if (!matcher.matches()) {
141: setErrorMessage(I18N
142: .getString(Messages.TCPIP_ERR_MAX_CLIENT_INTEGER));
143: setPageComplete(false);
144: return;
145: }
146: }
147:
148: setErrorMessage(null);
149: setPageComplete(true);
150: }
151:
152: public IWizardPage getNextPage() {
153: if (this .getWizard().getMainPage().isConsumer()) {
154: return this .getWizard().getPage("ConsumerPage");
155: } else if (this .getWizard().getMainPage().isProvider()) {
156: return this .getWizard().getPage("ProviderPage");
157: }
158: return null;
159: }
160:
161: public Text getText() {
162: return text;
163: }
164:
165: @Override
166: public void controlToModels() {
167: TCPIPPropertyWizard TCPIPWizard = (TCPIPPropertyWizard) this
168: .getWizard();
169: TCPIP model = TCPIPWizard.getModels();
170: if (model == null || model.getServer() == null) {
171: return;
172: }
173: if (text.getText().equals(""))
174: return;
175: model.getServer().setListenPort(textPort.getText());
176: model.getServer().setMaxClients(
177: Integer.parseInt(text.getText()));
178: if (sslButton.getSelection()) {
179: model.getServer().setUseSsl(true);
180: } else {
181: model.getServer().setUseSsl(false);
182: }
183:
184: if (sslButton.getSelection()) {
185: SSL ssl = model.getServer().getSSL();
186: ssl.setSslProtocol(SSLMode.get(sslMap.get("sslProtocol")));
187: ssl.setAllowAnonymous(Boolean.parseBoolean(sslMap
188: .get("allowAnonymous")));
189: ssl.setUsePrivateKey(Boolean.parseBoolean(sslMap
190: .get("usePrivateKey")));
191: ssl.setKeyStoreFile(sslMap.get("keyStoreFile"));
192: ssl.setKeyStorePassword(sslMap.get("keyStorePassword"));
193: ssl.setAuthenticatePeer(new Boolean(sslMap.get(
194: "authenticateClient").toString()));
195: ssl.setUseDefaultTrustStore(Boolean.parseBoolean(sslMap
196: .get("useDefaultTrustStore")));
197: ssl.setTrustStoreFile(sslMap.get("trustStoreFile"));
198: ssl.setTrustStorePassword(sslMap.get("trustStorePassword"));
199: }
200: }
201:
202: @Override
203: public void modelsToControl() {
204: TCPIPPropertyWizard TCPIPWizard = (TCPIPPropertyWizard) this
205: .getWizard();
206: TCPIP model = TCPIPWizard.getModels();
207: if (model == null || model.getServer() == null) {
208: return;
209: }
210: if (model.getServer().getListenPort() != null)
211: textPort.setText(model.getServer().getListenPort());
212: else
213: textPort.setText("");
214: if (this .getWizard().getMainPage().isConsumer()) {
215: if (model.getServer().getMaxClients() != 20)
216: text.setText(Integer.toString(model.getServer()
217: .getMaxClients()));
218: else
219: text.setText("20");
220: } else if (this .getWizard().getMainPage().isProvider()) {
221: text.setText("1");
222: text.setEnabled(false);
223: }
224: sslButton.setSelection(model.getServer().isUseSsl());
225: if (sslButton.getSelection()) {
226: advancedSettingButton.setEnabled(true);
227: } else {
228: advancedSettingButton.setEnabled(false);
229: }
230:
231: SSL ssl = model.getServer().getSSL();
232: sslMap.put("sslProtocol", ssl.getSslProtocol().getLiteral());
233: sslMap.put("allowAnonymous", Boolean.toString(ssl
234: .isAllowAnonymous()));
235: sslMap.put("usePrivateKey", Boolean.toString(ssl
236: .isUsePrivateKey()));
237: sslMap.put("keyStoreFile", ssl.getKeyStoreFile());
238: sslMap.put("keyStorePassword", ssl.getKeyStorePassword());
239: sslMap.put("authenticateClient", new Boolean(ssl
240: .isAuthenticatePeer()).toString());
241: sslMap.put("useDefaultTrustStore", Boolean.toString(ssl
242: .isUseDefaultTrustStore()));
243: sslMap.put("trustStoreFile", ssl.getTrustStoreFile());
244: sslMap.put("trustStorePassword", ssl.getTrustStorePassword());
245: }
246:
247: private void setDefaultSSLMapValues() {
248: sslMap.put("sslProtocol", "TLS");
249: sslMap.put("allowAnonymous", "true");
250: sslMap.put("usePrivateKey", "false");
251: sslMap.put("keyStoreFile", "");
252: sslMap.put("keyStorePassword", "");
253: sslMap.put("authenticateServer", "false");
254: sslMap.put("useDefaultTrustStore", "true");
255: sslMap.put("trustStoreFile", "");
256: sslMap.put("trustStorePassword", "");
257: }
258: }
|