1919package org .phoebus .logbook .olog .ui ;
2020
2121import javafx .application .Platform ;
22- import javafx .beans .property .SimpleBooleanProperty ;
22+ import javafx .beans .property .SimpleObjectProperty ;
2323import javafx .beans .property .SimpleStringProperty ;
2424import javafx .beans .value .ChangeListener ;
2525import javafx .beans .value .ObservableValue ;
3636import javafx .scene .control .RadioButton ;
3737import javafx .scene .control .TextField ;
3838import javafx .scene .control .ToggleButton ;
39+ import javafx .scene .control .ToggleGroup ;
3940import javafx .scene .image .ImageView ;
4041import javafx .scene .input .KeyCode ;
4142import javafx .scene .input .KeyEvent ;
4243import javafx .scene .layout .AnchorPane ;
4344import javafx .scene .layout .GridPane ;
4445import javafx .scene .layout .HBox ;
4546import javafx .scene .layout .VBox ;
46- import org .phoebus .logbook .LogEntryLevel ;
4747import org .phoebus .logbook .LogClient ;
48+ import org .phoebus .logbook .LogEntryLevel ;
4849import org .phoebus .logbook .Logbook ;
4950import org .phoebus .logbook .Tag ;
5051import org .phoebus .ui .dialog .ListSelectionPopOver ;
@@ -132,7 +133,8 @@ public class AdvancedSearchViewController {
132133
133134 private final SearchParameters searchParameters ;
134135
135- private final SimpleBooleanProperty sortAscending = new SimpleBooleanProperty (false );
136+ private final SimpleObjectProperty <SortOrder > sortOrderProperty =
137+ new SimpleObjectProperty <>(SortOrder .DESCENDING );
136138 private final ObservableList <LevelSelection > levelSelections = FXCollections .observableArrayList ();
137139 private final SimpleStringProperty selectedLevelsString = new SimpleStringProperty ();
138140 private final List <String > levelsList = new ArrayList <>();
@@ -181,7 +183,6 @@ public void initialize() {
181183 endTime .textProperty ().bindBidirectional (this .searchParameters .endTimeProperty ());
182184 endTime .setOnKeyReleased (this ::searchOnEnter );
183185 searchParameters .addListener ((observable , oldValue , newValue ) -> updateControls (newValue ));
184- sortAscending .addListener (searchOnSortChange );
185186
186187 attachmentTypes .textProperty ().bindBidirectional (this .searchParameters .attachmentsProperty ());
187188 attachmentTypes .setOnKeyReleased (this ::searchOnEnter );
@@ -330,14 +331,16 @@ public void initialize() {
330331 levelsContextMenu .getItems ().add (levelSelectionMenuItem );
331332 });
332333
333- sortAscending .addListener ((observable , oldValue , newValue ) -> {
334- sortDescRadioButton .selectedProperty ().set (!newValue );
335- sortAscRadioButton .selectedProperty ().set (newValue );
336- });
334+ sortOrderProperty .addListener (searchOnSortChange );
337335
338- sortDescRadioButton .setOnAction (ae -> sortAscending .set (false ));
336+ sortDescRadioButton .setUserData (SortOrder .DESCENDING );
337+ sortAscRadioButton .setUserData (SortOrder .ASCENDING );
339338
340- sortAscRadioButton .setOnAction (ae -> sortAscending .set (true ));
339+ ToggleGroup toggleGroup = new ToggleGroup ();
340+ toggleGroup .getToggles ().addAll (sortDescRadioButton , sortAscRadioButton );
341+ toggleGroup .selectToggle (sortDescRadioButton );
342+ toggleGroup .selectedToggleProperty ().addListener ((obs , o , n ) ->
343+ sortOrderProperty .set ((SortOrder ) n .getUserData ()));
341344
342345 gridPane .setOnMouseClicked (e -> levelsToggleButton .setSelected (false ));
343346
@@ -428,8 +431,8 @@ protected List<String> getValidatedLevelsSelection(String levels) {
428431 return levelsFromQueryString .stream ().filter (levelsList ::contains ).collect (Collectors .toList ());
429432 }
430433
431- public SimpleBooleanProperty getSortAscending () {
432- return sortAscending ;
434+ public boolean getSortAscending () {
435+ return sortOrderProperty . get (). equals ( SortOrder . ASCENDING ) ;
433436 }
434437
435438 private void searchOnEnter (KeyEvent e ) {
@@ -440,7 +443,8 @@ private void searchOnEnter(KeyEvent e) {
440443
441444 private final ChangeListener <? super String > searchOnTextChange = (options , oldValue , newValue ) -> searchCallback .run ();
442445
443- private final ChangeListener <? super Boolean > searchOnSortChange = (options , oldValue , newValue ) -> searchCallback .run ();
446+ private final ChangeListener <? super SortOrder > searchOnSortChange =
447+ (options , oldValue , newValue ) -> searchCallback .run ();
444448
445449 private void setSelectedLevelsString () {
446450 selectedLevelsString .set (levelSelections .stream ().filter (LevelSelection ::isSelected )
@@ -498,4 +502,8 @@ public CheckBox getCheckBox() {
498502 }
499503 }
500504
505+ private enum SortOrder {
506+ DESCENDING ,
507+ ASCENDING
508+ }
501509}
0 commit comments