/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.communication.views.contributors;
import org.eclipse.swt.widgets.Shell;
/**
* Dialog to edit an existing network connection.
*
* @author Oliver Seebach
*/
public class EditNetworkConnectionDialog extends AbstractNetworkConnectionDialog {
private static final String COLON = ":";
private static final String DIALOG_TITLE = "Edit Connection";
private static final String HINT = "Note: The connection will not be saved.\n"
+ "To create permanent connections, edit the configuration files.\n"
+ "Changes will be applied after restarting the connection.";
public EditNetworkConnectionDialog(Shell parentShell, String connectionName, String networkContactPointID) {
super(parentShell);
this.connectionName = connectionName;
this.networkContactPointID = networkContactPointID;
if (this.networkContactPointID.startsWith(ACTIVEMQ_PREFIX)) {
this.networkContactPointID = this.networkContactPointID.replace(ACTIVEMQ_PREFIX, "");
}
host = this.networkContactPointID.substring(0, this.networkContactPointID.indexOf(COLON));
if (this.networkContactPointID.contains("(")) {
int index = this.networkContactPointID.indexOf("(");
String settings = this.networkContactPointID.substring(index);
settings = settings.replaceAll("[()]", "");
setSettingsText(settings);
port = this.networkContactPointID.substring(this.networkContactPointID.indexOf(COLON) + 1, index);
String network = this.networkContactPointID.substring(0, index);
if (this.connectionName.equals(network)) {
activateDefaultName();
} else {
deactivateDefaultName();
}
} else {
port = this.networkContactPointID.substring(this.networkContactPointID.indexOf(COLON) + 1);
if (this.connectionName.equals(this.networkContactPointID)) {
activateDefaultName();
} else {
deactivateDefaultName();
}
}
this.hint = HINT;
}
private void setSettingsText(String settings) {
ConnectionSettings set = new ConnectionSettings();
try {
String numberOnly = settings.replaceAll("[^0-9,.]", "");
if (numberOnly.charAt(numberOnly.length() - 1) == ',') {
numberOnly = numberOnly.substring(0, numberOnly.length() - 1);
}
if (numberOnly.startsWith(COM)) {
numberOnly = numberOnly.substring(1);
}
int indexFirstCom = numberOnly.indexOf(",");
int indexSecondCom = numberOnly.indexOf(COM, numberOnly.indexOf(COM) + 1);
String multi = numberOnly.substring(0, indexFirstCom);
multi = multi.replaceAll("[^0-9.]", "");
String initialDelay = numberOnly.substring(indexFirstCom, indexSecondCom);
initialDelay = initialDelay.replaceAll(DECIMAL, "");
String maxDelay = numberOnly.substring(indexSecondCom);
maxDelay = maxDelay.replaceAll(DECIMAL, "");
settingsText = set.createStringForsettings(Integer.parseInt(initialDelay), Integer.parseInt(maxDelay),
Double.parseDouble(multi));
} catch (NumberFormatException ex) {
final double multi = 1.5;
final int max = 300;
settingsText = set.createStringForsettings(5, max, multi);
}
}
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText(DIALOG_TITLE);
}
}