Gave the boatgroups a selection attribute, allowing them to be highlighted upon clicking

Boats can be clicked on canvas or from selection drop down on the side

#story[955]
This commit is contained in:
William Muir
2017-05-15 14:09:09 +12:00
parent 85d4d63287
commit 764ae37ce4
4 changed files with 75 additions and 1 deletions
+31 -1
View File
@@ -1,13 +1,16 @@
package seng302.models;
import javafx.event.EventHandler;
import javafx.geometry.Point2D;
import javafx.scene.Group;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.scene.text.Text;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import seng302.controllers.RaceViewController;
import java.util.ArrayList;
import java.util.List;
@@ -39,6 +42,7 @@ public class BoatGroup extends RaceObject{
private Text teamNameObject;
private Text velocityObject;
private Wake wake;
private boolean isSelected = false;
//Handles boat moving when connecting to a stream
private boolean setToInitialLocation = false;
private boolean destinationSet;
@@ -80,6 +84,9 @@ public class BoatGroup extends RaceObject{
private void initChildren (Color color, double... points) {
boatPoly = new Polygon(points);
boatPoly.setFill(color);
boatPoly.setOnMouseEntered(event -> boatPoly.setFill(Color.FLORALWHITE));
boatPoly.setOnMouseExited(event -> boatPoly.setFill(color));
boatPoly.setOnMouseClicked(event -> setIsSelected(!isSelected)); //Toggle the selection of the boat
teamNameObject = new Text(boat.getShortName());
velocityObject = new Text(String.valueOf(boat.getVelocity()));
@@ -176,7 +183,7 @@ public class BoatGroup extends RaceObject{
boatPoly.getLayoutY()
);
l.getStrokeDashArray().setAll(3d, 7d);
l.setStroke(boatPoly.getFill());
l.setStroke(boat.getColour());
lineGroup.getChildren().add(l);
}
if (destinationSet) { //Only begin drawing after the first destination is set
@@ -279,6 +286,10 @@ public class BoatGroup extends RaceObject{
wake.rotate(rotationalGoal);
}
public void paintBoat (Color color) {
boatPoly.setFill(color);
}
public void setTeamNameObjectVisible(Boolean visible) {
teamNameObject.setVisible(visible);
}
@@ -299,6 +310,20 @@ public class BoatGroup extends RaceObject{
return boat;
}
/**
* This function sets the boats isSelected property AS WELL as actually acting upon the value of that selection.
* (Painting or not painting annotations)
* @param isSelected A Boolean indicating whether or not the boat is selected
*/
public void setIsSelected(Boolean isSelected) {
this.isSelected = isSelected;
setTeamNameObjectVisible(isSelected);
setVelocityObjectVisible(isSelected);
setLineGroupVisible(isSelected);
setWakeVisible(isSelected);
paintBoat((isSelected) ? Color.WHITE : boat.getColour());
}
/**
* Returns true if this BoatGroup contains at least one of the given IDs.
*
@@ -355,4 +380,9 @@ public class BoatGroup extends RaceObject{
}
});
}
@Override
public String toString() {
return boat.toString();
}
}
+5
View File
@@ -164,4 +164,9 @@ public class Yacht {
public void setMarkLastPast(Integer markLastPast) {
this.markLastPast = markLastPast;
}
@Override
public String toString() {
return boatName;
}
}