Skip to content

Commit 5190fa8

Browse files
committed
Decided to support only single node selection of for save&restore create log
1 parent 59ee623 commit 5190fa8

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,18 +1463,15 @@ public void configureContextMenu(ContextMenuEvent e) {
14631463
ObservableList<? extends TreeItem<Node>> selectedItems = browserSelectionModel.getSelectedItems();
14641464
selectedItemsProperty.setAll(selectedItems.stream().map(TreeItem::getValue).toList());
14651465

1466-
// Need to construct the selection carefully in order to be able to match an AdapterFactory to it.
1467-
List<List<Node>> selection = new ArrayList<>();
1468-
List<Node> nodes = new ArrayList<>();
1469-
nodes.addAll(selectedItemsProperty);
1470-
selection.add(nodes);
1471-
SelectionService.getInstance().setSelection(SaveAndRestoreApplication.NAME, selection);
1472-
14731466
contextMenu.getItems().clear();
14741467
contextMenu.getItems().addAll(menuItems);
1468+
1469+
// Add log entry menu item...
1470+
SelectionService.getInstance().setSelection(SaveAndRestoreApplication.NAME,
1471+
selectedItemsProperty.size() == 1 ? List.of(selectedItemsProperty.get(0)) : Collections.emptyList());
14751472
List<ContextMenuEntry> supported = ContextMenuService.getInstance().listSupportedContextMenuEntries();
14761473

1477-
supported.stream().forEach(action -> {
1474+
supported.forEach(action -> {
14781475
MenuItem menuItem = new MenuItem(action.getName(), new ImageView(action.getIcon()));
14791476
menuItem.setOnAction((ee) -> {
14801477
try {
@@ -1483,7 +1480,8 @@ public void configureContextMenu(ContextMenuEvent e) {
14831480
logger.log(Level.WARNING, "Failed to execute " + action.getName() + " from display builder.", ex);
14841481
}
14851482
});
1486-
menuItem.disableProperty().set(selectedItemsProperty.isEmpty());
1483+
//... but disable if selection count != 1
1484+
menuItem.disableProperty().set(selectedItemsProperty.size() != 1);
14871485
contextMenu.getItems().add(menuItem);
14881486
});
14891487

app/save-and-restore/logging/src/main/java/org/phoebus/applications/saveandrestore/logging/NodeSelectionAdapterFactory.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.phoebus.logbook.LogEntryImpl;
1111
import org.phoebus.logbook.PropertyImpl;
1212

13-
import java.util.ArrayList;
1413
import java.util.Arrays;
1514
import java.util.HashMap;
1615
import java.util.List;
@@ -20,14 +19,14 @@
2019
import static org.phoebus.logbook.LogEntryImpl.LogEntryBuilder.log;
2120

2221
/**
23-
* Adapts a selection of save&restore {@link Node}s to a log entry. Each selected {@link Node}
24-
* is added as a separate property with a name constructed from the {@link Node}'s name.
22+
* Adapts a selection of save&restore {@link Node} to a log entry. The {@link Node} is
23+
* added as a resource property.
2524
*/
2625
public class NodeSelectionAdapterFactory implements AdapterFactory {
2726

2827
@Override
2928
public Class getAdaptableObject() {
30-
return ArrayList.class;
29+
return Node.class;
3130
}
3231

3332
@Override
@@ -37,17 +36,13 @@ public List<? extends Class> getAdapterList() {
3736

3837
@Override
3938
public <T> Optional<T> adapt(Object adaptableObject, Class<T> adapterType) {
40-
List<Node> selectedNodes = (List<Node>) adaptableObject;
41-
List<Map> properties = new ArrayList<>();
42-
selectedNodes.forEach(n -> {
43-
Map<String, String> map = new HashMap<>();
44-
map.put("file", "file:/" + n.getUniqueId() + "?app=saveandrestore");
45-
map.put("name", n.getName());
46-
properties.add(map);
47-
});
48-
49-
LogEntryImpl.LogEntryBuilder log = log().description("");
50-
properties.forEach(m -> log.appendProperty(PropertyImpl.of("Save&restore resource " + m.get("name"), m)));
39+
Node selectedNode = (Node) adaptableObject;
40+
Map<String, String> map = new HashMap<>();
41+
map.put("file", "file:/" + selectedNode.getUniqueId() + "?app=saveandrestore");
42+
map.put("name", selectedNode.getName());
43+
44+
LogEntryImpl.LogEntryBuilder log = log().description("")
45+
.appendProperty(PropertyImpl.of("resource", map));
5146
return Optional.of(adapterType.cast(log.build()));
5247
}
5348
}

0 commit comments

Comments
 (0)