From ec57851de22100c5717436dae9012ce8087f2153 Mon Sep 17 00:00:00 2001 From: William Muir Date: Sun, 30 Apr 2017 23:24:24 +1200 Subject: [PATCH] Created annotation slider to display different levels of annotations Removed toggleAnnotations method as abstract from race object and made only for boat group as it didnt make sense for markgroup, at least not currently as they have no annotations to show #story[558] --- .../controllers/RaceViewController.java | 107 +++++++++++++++--- src/main/java/seng302/models/BoatGroup.java | 19 +++- src/main/java/seng302/models/RaceObject.java | 2 - .../java/seng302/models/mark/MarkGroup.java | 3 - src/main/resources/views/RaceView.fxml | 12 +- 5 files changed, 112 insertions(+), 31 deletions(-) diff --git a/src/main/java/seng302/controllers/RaceViewController.java b/src/main/java/seng302/controllers/RaceViewController.java index c064d225..d4653264 100644 --- a/src/main/java/seng302/controllers/RaceViewController.java +++ b/src/main/java/seng302/controllers/RaceViewController.java @@ -9,11 +9,13 @@ import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.control.CheckBox; +import javafx.scene.control.Slider; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.util.Duration; +import javafx.util.StringConverter; import seng302.models.*; import seng302.models.parsers.ConfigParser; @@ -27,7 +29,7 @@ public class RaceViewController extends Thread{ @FXML private VBox positionVbox; @FXML - private CheckBox toggleAnnotation, toggleFps; + private CheckBox toggleFps; @FXML private Text timerLabel; @FXML @@ -35,10 +37,11 @@ public class RaceViewController extends Thread{ @FXML private Text windArrowText, windDirectionText; @FXML + private Slider annotationSlider; + @FXML private CanvasController includedCanvasController; private ArrayList startingBoats = new ArrayList<>(); - private boolean displayAnnotations; private boolean displayFps; private Timeline timerTimeline; private Map timelineInfos = new HashMap<>(); @@ -74,22 +77,50 @@ public class RaceViewController extends Thread{ - private void initializeSettings(){ - displayAnnotations = true; + private void initializeSettings() { displayFps = true; - toggleAnnotation.selectedProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue observable, Boolean oldValue, Boolean newValue) { - displayAnnotations = !displayAnnotations; - } - }); toggleFps.selectedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Boolean oldValue, Boolean newValue) { displayFps = !displayFps; } }); + + //SLIFER STUFF BELOW + annotationSlider.setLabelFormatter(new StringConverter() { + @Override + public String toString(Double n) { + if (n == 0) return "None"; + if (n == 1) return "Low"; + if (n == 2) return "Medium"; + if (n == 3) return "All"; + + return "All"; + } + + @Override + public Double fromString(String s) { + switch (s) { + case "None": + return 0d; + case "Low": + return 1d; + case "Medium": + return 2d; + case "All": + return 3d; + + default: + return 3d; + } + } + }); + + annotationSlider.valueProperty().addListener((obs, oldval, newVal) -> + setAnnotations((int)annotationSlider.getValue())); + + annotationSlider.setValue(3); } private void initializeTimer(){ @@ -270,10 +301,6 @@ public class RaceViewController extends Thread{ return displayFps; } - public boolean isDisplayAnnotations() { - return displayAnnotations; - } - public Race getRace() { return race; } @@ -286,10 +313,54 @@ public class RaceViewController extends Thread{ return startingBoats; } - @FXML - private void toggleAnnotations () { - for (RaceObject ro : includedCanvasController.getRaceObjects()) { - ro.toggleAnnotations(); + + private void setAnnotations(Integer annotationLevel) { + switch (annotationLevel) { + case 0: + for (RaceObject ro : includedCanvasController.getRaceObjects()) { + if(ro instanceof BoatGroup) { + BoatGroup bg = (BoatGroup) ro; + bg.setTeamNameObjectVisible(false); + bg.setVelocityObjectVisible(false); + bg.setLineGroupVisible(false); + bg.setWakeVisible(false); + } + } + break; + case 1: + for (RaceObject ro : includedCanvasController.getRaceObjects()) { + if(ro instanceof BoatGroup) { + BoatGroup bg = (BoatGroup) ro; + bg.setTeamNameObjectVisible(true); + bg.setVelocityObjectVisible(false); + bg.setLineGroupVisible(false); + bg.setWakeVisible(false); + } + } + break; + case 2: + for (RaceObject ro : includedCanvasController.getRaceObjects()) { + if(ro instanceof BoatGroup) { + BoatGroup bg = (BoatGroup) ro; + bg.setTeamNameObjectVisible(true); + bg.setVelocityObjectVisible(false); + bg.setLineGroupVisible(true); + bg.setWakeVisible(false); + } + } + break; + case 3: + for (RaceObject ro : includedCanvasController.getRaceObjects()) { + if(ro instanceof BoatGroup) { + BoatGroup bg = (BoatGroup) ro; + bg.setTeamNameObjectVisible(true); + bg.setVelocityObjectVisible(true); + bg.setLineGroupVisible(true); + bg.setWakeVisible(true); + } + } + break; } } + } \ No newline at end of file diff --git a/src/main/java/seng302/models/BoatGroup.java b/src/main/java/seng302/models/BoatGroup.java index ec3e8262..baca27c1 100644 --- a/src/main/java/seng302/models/BoatGroup.java +++ b/src/main/java/seng302/models/BoatGroup.java @@ -229,11 +229,20 @@ public class BoatGroup extends RaceObject{ wake.rotate(rotationalGoal); } - public void toggleAnnotations () { - teamNameObject.setVisible(!teamNameObject.isVisible()); - velocityObject.setVisible(!velocityObject.isVisible()); - lineGroup.setVisible(!lineGroup.isVisible()); - wake.setVisible(!wake.isVisible()); + public void setTeamNameObjectVisible(Boolean visible) { + teamNameObject.setVisible(visible); + } + + public void setVelocityObjectVisible(Boolean visible) { + velocityObject.setVisible(visible); + } + + public void setLineGroupVisible(Boolean visible) { + lineGroup.setVisible(visible); + } + + public void setWakeVisible(Boolean visible) { + wake.setVisible(visible); } public Boat getBoat() { diff --git a/src/main/java/seng302/models/RaceObject.java b/src/main/java/seng302/models/RaceObject.java index 5e1d5ab0..90195e5b 100644 --- a/src/main/java/seng302/models/RaceObject.java +++ b/src/main/java/seng302/models/RaceObject.java @@ -76,6 +76,4 @@ public abstract class RaceObject extends Group { public abstract boolean hasRaceId (int... raceIds); public abstract int[] getRaceIds (); - - public abstract void toggleAnnotations (); } diff --git a/src/main/java/seng302/models/mark/MarkGroup.java b/src/main/java/seng302/models/mark/MarkGroup.java index 239e0577..6448f2e2 100644 --- a/src/main/java/seng302/models/mark/MarkGroup.java +++ b/src/main/java/seng302/models/mark/MarkGroup.java @@ -223,9 +223,6 @@ public class MarkGroup extends RaceObject { return true; return false; } - public void toggleAnnotations () { - - } public static int getMarkRadius() { return MARK_RADIUS; diff --git a/src/main/resources/views/RaceView.fxml b/src/main/resources/views/RaceView.fxml index 6de979d4..c046b7d4 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -1,5 +1,10 @@ + + + + + @@ -12,7 +17,7 @@ - + @@ -40,8 +45,7 @@ - - + @@ -52,6 +56,8 @@ + +