aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/settings/SettingsPane.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/gui/settings/SettingsPane.java')
-rw-r--r--src/jcgp/gui/settings/SettingsPane.java116
1 files changed, 54 insertions, 62 deletions
diff --git a/src/jcgp/gui/settings/SettingsPane.java b/src/jcgp/gui/settings/SettingsPane.java
index 9edcbdb..61011aa 100644
--- a/src/jcgp/gui/settings/SettingsPane.java
+++ b/src/jcgp/gui/settings/SettingsPane.java
@@ -5,7 +5,6 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
-import javafx.beans.property.SimpleIntegerProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
@@ -22,14 +21,15 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontSmoothingType;
import javafx.scene.text.Text;
-import jcgp.GUI;
import jcgp.JCGP;
-import jcgp.function.FunctionSet;
+import jcgp.backend.function.FunctionSet;
+import jcgp.backend.modules.ea.EvolutionaryAlgorithm;
+import jcgp.backend.modules.fitness.FitnessFunction;
+import jcgp.backend.modules.mutator.Mutator;
+import jcgp.backend.parameters.IntegerParameter;
+import jcgp.backend.parameters.Parameter;
+import jcgp.gui.GUI;
import jcgp.gui.settings.parameters.*;
-import jcgp.modules.ea.EvolutionaryAlgorithm;
-import jcgp.modules.fitness.FitnessFunction;
-import jcgp.modules.mutator.Mutator;
-import jcgp.parameters.*;
public class SettingsPane extends AnchorPane {
@@ -84,31 +84,28 @@ public class SettingsPane extends AnchorPane {
bpPane.getChildren().add(header);
- final GUIIntegerParameter generation = new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("currentGen"));
- final GUIIntegerParameter run = new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("currentRun"));
+ GUIParameter rows = GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("rows"));
+ parameters.add(rows);
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("columns")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("inputs")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("outputs")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("levelsBack")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("rows")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("columns")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("inputs")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("outputs")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("levelsBack")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("popSize")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("generations")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("runs")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("popSize")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("generations")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("runs")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("currentGen")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("currentRun")));
- parameters.add(generation);
- parameters.add(run);
-
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("seed")));
- parameters.add(new GUIIntegerParameter((IntegerParameter) cgp.getResources().getParameter("report")));
- parameters.add(new GUIBooleanParameter((BooleanParameter) cgp.getResources().getParameter("verbose")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("seed")));
+ parameters.add(GUIParameter.create((IntegerParameter) cgp.getResources().getParameter("report")));
bpPane.getChildren().addAll(parameters);
mainContainer.getChildren().add(bpPane);
- generation.getTextField().textProperty().bind(((SimpleIntegerProperty) cgp.getResources().getParameter("currentGen").valueProperty()).asString());
+
}
private void initialiseEAParameters(final JCGP cgp) {
@@ -245,13 +242,16 @@ public class SettingsPane extends AnchorPane {
play.setOnAction(new EventHandler<ActionEvent>() {
@Override
- public void handle(ActionEvent event) {
- gui.playPause();
- if (gui.isEvolving()) {
+ public void handle(ActionEvent event) {
+ if (play.getText() == "Run") {
+ if (applyChanges()) {
+ gui.resetCGP();
+ }
play.setText("Pause");
} else {
play.setText("Run");
}
+ gui.playPause();
}
});
@@ -260,6 +260,9 @@ public class SettingsPane extends AnchorPane {
step.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
+ if (applyChanges()) {
+ gui.resetCGP();
+ }
gui.step();
}
});
@@ -274,8 +277,7 @@ public class SettingsPane extends AnchorPane {
controls.getChildren().add(flowButtons);
- mainContainer.getChildren().add(controls);
-
+ mainContainer.getChildren().add(controls);
}
/**
@@ -287,19 +289,10 @@ public class SettingsPane extends AnchorPane {
vb.getChildren().clear();
while (it.hasNext()) {
Parameter parameter = ((Map.Entry<String, Parameter>) it.next()).getValue();
- if (parameter instanceof IntegerParameter) {
- GUIIntegerParameter gip = new GUIIntegerParameter((IntegerParameter) parameter);
- parameters.add(gip);
- vb.getChildren().add(gip);
- } else if (parameter instanceof DoubleParameter) {
- GUIDoubleParameter gdp = new GUIDoubleParameter((DoubleParameter) parameter);
- parameters.add(gdp);
- vb.getChildren().add(gdp);
- } else if (parameter instanceof BooleanParameter) {
- GUIBooleanParameter gbp = new GUIBooleanParameter((BooleanParameter) parameter);
- parameters.add(gbp);
- vb.getChildren().add(gbp);
- }
+ GUIParameter gp = GUIParameter.create(parameter);
+
+ parameters.add(gp);
+ vb.getChildren().add(gp);
}
}
@@ -371,30 +364,29 @@ public class SettingsPane extends AnchorPane {
return event.getX() < (GUI.RESIZE_MARGIN);
}
- public void refreshValues() {
- for (GUIParameter parameter : parameters) {
- parameter.refreshValue();
- }
- //parent.updateNodeGrids();
- }
-
-// public void bindParameters() {
-// for (GUIParameter parameter : parameters) {
-// parameter.doBindings();
-// }
-// }
-//
-// public void unbindParameters() {
-// for (GUIParameter parameter : parameters) {
-// parameter.undoBindings();
-// }
-// }
-
- public void toggleSettings(boolean value) {
+ public void disableSettings(boolean value) {
bpPane.setDisable(value);
eaPane.setDisable(value);
mutatorPane.setDisable(value);
ffPane.setDisable(value);
nfPane.setDisable(value);
}
+
+ /**
+ * Writes the GUI parameter value back to the resources parameter,
+ * if any changes were made.
+ *
+ * @return true if the experiment needs to be reset, false otherwise.
+ */
+ private boolean applyChanges() {
+ boolean reset = false;
+
+ for (GUIParameter parameter : parameters) {
+ reset |= parameter.applyChange();
+ }
+
+ return reset;
+ }
+
+
}