use of org.phoebus.logbook.olog.ui.query.OlogQuery in project phoebus by ControlSystemStudio.
the class LogEntryCalenderViewController method configureComboBox.
private void configureComboBox() {
Font defaultQueryFont = Font.font("Liberation Sans", FontWeight.BOLD, 12);
Font defaultQueryFontRegular = Font.font("Liberation Sans", FontWeight.NORMAL, 12);
query.setVisibleRowCount(OlogQueryManager.getInstance().getQueryListSize());
// Needed to customize item rendering, e.g. default query rendered in bold.
query.setCellFactory(new Callback<>() {
@Override
public ListCell<OlogQuery> call(ListView<OlogQuery> param) {
final ListCell<OlogQuery> cell = new ListCell<>() {
@Override
public void updateItem(OlogQuery item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item.getQuery().isEmpty() ? "<empty>" : item.getQuery());
if (item.isDefaultQuery()) {
setFont(defaultQueryFont);
} else {
setFont(defaultQueryFontRegular);
}
} else {
setText(null);
}
}
};
return cell;
}
});
// This is needed for the "editor" part of the ComboBox
query.setConverter(new StringConverter<>() {
@Override
public String toString(OlogQuery query) {
if (query == null) {
return "";
} else {
return query.getQuery();
}
}
@Override
public OlogQuery fromString(String s) {
return new OlogQuery(s);
}
});
}
use of org.phoebus.logbook.olog.ui.query.OlogQuery in project phoebus by ControlSystemStudio.
the class LogEntryCalenderViewController method initialize.
@FXML
public void initialize() {
configureComboBox();
// Set the search parameters in the advanced search controller so that it operates on the same object.
ologQueries.setAll(ologQueryManager.getQueries());
searchParameters.addListener((observable, oldValue, newValue) -> {
query.getEditor().setText(newValue);
});
agenda = new Agenda();
agenda.setEditAppointmentCallback(new Callback<Agenda.Appointment, Void>() {
@Override
public Void call(Appointment appointment) {
return null;
}
});
agenda.setActionCallback((appointment) -> {
// show detailed view
try {
if (map != null) {
final Stage dialog = new Stage();
dialog.initModality(Modality.NONE);
ResourceBundle resourceBundle = NLS.getMessages(Messages.class);
FXMLLoader loader = new FXMLLoader();
loader.setResources(resourceBundle);
loader.setLocation(this.getClass().getResource("LogEntryDisplay.fxml"));
loader.setControllerFactory(clazz -> {
try {
if (clazz.isAssignableFrom(SingleLogEntryDisplayController.class)) {
return clazz.getConstructor(LogClient.class).newInstance(client);
} else if (clazz.isAssignableFrom(AttachmentsPreviewController.class)) {
return clazz.getConstructor().newInstance();
} else if (clazz.isAssignableFrom(LogEntryDisplayController.class)) {
return clazz.getConstructor(LogClient.class).newInstance(client);
} else if (clazz.isAssignableFrom(LogPropertiesController.class)) {
return clazz.getConstructor().newInstance();
}
} catch (Exception e) {
logger.log(Level.SEVERE, "Failed to construct controller for log entry display", e);
}
return null;
});
loader.load();
LogEntryDisplayController controller = loader.getController();
controller.setLogEntry(map.get(appointment));
Scene dialogScene = new Scene(loader.getRoot(), 800, 600);
dialog.setScene(dialogScene);
dialog.show();
}
} catch (Exception e) {
logger.log(Level.WARNING, "Failed to show details for : " + appointment.getSummary(), e);
}
return null;
});
agenda.allowDraggingProperty().set(false);
agenda.allowResizeProperty().set(false);
appointmentGroupMap = agenda.appointmentGroups().stream().collect(Collectors.toMap(AppointmentGroup::getDescription, Function.identity()));
try {
String styleSheetResource = LogbookUIPreferences.calendar_view_item_stylesheet;
URL url = this.getClass().getResource(styleSheetResource);
// url may be null...
if (url != null) {
agenda.getStylesheets().add(this.getClass().getResource(styleSheetResource).toString());
}
} catch (Exception e) {
logger.log(Level.WARNING, "Failed to set css style", e);
}
AnchorPane.setTopAnchor(agenda, 6.0);
AnchorPane.setBottomAnchor(agenda, 6.0);
AnchorPane.setLeftAnchor(agenda, 6.0);
AnchorPane.setRightAnchor(agenda, 6.0);
agendaPane.getChildren().add(agenda);
query.itemsProperty().bind(new SimpleObjectProperty<>(ologQueries));
query.setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.ENTER) {
// Query set -> search is triggered!
query.setValue(new OlogQuery(query.getEditor().getText()));
}
});
query.getEditor().setText(ologQueries.get(0).getQuery());
// Query set -> search is triggered!
query.getSelectionModel().select(ologQueries.get(0));
resize.setText(">");
search.disableProperty().bind(searchInProgress);
search();
}
use of org.phoebus.logbook.olog.ui.query.OlogQuery in project phoebus by ControlSystemStudio.
the class LogEntryTableViewController method configureComboBox.
private void configureComboBox() {
Font defaultQueryFont = Font.font("Liberation Sans", FontWeight.BOLD, 12);
Font defaultQueryFontRegular = Font.font("Liberation Sans", FontWeight.NORMAL, 12);
query.setVisibleRowCount(OlogQueryManager.getInstance().getQueryListSize());
// Needed to customize item rendering, e.g. default query rendered in bold.
query.setCellFactory(new Callback<>() {
@Override
public ListCell<OlogQuery> call(ListView<OlogQuery> param) {
final ListCell<OlogQuery> cell = new ListCell<>() {
@Override
public void updateItem(OlogQuery item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item.getQuery().isEmpty() ? "<empty>" : item.getQuery());
if (item.isDefaultQuery()) {
setFont(defaultQueryFont);
} else {
setFont(defaultQueryFontRegular);
}
} else {
setText(null);
}
}
};
return cell;
}
});
// This is needed for the "editor" part of the ComboBox
query.setConverter(new StringConverter<>() {
@Override
public String toString(OlogQuery query) {
if (query == null) {
return "";
} else {
return query.getQuery();
}
}
@Override
public OlogQuery fromString(String s) {
return new OlogQuery(s);
}
});
}
Aggregations