aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/population/ChromosomePane.java
diff options
context:
space:
mode:
authorEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 16:40:17 -0300
committerEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 16:40:17 -0300
commitff5248437491f1829c0168b271e85cb358516577 (patch)
tree1c41e92769d8186b2d6e05efe8bdb6d205b01156 /src/jcgp/gui/population/ChromosomePane.java
parentdb2bc6e935ff1632d78ea8a03606b396944ef21e (diff)
Moved GUI to its own repositoryHEADmaster
Diffstat (limited to 'src/jcgp/gui/population/ChromosomePane.java')
-rw-r--r--src/jcgp/gui/population/ChromosomePane.java140
1 files changed, 0 insertions, 140 deletions
diff --git a/src/jcgp/gui/population/ChromosomePane.java b/src/jcgp/gui/population/ChromosomePane.java
deleted file mode 100644
index a87a054..0000000
--- a/src/jcgp/gui/population/ChromosomePane.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package jcgp.gui.population;
-
-import java.util.ArrayList;
-
-import javafx.scene.control.ScrollPane;
-import javafx.scene.layout.Pane;
-import javafx.scene.shape.Line;
-import jcgp.backend.population.Chromosome;
-import jcgp.backend.population.Node;
-import jcgp.gui.GUI;
-
-/**
- * This extension of {@code ScrollPane} contains a series of
- * nodes, inputs and outputs spread across a grid. It also contains
- * all of the connection lines laid over the nodes, inputs and outputs.
- *
- *
- * @author Eduardo Pedroni
- *
- */
-public class ChromosomePane extends ScrollPane {
-
- private GUIInput[] guiInputs;
- private GUINode[][] guiNodes;
- private GUIOutput[] guiOutputs;
-
- private Pane content;
-
- private boolean target = false;
-
- public ChromosomePane(Chromosome chromosome) {
- super();
-
- ArrayList<Line> connectionLines = new ArrayList<Line>();
-
- int rows = GUI.resources.rows();
- int columns = GUI.resources.columns();
-
- content = new Pane();
- content.setId("content pane for genes");
-
- /*
- * inputs
- */
- guiInputs = new GUIInput[GUI.resources.inputs()];
- for (int i = 0; i < guiInputs.length; i++) {
- guiInputs[i] = new GUIInput(chromosome.getInput(i));
- }
- // add inputs to content pane
- content.getChildren().addAll(guiInputs);
-
- /*
- * nodes
- */
- guiNodes = new GUINode[rows][columns];
- for (int c = 0; c < columns; c++) {
- for (int r = 0; r < rows; r++) {
- // make the connection lines
- Line lines[] = new Line[GUI.resources.arity()];
- for (int l = 0; l < lines.length; l++) {
- lines[l] = new Line();
- lines[l].setMouseTransparent(true);
- lines[l].setVisible(false);
- connectionLines.add(lines[l]);
- }
- // make the GUI element
- guiNodes[r][c] = new GUINode(chromosome.getNode(r, c), lines);
- // add node to content pane
- content.getChildren().add(guiNodes[r][c]);
- }
- }
-
- /*
- * outputs
- */
- guiOutputs = new GUIOutput[GUI.resources.outputs()];
- for (int i = 0; i < guiOutputs.length; i++) {
- // make the connection line
- Line line = new Line();
- line.setVisible(false);
- line.setMouseTransparent(true);
- connectionLines.add(line);
- // make the GUI element
- guiOutputs[i] = new GUIOutput(chromosome.getOutput(i), line);
- }
- // add outputs to content pane
- content.getChildren().addAll(guiOutputs);
-
- // add lines to the pane on top of genes
- content.getChildren().addAll(connectionLines);
-
- setPrefWidth(620);
- setContent(content);
- }
-
- protected boolean isTarget() {
- return target;
- }
-
- protected void setTarget(boolean newValue) {
- target = newValue;
- }
-
- public void updateGenes(Chromosome chr) {
- for (int r = 0; r < GUI.resources.rows(); r++) {
- for (int c = 0; c < GUI.resources.columns(); c++) {
- guiNodes[r][c].setNode(chr.getNode(r, c));
- }
- }
- for (int i = 0; i < guiOutputs.length; i++) {
- guiOutputs[i].setOutput(chr.getOutput(i));
- }
- }
-
- public static boolean isAllowed(GUIMutable source, GUIConnection target) {
- if (source instanceof GUINode) {
- // if the source is a node, all inputs and some nodes are valid
- if (target instanceof GUIInput) {
- return true;
- } else if (target instanceof GUINode) {
- // target and source are nodes, let's look at levels back
- Node t = ((GUINode) target).getNode(), s = ((GUINode) source).getNode();
- if (s.getColumn() - t.getColumn() > 0 && s.getColumn() - t.getColumn() <= GUI.resources.levelsBack()) {
- return true;
- }
- }
- return false;
- } else if (source instanceof GUIOutput) {
- // if the source is an output, any node or input is valid
- if (target instanceof GUINode || target instanceof GUIInput) {
- return true;
- } else {
- // this should never happen...
- return false;
- }
- }
- // if the source was neither node nor output, something bad is happening
- throw new ClassCastException("Source was neither GUINode nor GUIOutput.");
- }
-}