diff options
Diffstat (limited to 'src/jcgp/gui/population/GUIGene.java')
-rw-r--r-- | src/jcgp/gui/population/GUIGene.java | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/jcgp/gui/population/GUIGene.java b/src/jcgp/gui/population/GUIGene.java index d6f9638..02b87e7 100644 --- a/src/jcgp/gui/population/GUIGene.java +++ b/src/jcgp/gui/population/GUIGene.java @@ -54,6 +54,8 @@ public abstract class GUIGene extends Group { private Text text; private Circle mainCircle; + + private int lock = 0; /** * Initialises the {@code Text} and {@code Circle} objects so that all genes are standardised. @@ -66,7 +68,7 @@ public abstract class GUIGene extends Group { text.setWrappingWidth(Constants.NODE_RADIUS * 2); text.setX(-Constants.NODE_RADIUS); - mainCircle = new Circle(Constants.NODE_RADIUS, Constants.NEUTRAL_COLOUR); + mainCircle = new Circle(Constants.NODE_RADIUS, Constants.NEUTRAL_PAINT); mainCircle.setStroke(Paint.valueOf("black")); getChildren().addAll(mainCircle, text); @@ -105,24 +107,21 @@ public abstract class GUIGene extends Group { public final void setState(GUIGeneState newState) { switch (newState) { case NEUTRAL: - mainCircle.setFill(Constants.NEUTRAL_COLOUR); - setLinesVisible(false); + mainCircle.setFill(isLocked() ? Constants.HARD_HIGHLIGHT_PAINT : Constants.NEUTRAL_PAINT); + setLinesVisible(isLocked() ? true : false); break; case HOVER: - mainCircle.setFill(Constants.MEDIUM_HIGHLIGHT_COLOUR); + mainCircle.setFill(Constants.MEDIUM_HIGHLIGHT_PAINT); setLinesVisible(true); break; case EXTENDED_HOVER: - mainCircle.setFill(Constants.SOFT_HIGHLIGHT_COLOUR); - setLinesVisible(false); + mainCircle.setFill(Constants.SOFT_HIGHLIGHT_PAINT); + setLinesVisible(isLocked() ? true : false); break; case ACTIVE_HOVER: - mainCircle.setFill(Constants.SOFT_HIGHLIGHT_COLOUR); + mainCircle.setFill(Constants.SOFT_HIGHLIGHT_PAINT); setLinesVisible(true); break; - - default: - break; } currentState = newState; } @@ -134,4 +133,18 @@ public abstract class GUIGene extends Group { * @param value the visibility value. */ protected abstract void setLinesVisible(boolean value); + + public boolean isLocked() { + return lock > 0; + } + + public void setLock(boolean value) { + if (value) { + lock++; + } else if (lock > 0) { + lock--; + } else { + lock = 0; + } + } } |