Skip to content

Commit 42c5858

Browse files
committed
Parking WIP
1 parent cb6cda4 commit 42c5858

File tree

4 files changed

+134
-2
lines changed

4 files changed

+134
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Copyright (C) 2024 European Spallation Source ERIC.
3+
*/
4+
5+
package org.phoebus.applications.saveandrestore.ui.configuration;
6+
7+
import javafx.beans.binding.Bindings;
8+
import javafx.beans.property.DoubleProperty;
9+
import javafx.beans.property.ObjectProperty;
10+
import javafx.beans.property.SimpleDoubleProperty;
11+
import javafx.beans.property.SimpleObjectProperty;
12+
import javafx.beans.property.SimpleStringProperty;
13+
import javafx.beans.property.StringProperty;
14+
import javafx.collections.FXCollections;
15+
import javafx.fxml.FXML;
16+
import javafx.scene.control.ComboBox;
17+
import javafx.scene.control.TextField;
18+
import javafx.scene.control.TextFormatter;
19+
import javafx.util.converter.DoubleStringConverter;
20+
import org.phoebus.applications.saveandrestore.model.PvCompareMode;
21+
22+
import java.util.Arrays;
23+
import java.util.regex.Matcher;
24+
import java.util.regex.Pattern;
25+
26+
public class ComparisonDataEditorController {
27+
28+
@FXML
29+
private ComboBox<PvCompareMode> comparisonModeComboBox;
30+
31+
@FXML
32+
private TextField toleranceTextField;
33+
34+
private ObjectProperty<PvCompareMode> comparisonModeProperty = new SimpleObjectProperty<>();
35+
private StringProperty toleranceProperty = new SimpleStringProperty();
36+
private Pattern pattern = Pattern.compile("\\d*(\\.?\\d*)?");
37+
38+
//private ConfigurationController.ComparisonData comparisonData;
39+
public ComparisonDataEditorController(){
40+
41+
}
42+
43+
@FXML
44+
public void initialize(){
45+
comparisonModeComboBox.itemsProperty().set(FXCollections.observableArrayList(PvCompareMode.values()));
46+
comparisonModeComboBox.valueProperty().bind(comparisonModeProperty);
47+
toleranceTextField.textProperty().bindBidirectional(toleranceProperty);
48+
49+
toleranceTextField.textProperty().addListener((obs, o, n) -> {
50+
if(n != null && !n.isEmpty()){
51+
if(!pattern.matcher(n).matches()){
52+
toleranceTextField.textProperty().set(o);
53+
}
54+
}
55+
});
56+
}
57+
58+
public void setComparisonData(ConfigurationController.ComparisonData comparisonData){
59+
60+
}
61+
62+
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* Copyright (C) 2024 European Spallation Source ERIC.
3+
*/
4+
5+
package org.phoebus.applications.saveandrestore.ui.configuration;
6+
7+
import javafx.scene.control.Dialog;
8+
9+
public class ComparisonDataEditorDialog extends Dialog {
10+
11+
12+
}

app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@
2929
import javafx.collections.ListChangeListener;
3030
import javafx.collections.ObservableList;
3131
import javafx.fxml.FXML;
32+
import javafx.fxml.FXMLLoader;
3233
import javafx.scene.control.Alert;
3334
import javafx.scene.control.Button;
3435
import javafx.scene.control.ButtonType;
3536
import javafx.scene.control.CheckBox;
3637
import javafx.scene.control.ContextMenu;
38+
import javafx.scene.control.Dialog;
3739
import javafx.scene.control.Label;
3840
import javafx.scene.control.MenuItem;
3941
import javafx.scene.control.SelectionMode;
@@ -62,19 +64,23 @@
6264
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreBaseController;
6365
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreService;
6466
import org.phoebus.core.types.ProcessVariable;
67+
import org.phoebus.framework.nls.NLS;
6568
import org.phoebus.framework.selection.SelectionService;
6669
import org.phoebus.ui.application.ContextMenuHelper;
6770
import org.phoebus.ui.dialog.ExceptionDetailsErrorDialog;
6871
import org.phoebus.ui.javafx.FocusUtil;
6972
import org.phoebus.ui.javafx.ImageCache;
7073
import org.phoebus.util.time.TimestampFormats;
7174

75+
import javax.naming.Context;
76+
import java.io.IOException;
7277
import java.time.Instant;
7378
import java.util.ArrayList;
7479
import java.util.Arrays;
7580
import java.util.Collections;
7681
import java.util.List;
7782
import java.util.Optional;
83+
import java.util.ResourceBundle;
7884
import java.util.concurrent.Executor;
7985
import java.util.logging.Level;
8086
import java.util.logging.Logger;
@@ -210,9 +216,15 @@ public void initialize() {
210216
pvTable.getSelectionModel().getSelectedItems(), userIdentity));
211217

