2929import javafx .collections .ListChangeListener ;
3030import javafx .collections .ObservableList ;
3131import javafx .fxml .FXML ;
32+ import javafx .fxml .FXMLLoader ;
3233import javafx .scene .control .Alert ;
3334import javafx .scene .control .Button ;
3435import javafx .scene .control .ButtonType ;
3536import javafx .scene .control .CheckBox ;
3637import javafx .scene .control .ContextMenu ;
38+ import javafx .scene .control .Dialog ;
3739import javafx .scene .control .Label ;
3840import javafx .scene .control .MenuItem ;
3941import javafx .scene .control .SelectionMode ;
6264import org .phoebus .applications .saveandrestore .ui .SaveAndRestoreBaseController ;
6365import org .phoebus .applications .saveandrestore .ui .SaveAndRestoreService ;
6466import org .phoebus .core .types .ProcessVariable ;
67+ import org .phoebus .framework .nls .NLS ;
6568import org .phoebus .framework .selection .SelectionService ;
6669import org .phoebus .ui .application .ContextMenuHelper ;
6770import org .phoebus .ui .dialog .ExceptionDetailsErrorDialog ;
6871import org .phoebus .ui .javafx .FocusUtil ;
6972import org .phoebus .ui .javafx .ImageCache ;
7073import org .phoebus .util .time .TimestampFormats ;
7174
75+ import javax .naming .Context ;
76+ import java .io .IOException ;
7277import java .time .Instant ;
7378import java .util .ArrayList ;
7479import java .util .Arrays ;
7580import java .util .Collections ;
7681import java .util .List ;
7782import java .util .Optional ;
83+ import java .util .ResourceBundle ;
7884import java .util .concurrent .Executor ;
7985import java .util .logging .Level ;
8086import 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}
0 commit comments