Skip to content

Commit c3692db

Browse files
authored
Merge pull request #2276 from ControlSystemStudio/refresh_databrowser
Add Data browser 'refresh' to 'stripchart' and clear live samples
2 parents d91ba90 + 053b7b2 commit c3692db

File tree

12 files changed

+93
-11
lines changed

12 files changed

+93
-11
lines changed

app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/Controller.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2010-2021 Oak Ridge National Laboratory.
2+
* Copyright (c) 2010-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
@@ -591,6 +591,20 @@ private void doUpdate()
591591
}
592592
}
593593

594+
/** Clear live samples, re-fetch archived data */
595+
public void refresh()
596+
{
597+
// Clear live data buffer of PVs
598+
for (ModelItem item : model.getItems())
599+
if (item instanceof PVItem)
600+
{
601+
final PVItem pv = (PVItem) item;
602+
pv.getSamples().clear();
603+
}
604+
// Re-fetch archived data
605+
scheduleArchiveRetrieval();
606+
}
607+
594608
/** Stop scrolling and model items
595609
* @throws IllegalStateException when not running
596610
*/

app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/Perspective.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2018-2020 Oak Ridge National Laboratory.
2+
* Copyright (c) 2018-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
@@ -185,7 +185,7 @@ private void createContextMenu()
185185
showBottomTab(waveform_tab);
186186
});
187187
final MenuItem refresh = new MenuItem(Messages.Refresh, Activator.getIcon("refresh_remote"));
188-
refresh.setOnAction(event -> controller.scheduleArchiveRetrieval());
188+
refresh.setOnAction(event -> controller.refresh());
189189

190190
final ContextMenu menu = new ContextMenu();
191191
final ObservableList<MenuItem> items = menu.getItems();

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

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011-2020 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
@@ -96,12 +96,17 @@ public boolean configureFromXML(final ModelReader model_reader, final Widget wid
9696
public static final WidgetPropertyDescriptor<Instant> runtimePropOpenFull =
9797
CommonWidgetProperties.newRuntimeEvent("open_full", "Open Full Data Browser");
9898

99+
/** 'refresh_plot' */
100+
public static final WidgetPropertyDescriptor<Instant> runtimePropRefreshPlot =
101+
CommonWidgetProperties.newRuntimeEvent("refresh_plot", "Refresh Plot");
102+
99103
private volatile WidgetProperty<Boolean> show_toolbar;
100104
private volatile WidgetProperty<String> file;
101105
private volatile RuntimeEventProperty configure;
102106
private volatile WidgetProperty<String> selection_value_pv;
103107
private volatile WidgetProperty<VType> selection_value;
104108
private volatile RuntimeEventProperty open_full;
109+
private volatile RuntimeEventProperty refresh_plot;
105110

106111
/** Constructor */
107112
public DataBrowserWidget()
@@ -119,6 +124,7 @@ protected void defineProperties(final List<WidgetProperty<?>> properties)
119124
properties.add(selection_value_pv = propSelectionValuePV.createProperty(this, ""));
120125
properties.add(selection_value = propSelectionValue.createProperty(this, null));
121126
properties.add(open_full = (RuntimeEventProperty) runtimePropOpenFull.createProperty(this, null));
127+
properties.add(refresh_plot = (RuntimeEventProperty) runtimePropRefreshPlot.createProperty(this, null));
122128
}
123129

124130
@Override
@@ -189,4 +195,10 @@ public RuntimeEventProperty runtimePropOpenFull()
189195
{
190196
return open_full;
191197
}
198+
199+
/** @return 'refresh_plot' property */
200+
public RuntimeEventProperty runtimePropRefreshPlot()
201+
{
202+
return refresh_plot;
203+
}
192204
}

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

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2019 Oak Ridge National Laboratory.
2+
* Copyright (c) 2019-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
@@ -436,6 +436,7 @@ private boolean handleLegacyTraces(final ModelReader model_reader, final Stripch
436436
private volatile ArrayWidgetProperty<TraceWidgetProperty> traces;
437437
private volatile RuntimeEventProperty configure;
438438
private volatile RuntimeEventProperty open_full;
439+
private volatile RuntimeEventProperty refresh_plot;
439440

440441
/** Constructor */
441442
public StripchartWidget()
@@ -467,6 +468,7 @@ protected void defineProperties(final List<WidgetProperty<?>> properties)
467468
properties.add(traces = propTraces.createProperty(this, Arrays.asList(new TraceWidgetProperty(this, 0))));
468469
properties.add(configure = (RuntimeEventProperty) runtimePropConfigure.createProperty(this, null));
469470
properties.add(open_full = (RuntimeEventProperty) DataBrowserWidget.runtimePropOpenFull.createProperty(this, null));
471+
properties.add(refresh_plot = (RuntimeEventProperty) DataBrowserWidget.runtimePropRefreshPlot.createProperty(this, null));
470472
}
471473

