package com.predic8.plugin.membrane.wizards;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import com.predic8.plugin.membrane.PlatformUtil;
import com.predic8.plugin.membrane.listeners.PortVerifyListener;
public abstract class AbstractPortConfigurationPage extends AbstractProxyWizardPage {
protected Text listenPortText;
protected AbstractPortConfigurationPage(String pageName) {
super(pageName);
}
protected Text createListenPortText(Composite parent) {
Text text = new Text(parent, SWT.BORDER);
text.addVerifyListener(new PortVerifyListener());
text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
text.setText("" + PlatformUtil.getRouter().getRuleManager().getDefaultListenPort());
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
Text source = (Text)e.getSource();
if (source.getText().trim().equals("")) {
setPageComplete(false);
setErrorMessage("Listen port must be specified");
} else if (source.getText().trim().length() >= 5) {
try {
if (Integer.parseInt(source.getText()) > 65535) {
setErrorMessage("Listen port number has an upper bound 65535.");
setPageComplete(false);
}
} catch (NumberFormatException nfe) {
setErrorMessage("Specified listen port must be in decimal number format.");
setPageComplete(false);
}
} else {
setErrorMessage(null);
setPageComplete(true);
}
}
});
return text;
}
protected void createListenPortLabel(Composite composite) {
Label label = new Label(composite, SWT.NONE);
GridData gd = new GridData();
gd.horizontalSpan = 1;
label.setLayoutData(gd);
label.setText("Listen Port:");
}
protected int getListenPort() {
return Integer.parseInt(listenPortText.getText());
}
}