@ -11,6 +11,8 @@ import seng302.VisualiserInput;
import java.net.URL ;
import java.net.URL ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.Map ;
import java.util.ResourceBundle ;
import java.util.ResourceBundle ;
/ * *
/ * *
@ -21,9 +23,25 @@ public class RaceController extends Controller {
//user saved data for annotation display
//user saved data for annotation display
private ArrayList < Boolean > presetAnno ;
private ArrayList < Boolean > presetAnno ;
private Map < String , Boolean > importantAnno ;
private Map < String , Boolean > annoShownBeforeHide ;
private int buttonChecked ; //button currently checked allows the checkboxes to know whether or not to put it's state in history (if not hidden then store)
private int prevBtnChecked ; //button to keep track of previous pressed button incase we want to check a checkbox straight from hidden we do not wish for all previous to come on.
private static String nameCheckAnno = "name" ;
private static String abbrevCheckAnno = "abbrev" ;
private static String speedCheckAnno = "speed" ;
private static String pathCheckAnno = "path" ;
private static int noBtn = 0 ;
private static int hideBtn = 1 ;
private static int showBtn = 2 ;
private static int partialBtn = 3 ;
private static int importantBtn = 4 ;
private ResizableRaceCanvas raceMap ;
private ResizableRaceCanvas raceMap ;
private ResizableRaceMap raceBoundaries ;
private ResizableRaceMap raceBoundaries ;
private ToggleGroup annotationGroup ;
@FXML SplitPane race ;
@FXML SplitPane race ;
@FXML CheckBox showFPS ;
@FXML CheckBox showFPS ;
@FXML CheckBox showBoatPath ;
@FXML CheckBox showBoatPath ;
@ -86,7 +104,7 @@ public class RaceController extends Controller {
}
}
} ) ;
} ) ;
//adds all radios buttons for annotations to a group
//adds all radios buttons for annotations to a group
ToggleGroup annotationGroup = new ToggleGroup ( ) ;
annotationGroup = new ToggleGroup ( ) ;
hideAnnoRBTN . setToggleGroup ( annotationGroup ) ;
hideAnnoRBTN . setToggleGroup ( annotationGroup ) ;
showAnnoRBTN . setToggleGroup ( annotationGroup ) ;
showAnnoRBTN . setToggleGroup ( annotationGroup ) ;
partialAnnoRBTN . setToggleGroup ( annotationGroup ) ;
partialAnnoRBTN . setToggleGroup ( annotationGroup ) ;
@ -165,31 +183,103 @@ public class RaceController extends Controller {
} ) ;
} ) ;
}
}
private void storeCurrentAnnotationState ( ) {
annoShownBeforeHide . put ( nameCheckAnno , showName . isSelected ( ) ) ;
annoShownBeforeHide . put ( abbrevCheckAnno , showAbbrev . isSelected ( ) ) ;
annoShownBeforeHide . put ( pathCheckAnno , showBoatPath . isSelected ( ) ) ;
annoShownBeforeHide . put ( speedCheckAnno , showSpeed . isSelected ( ) ) ;
}
/ * *
/ * *
* Set up boat annotations
* Set up boat annotations
* /
* /
private void initializeAnnotations ( ) {
private void initializeAnnotations ( ) {
presetAnno = new ArrayList < > ( ) ;
presetAnno = new ArrayList < > ( ) ;
importantAnno = new HashMap < > ( ) ;
importantAnno . put ( nameCheckAnno , false ) ;
importantAnno . put ( abbrevCheckAnno , false ) ;
importantAnno . put ( pathCheckAnno , false ) ;
importantAnno . put ( speedCheckAnno , false ) ;
annoShownBeforeHide = new HashMap < > ( ) ;
annoShownBeforeHide . put ( nameCheckAnno , true ) ;
annoShownBeforeHide . put ( abbrevCheckAnno , true ) ;
annoShownBeforeHide . put ( pathCheckAnno , true ) ;
annoShownBeforeHide . put ( speedCheckAnno , true ) ;
//listener for show name in annotation
//listener for show name in annotation
showName . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showName . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . toggleAnnoName ( ) ;
if ( old_val ! = new_val ) {
raceMap . toggleAnnoName ( ) ;
}
if ( buttonChecked ! = hideBtn ) {
//if we are checking the box straight out of hide instead of using the radio buttons
if ( prevBtnChecked = = hideBtn & & buttonChecked ! = showBtn ) {
storeCurrentAnnotationState ( ) ;
} else {
annoShownBeforeHide . put ( nameCheckAnno , showName . isSelected ( ) ) ;
}
if ( buttonChecked = = noBtn ) {
annotationGroup . selectToggle ( showAnnoRBTN ) ;
}
}
raceMap . update ( ) ;
raceMap . update ( ) ;
prevBtnChecked = noBtn ;
} ) ;
} ) ;
//listener for show abbreviation for annotation
//listener for show abbreviation for annotation
showAbbrev . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showAbbrev . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . toggleAnnoAbbrev ( ) ;
if ( old_val ! = new_val ) {
raceMap . toggleAnnoAbbrev ( ) ;
}
if ( buttonChecked ! = hideBtn ) {
if ( prevBtnChecked = = hideBtn & & buttonChecked ! = showBtn ) {
storeCurrentAnnotationState ( ) ;
} else {
annoShownBeforeHide . put ( abbrevCheckAnno , showAbbrev . isSelected ( ) ) ;
}
if ( buttonChecked = = noBtn ) {
annotationGroup . selectToggle ( showAnnoRBTN ) ;
}
}
raceMap . update ( ) ;
raceMap . update ( ) ;
prevBtnChecked = noBtn ;
} ) ;
} ) ;
//listener for show boat path for annotation
//listener for show boat path for annotation
showBoatPath . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showBoatPath . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . toggleBoatPath ( ) ;
if ( old_val ! = new_val ) {
raceMap . toggleBoatPath ( ) ;
}
if ( buttonChecked ! = hideBtn ) {
if ( prevBtnChecked = = hideBtn & & buttonChecked ! = showBtn ) {
storeCurrentAnnotationState ( ) ;
} else {
annoShownBeforeHide . put ( pathCheckAnno , showBoatPath . isSelected ( ) ) ;
}
if ( buttonChecked = = noBtn ) {
annotationGroup . selectToggle ( showAnnoRBTN ) ;
}
}
raceMap . update ( ) ;
raceMap . update ( ) ;
prevBtnChecked = noBtn ;
} ) ;
} ) ;
//listener to show speed for annotation
//listener to show speed for annotation
showSpeed . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showSpeed . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . toggleAnnoSpeed ( ) ;
if ( old_val ! = new_val ) {
raceMap . toggleAnnoSpeed ( ) ;
}
if ( buttonChecked ! = hideBtn ) {
if ( prevBtnChecked = = hideBtn & & buttonChecked ! = showBtn ) {
storeCurrentAnnotationState ( ) ;
} else {
annoShownBeforeHide . put ( speedCheckAnno , showSpeed . isSelected ( ) ) ;
}
if ( buttonChecked = = noBtn ) {
annotationGroup . selectToggle ( showAnnoRBTN ) ;
}
}
raceMap . update ( ) ;
raceMap . update ( ) ;
prevBtnChecked = noBtn ;
} ) ;
} ) ;
//listener to save currently selected annotation
//listener to save currently selected annotation
saveAnno . setOnAction ( event - > {
saveAnno . setOnAction ( event - > {
@ -201,33 +291,55 @@ public class RaceController extends Controller {
} ) ;
} ) ;
//listener for hiding
//listener for hiding
hideAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
hideAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . hideAnnotations ( ) ;
buttonChecked = hideBtn ;
//raceMap.hideAnnotations();
showName . setSelected ( false ) ;
showAbbrev . setSelected ( false ) ;
showBoatPath . setSelected ( false ) ;
showSpeed . setSelected ( false ) ;
annotationGroup . selectToggle ( hideAnnoRBTN ) ;
raceMap . update ( ) ;
raceMap . update ( ) ;
buttonChecked = noBtn ;
prevBtnChecked = hideBtn ;
} ) ;
} ) ;
//listener for showing all annotations
//listener for showing all annotations
showAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
raceMap . showAnnotations ( ) ;
buttonChecked = showBtn ;
showName . setSelected ( annoShownBeforeHide . get ( nameCheckAnno ) ) ;
showAbbrev . setSelected ( annoShownBeforeHide . get ( abbrevCheckAnno ) ) ;
showBoatPath . setSelected ( annoShownBeforeHide . get ( pathCheckAnno ) ) ;
showSpeed . setSelected ( annoShownBeforeHide . get ( speedCheckAnno ) ) ;
raceMap . update ( ) ;
raceMap . update ( ) ;
buttonChecked = noBtn ;
prevBtnChecked = showBtn ;
} ) ;
} ) ;
//listener for showing all important
//listener for showing all important
partialAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
partialAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
buttonChecked = partialBtn ;
showName . setSelected ( false ) ;
showName . setSelected ( false ) ;
showAbbrev . setSelected ( true ) ;
showAbbrev . setSelected ( true ) ;
showSpeed . setSelected ( true ) ;
showSpeed . setSelected ( true ) ;
showBoatPath . setSelected ( false ) ;
showBoatPath . setSelected ( false ) ;
raceMap . showAnnotations ( ) ;
//partialAnnoRBTN.setSelected(true);//as the others will set the show button back to visible then we need to make it so that this is rechecked.
annotationGroup . selectToggle ( partialAnnoRBTN ) ;
raceMap . update ( ) ;
raceMap . update ( ) ;
buttonChecked = noBtn ;
prevBtnChecked = partialBtn ;
} ) ;
} ) ;
//listener for showing all important
//listener for showing all important
importantAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
importantAnnoRBTN . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
buttonChecked = importantBtn ;
if ( presetAnno . size ( ) > 0 ) {
if ( presetAnno . size ( ) > 0 ) {
showName . setSelected ( presetAnno . get ( 0 ) ) ;
showName . setSelected ( presetAnno . get ( 0 ) ) ;
showAbbrev . setSelected ( presetAnno . get ( 1 ) ) ;
showAbbrev . setSelected ( presetAnno . get ( 1 ) ) ;
showSpeed . setSelected ( presetAnno . get ( 2 ) ) ;
showSpeed . setSelected ( presetAnno . get ( 2 ) ) ;
showBoatPath . setSelected ( presetAnno . get ( 3 ) ) ;
showBoatPath . setSelected ( presetAnno . get ( 3 ) ) ;
raceMap. showAnnotations ( ) ;
annotationGroup. selectToggle ( importantAnnoRBTN ) ;
raceMap . update ( ) ;
raceMap . update ( ) ;
}
}
buttonChecked = noBtn ;
prevBtnChecked = importantBtn ;
} ) ;
} ) ;
annotationGroup . selectToggle ( showAnnoRBTN ) ;
}
}
}
}