diff options
| author | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-03-09 16:40:17 -0300 | 
|---|---|---|
| committer | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-03-09 16:40:17 -0300 | 
| commit | ff5248437491f1829c0168b271e85cb358516577 (patch) | |
| tree | 1c41e92769d8186b2d6e05efe8bdb6d205b01156 /src/jcgp/gui/population/ChromosomePane.java | |
| parent | db2bc6e935ff1632d78ea8a03606b396944ef21e (diff) | |
Diffstat (limited to 'src/jcgp/gui/population/ChromosomePane.java')
| -rw-r--r-- | src/jcgp/gui/population/ChromosomePane.java | 140 | 
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."); -	} -} | 
