Skip to content

Commit 053b7b2

Browse files
committed
Add 'refresh' to context menu of databrowser widget
1 parent 3b31fa4 commit 053b7b2

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/plots/DataBrowserWidget.java

+8
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public boolean configureFromXML(final ModelReader model_reader, final Widget wid
106106
private volatile WidgetProperty<String> selection_value_pv;
107107
private volatile WidgetProperty<VType> selection_value;
108108
private volatile RuntimeEventProperty open_full;
109+
private volatile RuntimeEventProperty refresh_plot;
109110

110111
/** Constructor */
111112
public DataBrowserWidget()
@@ -123,6 +124,7 @@ protected void defineProperties(final List<WidgetProperty<?>> properties)
123124
properties.add(selection_value_pv = propSelectionValuePV.createProperty(this, ""));
124125
properties.add(selection_value = propSelectionValue.createProperty(this, null));
125126
properties.add(open_full = (RuntimeEventProperty) runtimePropOpenFull.createProperty(this, null));
127+
properties.add(refresh_plot = (RuntimeEventProperty) runtimePropRefreshPlot.createProperty(this, null));
126128
}
127129

128130
@Override
@@ -193,4 +195,10 @@ public RuntimeEventProperty runtimePropOpenFull()
193195
{
194196
return open_full;
195197
}
198+
199+
/** @return 'refresh_plot' property */
200+
public RuntimeEventProperty runtimePropRefreshPlot()
201+
{
202+
return refresh_plot;
203+
}
196204
}

app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/plots/DataBrowserRepresentation.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011-2018 Oak Ridge National Laboratory.
2+
* Copyright (c) 2011-2022 Oak Ridge National Laboratory.
33
* All rights reserved. This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v1.0
55
* which accompanies this distribution, and is available at
@@ -81,6 +81,10 @@ public class DataBrowserRepresentation extends RegionBaseRepresentation<Pane, Da
8181
*/
8282
private volatile Controller controller;
8383

84+
private final WidgetPropertyListener<Instant> config_dialog_listener = (p, o, n) -> plot.getPlot().showConfigurationDialog();
85+
private final WidgetPropertyListener<Instant> open_databrowser_listener = (p, o, n) ->
86+
DataBrowserRepresentation.openFullDataBrowser(model, model_widget.getMacrosOrProperties(), model_widget.propShowToolbar().getValue());
87+
private final WidgetPropertyListener<Instant> refresh_plot_listener = (p, o, n) -> controller.refresh();
8488

8589
/** Listener to model's selected sample, updates widget.propSelectionValue() */
8690
private class ModelSampleSelectionListener implements ModelListener
@@ -162,9 +166,9 @@ protected void registerListeners()
162166

163167
if (! toolkit.isEditMode())
164168
{
165-
model_widget.runtimePropConfigure().addPropertyListener((p, o, n) -> plot.getPlot().showConfigurationDialog());
166-
model_widget.runtimePropOpenFull().addPropertyListener((p, o, n) ->
167-
openFullDataBrowser(model, model_widget.getMacrosOrProperties(), model_widget.propShowToolbar().getValue()));
169+
model_widget.runtimePropConfigure().addPropertyListener(config_dialog_listener);
170+
model_widget.runtimePropOpenFull().addPropertyListener(open_databrowser_listener);
171+
model_widget.runtimePropRefreshPlot().addPropertyListener(refresh_plot_listener);
168172

169173
// Track selected sample?
170174
// 'selection_value_pv' must be set when runtime starts,
@@ -181,6 +185,14 @@ protected void unregisterListeners()
181185
model_widget.propHeight().removePropertyListener(sizeChangedListener);
182186
model_widget.propShowToolbar().removePropertyListener(optsChangedListener);
183187
model_widget.propFile().removePropertyListener(fileChangedListener);
188+
189+
if (! toolkit.isEditMode())
190+
{
191+
model_widget.runtimePropConfigure().removePropertyListener(config_dialog_listener);
192+
model_widget.runtimePropOpenFull().removePropertyListener(open_databrowser_listener);
193+
model_widget.runtimePropRefreshPlot().removePropertyListener(refresh_plot_listener);
194+
}
195+
184196
super.unregisterListeners();
185197
}
186198

app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/internal/DataBrowserWidgetRuntime.java

+15
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ public void run()
4949
}
5050
}
5151

52+
private class RefreshPlotAction extends RuntimeAction
53+
{
54+
RefreshPlotAction()
55+
{
56+
super(Messages.Refresh, "/icons/refresh_remote.png");
57+
}
58+
59+
@Override
60+
public void run()
61+
{
62+
widget.runtimePropRefreshPlot().trigger();
63+
}
64+
}
65+
5266
private final List<RuntimeAction> runtime_actions = new ArrayList<>(3);
5367
private volatile PV selection_pv = null;
5468
private volatile WidgetPropertyListener<VType> listener = null;
@@ -62,6 +76,7 @@ public void initialize(final DataBrowserWidget widget)
6276
runtime_actions.add(new OpenDataBrowserAction());
6377
runtime_actions.add(new PrintWidgetAction(widget, Messages.PrintPlot));
6478
runtime_actions.add(new SaveWidgetSnapshotAction(widget, Messages.SavePlotSnapshot));
79+
runtime_actions.add(new RefreshPlotAction());
6580
}
6681

6782
@Override

0 commit comments

Comments
 (0)