Composite comp = new Composite(this, SWT.NONE);
comp.setLayout(new MigLayout("fill, wrap 3, ins 0", "[pref!][]"));
comp.setLayoutData("hmin pref, wmin pref, growx, pushx");
_rIterationCount = new AntButton(new Button(comp, SWT.RADIO), getController().getProject());
_rIterationCount.getButton().setLayoutData("hmin 0, wmin 0");
_rIterationCount.getButton().setText("Iterationen:");
_rIterationCount
.setTooltipText("Diese Option l�sst den Suchvorgang stoppen, nachdem eine eingestellte Anzahl an Iterationen durchgef�hrt wurden.");
_tIterationCount = new AntText(new Text(comp, SWT.BORDER), getController().getProject());
_tIterationCount.getText().setLayoutData("hmin pref, wmin 50, spanx 2, growx");
_tIterationCount.setTooltipText("Hier k�nnen Sie einstellen, wie oft iteriert werden soll. (X > 0)");
_tIterationCount.setInputMode(AntText.INTEGER_ONLY);
_tIterationCount.setNumberRange(1, Double.POSITIVE_INFINITY, false, true);
_tIterationCount.addValidInputListener(this);
_rMaximumTourLength = new AntButton(new Button(comp, SWT.RADIO), getController().getProject());
_rMaximumTourLength.getButton().setLayoutData("hmin 0, wmin 0");
_rMaximumTourLength.getButton().setText("Tourl�nge:");
_rMaximumTourLength
.setTooltipText("Diese Option l�sst den Suchvorgang stoppen, nachdem eine Tour gefunden wurde, die k�rzer oder gleich lang als eine eingestellte L�nge ist.");
_tMaximumTourLength = new AntText(new Text(comp, SWT.BORDER), getController().getProject());
_tMaximumTourLength.getText().setLayoutData("hmin pref, wmin 50, spanx 2, growx");
_tMaximumTourLength.setTooltipText("Hier k�nnen Sie einstellen, bei welcher Tourl�nge abegebrochen werden soll. (X > 0)");
_tMaximumTourLength.setInputMode(AntText.DOUBLE_ONLY);
_tMaximumTourLength.setNumberRange(0, Double.POSITIVE_INFINITY, false, true);
_tMaximumTourLength.addValidInputListener(this);
_rOptTourFilePath = new AntButton(new Button(comp, SWT.RADIO), getController().getProject());
_rOptTourFilePath.getButton().setLayoutData("hmin 0, wmin 0");
_rOptTourFilePath.getButton().setText("Optimale Tour:");
_rOptTourFilePath.setTooltipText("Diese Option l�sst den Suchvorgang stoppen, wenn eine eingestellte L�sung gefunden wurde.");
_bOptTourFilePath = new AntButton(new Button(comp, SWT.PUSH), getController().getProject());
_bOptTourFilePath.getButton().setLayoutData("hmin 0, wmin 0");
_bOptTourFilePath.getButton().setImage(Images.FOLDER);
_bOptTourFilePath.setTooltipText("Ein Klick auf diesen Button �ffnet den Datei-Browser, mit dem Sie eine L�sungsdatei aussuchen k�nnen.");
_bOptTourFilePath.getButton().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent pE) {
String path = new FileDialogFactory().setParent(getShell()).setFilter(FileDialogFilter.OPTTOUR).setStyle(SWT.OPEN).open();
if (path != null) {
List<Integer> indexList = Persister.loadOptTourFile(new File(path));
if (indexList.size() - 1 != getController().getProject().getTSPData().getNodeList().size()) {
MessageDialog
.openError(getShell(), "Ung�ltige optimale Tour",
"Die Liste der Knoten und die Liste der optimalen Tour weisen eine unterschiedliche L�nge auf, somit kann die optimale Tour nicht geladen werden.");
}
else {
getController().getProject().setOptimalTourIndeces(indexList);
}
}
evaluateSolutionAccept();
evaluateStartEnabled();
}
});
_lAccept = new AntLabel(new Label(comp, SWT.NONE), getController().getProject());
_lAccept.getLabel().setLayoutData("hmin 0, wmin 0, push");
_lAccept.getLabel().setImage(Images.CROSS);
_lAccept.setTooltipText("Zeigt den Status der L�sungsdatei an.");
SelectionAdapter radioGroupListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent pE) {
Object source = pE.getSource();
if (source == _rIterationCount.getButton()) {
_tIterationCount.getText().setEnabled(true);
_tMaximumTourLength.getText().setEnabled(false);
_bOptTourFilePath.getButton().setEnabled(false);
_lAccept.getLabel().setEnabled(false);
getController().setIterationMode(IterationMode.COUNT);
}
if (source == _rMaximumTourLength.getButton()) {
_tIterationCount.getText().setEnabled(false);
_tMaximumTourLength.getText().setEnabled(true);
_bOptTourFilePath.getButton().setEnabled(false);
_lAccept.getLabel().setEnabled(false);
getController().setIterationMode(IterationMode.LENGTH);
}
if (source == _rOptTourFilePath.getButton()) {
_tIterationCount.getText().setEnabled(false);
_tMaximumTourLength.getText().setEnabled(false);
_bOptTourFilePath.getButton().setEnabled(true);
_lAccept.getLabel().setEnabled(true);
getController().setIterationMode(IterationMode.SOLUTION);
}
evaluateStartEnabled();
}
};
Composite buttonComp = new Composite(comp, SWT.NONE);
buttonComp.setLayout(new MigLayout("ins 0", "[49%][49%]"));
buttonComp.setLayoutData("hmin 0, wmin 0, spanx, growx");
_bStart = new AntButton(new Button(buttonComp, SWT.PUSH), getController().getProject());
_bStart.getButton().setText("START");
_bStart.getButton().setLayoutData("hmin pref, wmin pref, growx");
_bStart.setTooltipText("Dieser Button startet und stoppt den Suchvorgang.");
_bStart.getButton().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent pE) {
if (!_buttonStartState) {
getController().start();
}
else {
getController().stop();
}
}
});
_bPause = new AntButton(new Button(buttonComp, SWT.PUSH), getController().getProject());
_bPause.getButton().setText("PAUSE");
_bPause.getButton().setLayoutData("hmin pref, wmin pref, growx");
_bPause.setTooltipText("Dieser Button pausiert und setzt den Suchvorgang fort.");
_bPause.getButton().addSelectionListener(new SelectionAdapter() {