From 96663d8c51eb838bf591c2e3df3bbfcdffc17e8f Mon Sep 17 00:00:00 2001 From: kasemir Date: Fri, 23 Aug 2024 14:21:41 -0400 Subject: [PATCH] Data Browser: Properties tab context menu entry to show/hide all --- .../trends/databrowser3/Messages.java | 2 + .../ui/properties/ShowHideAllAction.java | 69 ++++++++++++++++++ .../databrowser3/ui/properties/TracesTab.java | 8 +- .../trends/databrowser3/messages.properties | 2 + core/ui/src/main/resources/icons/checkbox.png | Bin 0 -> 393 bytes .../resources/icons/checkbox_unchecked.png | Bin 0 -> 4946 bytes 6 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/ShowHideAllAction.java create mode 100644 core/ui/src/main/resources/icons/checkbox.png create mode 100644 core/ui/src/main/resources/icons/checkbox_unchecked.png diff --git a/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/Messages.java b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/Messages.java index d5c1f826fd..deb9463aa5 100644 --- a/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/Messages.java +++ b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/Messages.java @@ -190,6 +190,7 @@ public class Messages FormulaTabTT, Grid, GridLbl, + HideAll, HideTraceWarning, HideTraceWarningDetail, ImportActionLabelFmt, @@ -269,6 +270,7 @@ public class Messages SelectTrace, SeverityColumn, SeverityStatusFmt, + ShowAll, StartEndDialogBtn, StartEndDialogTT, StartTimeLbl, diff --git a/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/ShowHideAllAction.java b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/ShowHideAllAction.java new file mode 100644 index 0000000000..86f3aa407c --- /dev/null +++ b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/ShowHideAllAction.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2024 Oak Ridge National Laboratory. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + ******************************************************************************/ +package org.csstudio.trends.databrowser3.ui.properties; + +import org.csstudio.trends.databrowser3.Activator; +import org.csstudio.trends.databrowser3.Messages; +import org.csstudio.trends.databrowser3.model.AxisConfig; +import org.csstudio.trends.databrowser3.model.Model; +import org.csstudio.trends.databrowser3.model.ModelItem; +import org.phoebus.ui.undo.UndoableAction; +import org.phoebus.ui.undo.UndoableActionManager; + +import javafx.scene.control.MenuItem; + +/** MenuItem to show or hide all items + * @author Kay Kasemir + */ +@SuppressWarnings("nls") +public class ShowHideAllAction extends MenuItem +{ + private class ShowHideAll extends UndoableAction + { + final private Model model; + final private boolean show; + + ShowHideAll(final UndoableActionManager operations_manager, + final Model model, final boolean show) + { + super(show ? Messages.ShowAll : Messages.HideAll); + this.model = model; + this.show = show; + operations_manager.execute(this); + } + + @Override + public void run() + { + for (ModelItem item : model.getItems()) + item.setVisible(show); + for (AxisConfig axis : model.getAxes()) + axis.setVisible(model.hasAxisActiveItems(axis)); + } + + @Override + public void undo() + { + for (ModelItem item : model.getItems()) + item.setVisible(!show); + for (AxisConfig axis : model.getAxes()) + axis.setVisible(model.hasAxisActiveItems(axis)); + } + } + + /** @param model Model + * @param undo Undo manager + * @param show Show all, or hide all? + */ + public ShowHideAllAction(final Model model, final UndoableActionManager undo, final boolean show) + { + super(show ? Messages.ShowAll : Messages.HideAll, + Activator.getIcon(show ? "checkbox" : "checkbox_unchecked")); + setOnAction(event -> new ShowHideAll(undo, model, show)); + } +} diff --git a/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/TracesTab.java b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/TracesTab.java index ed8d995ae0..c8915e07fc 100644 --- a/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/TracesTab.java +++ b/app/databrowser/src/main/java/org/csstudio/trends/databrowser3/ui/properties/TracesTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2018-2020 Oak Ridge National Laboratory. + * Copyright (c) 2018-2024 Oak Ridge National Laboratory. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -733,6 +733,12 @@ private void createContextMenu() items.add(new EditMultipleItemsAction(trace_table, model, undo, selection)); items.add(new SeparatorMenuItem()); + + + items.add(new ShowHideAllAction(model, undo, true)); + items.add(new ShowHideAllAction(model, undo, false)); + + items.add(new SeparatorMenuItem()); // Add PV-based entries final List pvs = selection.stream() diff --git a/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages.properties b/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages.properties index f5f6059695..549603f16f 100644 --- a/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages.properties +++ b/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages.properties @@ -170,6 +170,7 @@ FormulaTabVariable=Variable FormulaTabTT=Double-click input to add to formula, or edit variable name Grid=Grid GridLbl=Grid: +HideAll=Hide All HideTraceWarning=Hide Trace? HideTraceWarningDetail=Hiding a trace can be useful to...\na) temporarily reduce the number of traces on the plot\nb) hide formula input PVs where you are interested in the formula,\n but not the individual inputs\n\nNote however that the Databrowser will still sample data for the hidden trace and request archived data for it so that it's 'ready' when you want to show it again.\n\nIf you don't need this item at all, you should delete it instead of hiding it.\n\nHide trace? ImportActionLabelFmt=Import {0} @@ -249,6 +250,7 @@ SearchTT=Start the channel name search SelectTrace=Select trace to see data sources SeverityColumn=Severity SeverityStatusFmt={0} / {1} +ShowAll=Show All StartEndDialogBtn=... StartEndDialogTT=Open start/end time dialog box StartTimeLbl=Start Time: diff --git a/core/ui/src/main/resources/icons/checkbox.png b/core/ui/src/main/resources/icons/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4906fef59b9d0ded2f51691cf0348a5b8d7ac3 GIT binary patch literal 393 zcmV;40e1e0P)Px$LrFwIR5%fxl1nQ_Q51%cODO}T`~nkq$)y-FQ{)%;1qM=v=0;{F3{1pdFd#{k z!pO+P#E?>yYc9|8Is3G2-}wgLTTgrKb=F#Y?Xy>w)u(CF4xqC+%J0HnhjwU){IU7X z<`sIuxSkN$!R8K@;Sd_3n!a%ELN^@2BvfS5LT=YumiTBFPjDOup0gQ_9aZdpe70|a zMYw>XRj*>(Z7>e0T5#-u>js=axIX4@wNchB@Pt)}wZ=yOHMGJATtXq+vA_(xgTW@L zDe&igz!<2~0)Cu>H?YVi+~)QQYf#Ms2017%U=cZmCI~7Dl)d*Jk+bj&k1!9P@K5n1 zrU8!XK%Q}vWcp9+tawJ-9nz7=#5CEEKBycRI&i`qrUy8Kva5Nr$ZOYU;su&Q_TQV00000NkvXXu0mjf@xrT+ literal 0 HcmV?d00001 diff --git a/core/ui/src/main/resources/icons/checkbox_unchecked.png b/core/ui/src/main/resources/icons/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..56b7608773293417586942168d22559aac4984b9 GIT binary patch literal 4946 zcmeHKc~}$I77r+^D1so0JPkn>ktCCqBqeM~G${rVq9UL;nG6sm`-DVjL8(>*6%m&f zu|=LJ?pqZXe9GnmxT2zU!xdZr(N2(5>w!;js?go&Zf;dfc|{H-_eC(lhjMn&@7BByO}FSm{>_uk+*;+v(3A<3^6 zgxAFg=ll|J*2#Odr%TKQwx9KQ1@h-!-a&bnsr}H1$%Jkqr$?Q7c2npq)4e!?3 zCGGP{H#Yqz3#y&yJHC_=e9ZBIhwYeQn0tBabFC&Lp*rnxg~t8mJ-cn9|9ZUKY~Z~- zT%8X&j*CA3MoW4kiuShFU;(zmwxLT(To09oQfEDABYB@-Pvbu-yEv>MgP(Y+V9hh3 z|IA^}J*!@KB-V?_yyk^BGGATL)mOCo9y;A_8If`7UHZeP!Of-3{&VVux?ndw5gikz z`eD$uWA&89DQzy~1I^iwuU;5@y#&cmEnj9&5f!g0k0}!&oue2Fe=_dYI5ggfP1}&C zx#MFKA}LCpe=}@NnFTx6{`Q{p9S5Fv#NijWMn<98lxp9ssWpaGtqIqQ{NAh|Ut9O2 zL|w9a!VKc2;XU(wrgjfZ{1cgxU^UQnBy$AGV#&=R!`5B=H9j=$yrn>pRUEQ6(>*k| zCCf(YMxs#WsO`R58>#er3TODA{ z6!_0B+juo(jYmfL)|BYW+c)hL%w1Ew_hB({*PuN`vDEz@jg32E^EbrAYJW@1N$KUPx*5}LriTrEhts5~qp`_m)>zqVy85y z;q8rI{~dq&XNPBYwfiOo2HYKdcZ)cpwQ{ltED(7H`;KO`W!L5>teu&8FF}3v9L;M2 zhcVg1bGW@Cpn@{q-M?$BMlyv_-<_N=jiu5|YnXba(l-lcZQc=}TmNvVb8M|M-*&|m zfgKu~b75+$;84-5Z@i^v;o!M%RGP9IU&J-^{!vs*-K9ZnZm(%-)h zdX_oi_A0A4$^|sMD=3>mVZz!Ke+QTffKTi1^z7rlRvGrDTG_&iAe z9<-_9a?p-q#gjOQNw4B#0<5%G0QXV0(O!R+hwx=1=H@0B>AE3WljUWU|3vAQ@;Rl{T47 zVYAs}h)SkXiNJ!Wo2SHJBT=dIGC}lW@KGJ2m8&tiN{KgN!cvtU;}Qr!kN*&#LM;}5 zgjeeNSO9#Gjj)!Fi?u1=0dbt=6UK?P~367%X0Awxd; ztM%Gcb2>7FjHaRrV5$SNQa+nKS!oQbdjXUk|b7^MaFgAyrq7_3B46BGa^$pH?8BuVKkHk-(z$k;?W3z89G8C^=0$pWPe z2xbRDENMT8$yzz6N;tKDR3<1HfI?(U1`Vad0EK~qXrLq_OoNz2DG*Z-I-MnD)67sZ zgfl^EaumBeO~SZ0N3RX89Qz$s28sure71Uv^(9eUQulW|`o?z$7+Ig@`nWA|uifz%ok;L&QLYjj$joi%Ey6pQGzk zNtglFqG8D($=*cpy$s;}%ruVs+}@CanmB@}bRxteQfU$jodeN0G$s)O1BgKGOPOr? zqCeyuME)OEg3Jc}S^)6tm4Vg*Iu-e2tLkITMC3pC>syU~a0USVb&@aQ_bXjr>G~oD zzR37%b$zAlix~JK}p47F(zyJGuO(vx$rK^Lv&5ur6t5LUo2uPE#X#wvqipHz;dg+AC#&)!IGzqjQU@okm|c zIXHcs#=>y54!6ub+j((p6?3^Wbo{K#4l?XCnN=|E%$?M5&G-`;Rih8H!<;(PEKh7- z0ylE=n||B8bw(m3W=|#cZUq~PeCC=tV(TLrTA4gxo44NuySgbWu+p18J5OHU;eLm^ zG7mrRY}#!1Y<-6+X ux2i3!=&~cW-(juHP0YN{WojOTJROzO%@i8$JU