212218
ContextMenu contextMenu = new ContextMenu();
219+
MenuItem setComparisonData = new MenuItem("Add comparison on selection");
220+
setComparisonData.setOnAction(e -> {
221+
List<ConfigPvEntry> selectedItems = pvTable.getSelectionModel().getSelectedItems();
222+
launchComparisonEditor();
223+
});
224+
contextMenu.getItems().add(setComparisonData);
213225
pvTable.setOnContextMenuRequested(event -> {
214226
contextMenu.getItems().clear();
215-
contextMenu.getItems().addAll(deleteMenuItem);
227+
contextMenu.getItems().addAll(deleteMenuItem, setComparisonData);
216228
contextMenu.getItems().add(new SeparatorMenuItem());
217229
ObservableList<ConfigPvEntry> selectedPVs = pvTable.getSelectionModel().getSelectedItems();
218230
if (!selectedPVs.isEmpty()) {
@@ -223,6 +235,7 @@ public void initialize() {
223235
ContextMenuHelper.addSupportedEntries(FocusUtil.setFocusOn(pvTable), contextMenu);
224236
}
225237
});
238+
226239
pvTable.setContextMenu(contextMenu);
227240

228241
pvNameColumn.setCellFactory(TextFieldTableCell.forTableColumn());
@@ -311,7 +324,6 @@ public Double fromString(String string) {
311324
try {
312325
Double value = Double.parseDouble(string);
313326
if(value < 0){
314-
// Tolerance must be >= 0.
315327
// Tolerance must be >= 0.
316328
return null;
317329
}
@@ -543,4 +555,27 @@ public void nodeChanged(Node node) {
543555
private void setDirty(boolean dirty) {
544556
this.dirty.set(dirty && !loadInProgress.get());
545557
}
558+
559+
private ComparisonData launchComparisonEditor(){
560+
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
561+
alert.setHeaderText(null);
562+
alert.setGraphic(null);
563+
ResourceBundle resourceBundle = NLS.getMessages(Messages.class);
564+
FXMLLoader loader = new FXMLLoader();
565+
loader.setResources(resourceBundle);
566+
loader.setLocation(this.getClass().getResource("ComparisonDataEditor.fxml"));
567+
try {
568+
javafx.scene.Node content = loader.load();
569+
alert.getDialogPane().setContent(content);
570+
alert.showAndWait();
571+
} catch (IOException e) {
572+
throw new RuntimeException(e);
573+
}
574+
575+
return null;
576+
}
577+
578+
public record ComparisonData(PvCompareMode pvCompareMode, Double tolerance){
579+
580+
}
546581
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.scene.control.*?>
4+
<?import javafx.scene.layout.*?>
5+
6+
<GridPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1"
7+
fx:controller="org.phoebus.applications.saveandrestore.ui.configuration.ComparisonDataEditorController">
8+
<children>
9+
<Label text="%comparisonMode" />
10+
<ComboBox fx:id="comparisonModeComboBox" prefWidth="150.0" GridPane.columnIndex="1" />
11+
<Label text="%comparisonTolerance" GridPane.rowIndex="1"/>
12+
<TextField fx:id="toleranceTextField" prefWidth="150.0" GridPane.rowIndex="1" GridPane.columnIndex="1" />
13+
</children>
14+
<columnConstraints>
15+
<ColumnConstraints />
16+
<ColumnConstraints />
17+
</columnConstraints>
18+
<rowConstraints>
19+
<RowConstraints />
20+
<RowConstraints/>
21+
</rowConstraints>
22+
</GridPane>

0 commit comments

Comments
 (0)