472474
@Override
@@ -578,4 +580,10 @@ public RuntimeEventProperty runtimePropOpenDataBrowser()
578580
{
579581
return open_full;
580582
}
583+
584+
/** @return 'refresh_plot' property */
585+
public RuntimeEventProperty runtimePropRefreshPlot()
586+
{
587+
return refresh_plot;
588+
}
581589
}

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/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/plots/StripchartRepresentation.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2019 Oak Ridge National Laboratory.
2+
* Copyright (c) 2019-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
@@ -72,8 +72,9 @@ public class StripchartRepresentation extends RegionBaseRepresentation<Pane, Str
7272
private final WidgetPropertyListener<Instant> config_dialog_listener = (p, o, n) -> plot.getPlot().showConfigurationDialog();
7373
private final WidgetPropertyListener<Instant> open_databrowser_listener = (p, o, n) ->
7474
DataBrowserRepresentation.openFullDataBrowser(model, model_widget.getMacrosOrProperties(), model_widget.propToolbar().getValue());
75+
private final WidgetPropertyListener<Instant> refresh_plot_listener = (p, o, n) -> controller.refresh();
7576

76-
77+
7778
@Override
7879
protected Pane createJFXNode() throws Exception
7980
{
@@ -124,6 +125,7 @@ protected void registerListeners()
124125
{
125126
model_widget.runtimePropConfigure().addPropertyListener(config_dialog_listener);
126127
model_widget.runtimePropOpenDataBrowser().addPropertyListener(open_databrowser_listener);
128+
model_widget.runtimePropRefreshPlot().addPropertyListener(refresh_plot_listener);
127129
}
128130

129131
// Initial update
@@ -153,6 +155,7 @@ protected void unregisterListeners()
153155
{
154156
model_widget.runtimePropConfigure().removePropertyListener(config_dialog_listener);
155157
model_widget.runtimePropOpenDataBrowser().removePropertyListener(open_databrowser_listener);
158+
model_widget.runtimePropRefreshPlot().removePropertyListener(refresh_plot_listener);
156159
}
157160

158161
super.unregisterListeners();
@@ -318,6 +321,7 @@ private void updateModel()
318321
item.setLineWidth(trace.traceWidth().getValue());
319322
item.setPointType(XYPlotRepresentation.map(trace.tracePointType().getValue()));
320323
item.setPointSize(trace.tracePointSize().getValue());
324+
item.useDefaultArchiveDataSources();
321325
try
322326
{
323327
model.addItem(item);

app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/Messages.java

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class Messages
2020
OpenInEditor,
2121
PrintImage,
2222
PrintPlot,
23+
Refresh,
2324
ReloadDisplay,
2425
SaveImageSnapshot,
2526
SavePlotSnapshot,

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

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

+15
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ public void run()
3939
}
4040
}
4141

42+
private class RefreshPlotAction extends RuntimeAction
43+
{
44+
RefreshPlotAction()
45+
{
46+
super(Messages.Refresh, "/icons/refresh_remote.png");
47+
}
48+
49+
@Override
50+
public void run()
51+
{
52+
widget.runtimePropRefreshPlot().trigger();
53+
}
54+
}
55+
4256
private final List<RuntimeAction> runtime_actions = new ArrayList<>(3);
4357

4458
@Override
@@ -50,6 +64,7 @@ public void initialize(final StripchartWidget widget)
5064
runtime_actions.add(new OpenDataBrowserAction());
5165
runtime_actions.add(new PrintWidgetAction(widget, Messages.PrintPlot));
5266
runtime_actions.add(new SaveWidgetSnapshotAction(widget, Messages.SavePlotSnapshot));
67+
runtime_actions.add(new RefreshPlotAction());
5368
}
5469

5570
@Override
Loading
Loading

app/display/runtime/src/main/resources/org/csstudio/display/builder/runtime/messages.properties

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ OpenDataBrowser=Open Data Browser
44
OpenInEditor=Open in Editor
55
PrintImage=Print Image...
66
PrintPlot=Print Plot...
7+
Refresh=Refresh Plot
78
ReloadDisplay=Re-load Display
89
SaveImageSnapshot=Save Image...
910
SavePlotSnapshot=Save Plot...

0 commit comments

Comments
 (0)