Skip to content

Commit 0277481

Browse files
authored
Merge pull request #2318 from ControlSystemStudio/CSSTUDIO-1719
refactor: changing advanced search view parameters updates search
2 parents 582945f + 463bd0f commit 0277481

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/AdvancedSearchViewController.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,17 @@
2121
import com.google.common.base.Strings;
2222
import javafx.application.Platform;
2323
import javafx.beans.property.SimpleBooleanProperty;
24+
import javafx.beans.value.ChangeListener;
2425
import javafx.beans.value.ObservableValue;
2526
import javafx.fxml.FXML;
2627
import javafx.geometry.Pos;
27-
import javafx.scene.control.*;
28+
import javafx.scene.control.Button;
29+
import javafx.scene.control.ComboBox;
30+
import javafx.scene.control.Label;
31+
import javafx.scene.control.RadioButton;
32+
import javafx.scene.control.TextField;
33+
import javafx.scene.input.KeyCode;
34+
import javafx.scene.input.KeyEvent;
2835
import javafx.scene.layout.AnchorPane;
2936
import javafx.scene.layout.GridPane;
3037
import javafx.scene.layout.HBox;
@@ -105,26 +112,45 @@ public class AdvancedSearchViewController {
105112
private final SimpleBooleanProperty sortAscending = new SimpleBooleanProperty(false);
106113
private final SimpleBooleanProperty requireAttachments = new SimpleBooleanProperty(false);
107114

115+
private Runnable searchCallback = () -> {
116+
throw new IllegalStateException("Search callback is not set on AdvancedSearchViewConroller!");
117+
};
118+
108119
public AdvancedSearchViewController(LogClient logClient, SearchParameters searchParameters) {
109120
this.logClient = logClient;
110121
this.searchParameters = searchParameters;
111122
}
112123

124+
public void setSearchCallback(Runnable searchCallback) {
125+
this.searchCallback = searchCallback;
126+
}
127+
113128
@FXML
114129
public void initialize() {
115130

116131
searchTitle.textProperty().bindBidirectional(this.searchParameters.titleProperty());
132+
searchTitle.setOnKeyReleased(this::searchOnEnter);
117133
searchText.textProperty().bindBidirectional(this.searchParameters.textProperty());
134+
searchText.setOnKeyReleased(this::searchOnEnter);
118135
searchAuthor.textProperty().bindBidirectional(this.searchParameters.authorProperty());
136+
searchAuthor.setOnKeyReleased(this::searchOnEnter);
119137
levelSelector.valueProperty().bindBidirectional(this.searchParameters.levelProperty());
138+
levelSelector.setOnAction(e -> searchCallback.run());
120139
searchTags.textProperty().bindBidirectional(this.searchParameters.tagsProperty());
140+
searchParameters.tagsProperty().addListener(searchOnTextChange);
121141
searchLogbooks.textProperty().bindBidirectional(this.searchParameters.logbooksProperty());
142+
searchParameters.logbooksProperty().addListener(searchOnTextChange);
122143
startTime.textProperty().bindBidirectional(this.searchParameters.startTimeProperty());
144+
startTime.setOnKeyReleased(this::searchOnEnter);
123145
endTime.textProperty().bindBidirectional(this.searchParameters.endTimeProperty());
146+
endTime.setOnKeyReleased(this::searchOnEnter);
124147
searchParameters.addListener((observable, oldValue, newValue) -> {
125148
updateControls(newValue);
126149
});
150+
sortAscending.addListener(searchOnSortChange);
151+
127152
attachmentTypes.textProperty().bindBidirectional(this.searchParameters.attachmentsProperty());
153+
attachmentTypes.setOnKeyReleased(this::searchOnEnter);
128154

129155
levelLabel.setText(LogbookUIPreferences.level_field_name);
130156

@@ -160,6 +186,7 @@ public void initialize() {
160186
}
161187
if (timeSearchPopover.isShowing())
162188
timeSearchPopover.hide();
189+
searchCallback.run();
163190
});
164191
});
165192
Button cancel = new Button();
@@ -345,4 +372,19 @@ protected List<String> getValidatedTagsSelection(String tags) {
345372
public SimpleBooleanProperty getSortAscending(){
346373
return sortAscending;
347374
}
375+
376+
private void searchOnEnter(KeyEvent e) {
377+
if (e.getCode() == KeyCode.ENTER) {
378+
searchCallback.run();
379+
}
380+
}
381+
382+
private final ChangeListener<? super String> searchOnTextChange = (options, oldValue, newValue) -> {
383+
searchCallback.run();
384+
};
385+
386+
private final ChangeListener<? super Boolean> searchOnSortChange = (options, oldValue, newValue) -> {
387+
searchCallback.run();
388+
};
389+
348390
}

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/LogEntryCalender.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javafx.fxml.FXMLLoader;
44
import javafx.scene.control.Alert;
5+
import org.phoebus.framework.nls.NLS;
56
import org.phoebus.framework.persistence.Memento;
67
import org.phoebus.framework.spi.AppDescriptor;
78
import org.phoebus.framework.spi.AppInstance;
@@ -13,6 +14,7 @@
1314
import org.phoebus.ui.docking.DockPane;
1415

1516
import java.io.IOException;
17+
import java.util.ResourceBundle;
1618
import java.util.logging.Level;
1719
import java.util.logging.Logger;
1820

@@ -33,7 +35,9 @@ public class LogEntryCalender implements AppInstance {
3335
SearchParameters searchParameters = new SearchParameters();
3436
searchParameters.setQuery(ologQueryManager.getQueries().get(0).getQuery());
3537
FXMLLoader loader = new FXMLLoader();
38+
ResourceBundle resourceBundle = NLS.getMessages(Messages.class);
3639
loader.setLocation(this.getClass().getResource("LogEntryCalenderView.fxml"));
40+
loader.setResources(resourceBundle);
3741
loader.setControllerFactory(clazz -> {
3842
try {
3943
if(app.getClient() != null)

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/LogEntryCalenderViewController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ public LogEntryCalenderViewController(LogClient logClient, OlogQueryManager olog
9797

9898
@FXML
9999
public void initialize() {
100+
101+
advancedSearchViewController.setSearchCallback(this::search);
100102
configureComboBox();
101103
// Set the search parameters in the advanced search controller so that it operates on the same object.
102104
ologQueries.setAll(ologQueryManager.getQueries());

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/LogEntryTableViewController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ public LogEntryTableViewController(LogClient logClient, OlogQueryManager ologQue
132132

133133
@FXML
134134
public void initialize() {
135+
136+
advancedSearchViewController.setSearchCallback(this::search);
137+
135138
configureComboBox();
136139
ologQueries.setAll(ologQueryManager.getQueries());
137140

0 commit comments

Comments
 (0)