d2a88e35c6490bb0d028648283ee85072e14890a
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / ged / actions / ShowHide.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Marcos CARDINOT
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12 package org.scilab.modules.gui.ged.actions;
13
14 import javax.swing.ImageIcon;
15 import org.scilab.modules.gui.bridge.pushbutton.SwingScilabPushButton;
16 import org.scilab.modules.gui.events.callback.CommonCallBack;
17 import org.scilab.modules.gui.ged.MessagesGED;
18 import org.scilab.modules.gui.ged.SwingInspector;
19 import org.scilab.modules.gui.pushbutton.PushButton;
20 import org.scilab.modules.gui.pushbutton.ScilabPushButton;
21
22 /**
23  * Show/Hide button class.
24  *
25  * @author Marcos CARDINOT <mcardinot@gmail.com>
26  */
27 public class ShowHide extends CommonCallBack {
28     private static boolean click = true;
29     private static PushButton button;
30
31     /**
32      * Constructor.
33      *
34      * @param name the name of the action.
35      */
36     public ShowHide(String name) {
37         super(name);
38     }
39
40     /**
41      * {@inheritDoc}
42      */
43     @Override
44     public void callBack() {
45         toggleButton();
46     }
47
48     /**
49      * Create a button for a tool bar.
50      *
51      * @param title tooltip for the button.
52      * @return the button.
53      */
54     public static PushButton createButton(String title) {
55         button = ScilabPushButton.createPushButton();
56         ((SwingScilabPushButton) button.getAsSimplePushButton()).addActionListener(new ShowHide(title));
57         button.setToolTipText(title);
58         setIcon(1);
59
60         return button;
61     }
62
63     /**
64      * Implements a toggle button.
65      */
66     public static void toggleButton() {
67         if (click) {
68             //Hide all sections.
69             action(true);
70             //Update the icon and tooltip.
71             setIcon(0);
72             button.setToolTipText(MessagesGED.show);
73
74             click = false;
75         } else {
76             //Show all sections.
77             action(false);
78             //Update the icon and tooltip.
79             setIcon(1);
80             button.setToolTipText(MessagesGED.hide);
81
82             click = true;
83         }
84     }
85
86     /**
87     * Set the Status of Button.
88     * @return true = clicked
89     */
90     public static void setStatus(boolean clicked) {
91         click = clicked;
92         toggleButton();
93     }
94
95     /**
96     * Get the Status of Button.
97     * @return true = clicked
98     */
99     public static boolean getStatus() {
100         return click;
101     }
102
103     /**
104      * Action Button.
105      *
106      * @param hide Boolean.
107      */
108     public static void action(boolean hide) {
109         arc(hide);
110         axes(hide);
111         champ(hide);
112         datatip(hide);
113         fec(hide);
114         figure(hide);
115         imageplot(hide);
116         label(hide);
117         legend(hide);
118         polyline(hide);
119         rectangle(hide);
120         segs(hide);
121         surface(hide);
122     }
123
124     public static void arc(boolean hide) {
125         try {
126             org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().setVisibility(!hide);
127             org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().setVisibility(!hide);
128             org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().setVisibility(!hide);
129             org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().setVisibility(!hide);
130             org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().setVisibility(!hide);
131             org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().setVisibility(!hide);
132             org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().setVisibility(!hide);
133         } catch (NullPointerException e1) {
134         } catch (NoSuchMethodError e2) { }
135     }
136
137     public static void axes(boolean hide) {
138         try {
139             org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().setVisibility(!hide);
140             org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().setVisibility(!hide);
141             org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().setVisibility(!hide);
142             org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().setVisibility(!hide);
143             org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().setVisibility(!hide);
144             org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().setVisibility(!hide);
145             org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().setVisibility(!hide);
146         } catch (NullPointerException e1) {
147         } catch (NoSuchMethodError e2) { }
148     }
149
150     public static void champ(boolean hide) {
151         try {
152             org.scilab.modules.gui.ged.graphic_objects.champ.DataProperties.getInstance().setVisibility(!hide);
153             org.scilab.modules.gui.ged.graphic_objects.champ.Style.getInstance().setVisibility(!hide);
154         } catch (NullPointerException e1) {
155         } catch (NoSuchMethodError e2) { }
156     }
157
158     public static void datatip(boolean hide) {
159         try {
160             org.scilab.modules.gui.ged.graphic_objects.datatip.BaseProperties.getInstance().setVisibility(!hide);
161             org.scilab.modules.gui.ged.graphic_objects.datatip.DataProperties.getInstance().setVisibility(!hide);
162             org.scilab.modules.gui.ged.graphic_objects.datatip.Label.getInstance().setVisibility(!hide);
163             org.scilab.modules.gui.ged.graphic_objects.datatip.Mark.getInstance().setVisibility(!hide);
164         } catch (NullPointerException e1) {
165         } catch (NoSuchMethodError e2) { }
166     }
167
168     public static void fec(boolean hide) {
169         try {
170             org.scilab.modules.gui.ged.graphic_objects.fec.DataProperties.getInstance().setVisibility(!hide);
171             org.scilab.modules.gui.ged.graphic_objects.fec.Style.getInstance().setVisibility(!hide);
172         } catch (NullPointerException e1) {
173         } catch (NoSuchMethodError e2) { }
174     }
175
176     public static void figure(boolean hide) {
177         try {
178             org.scilab.modules.gui.ged.graphic_objects.figure.BaseProperties.getInstance().setVisibility(!hide);
179             org.scilab.modules.gui.ged.graphic_objects.figure.DataProperties.getInstance().setVisibility(!hide);
180             org.scilab.modules.gui.ged.graphic_objects.figure.Control.getInstance().setVisibility(!hide);
181             org.scilab.modules.gui.ged.graphic_objects.figure.Style.getInstance().setVisibility(!hide);
182         } catch (NullPointerException e1) {
183         } catch (NoSuchMethodError e2) { }
184     }
185
186     public static void imageplot(boolean hide) {
187         try {
188             org.scilab.modules.gui.ged.graphic_objects.imageplot.BaseProperties.getInstance().setVisibility(!hide);
189             org.scilab.modules.gui.ged.graphic_objects.imageplot.DataProperties.getInstance().setVisibility(!hide);
190         } catch (NullPointerException e1) {
191         } catch (NoSuchMethodError e2) { }
192     }
193
194     public static void label(boolean hide) {
195         try {
196             org.scilab.modules.gui.ged.graphic_objects.label.BaseProperties.getInstance().setVisibility(!hide);
197             org.scilab.modules.gui.ged.graphic_objects.label.Font.getInstance().setVisibility(!hide);
198             org.scilab.modules.gui.ged.graphic_objects.label.Position.getInstance().setVisibility(!hide);
199             org.scilab.modules.gui.ged.graphic_objects.label.Style.getInstance().setVisibility(!hide);
200         } catch (NullPointerException e1) {
201         } catch (NoSuchMethodError e2) { }
202     }
203
204     public static void legend(boolean hide) {
205         try {
206             org.scilab.modules.gui.ged.graphic_objects.legend.BaseProperties.getInstance().setVisibility(!hide);
207             org.scilab.modules.gui.ged.graphic_objects.legend.DataProperties.getInstance().setVisibility(!hide);
208             org.scilab.modules.gui.ged.graphic_objects.legend.Font.getInstance().setVisibility(!hide);
209             org.scilab.modules.gui.ged.graphic_objects.legend.Position.getInstance().setVisibility(!hide);
210             org.scilab.modules.gui.ged.graphic_objects.legend.Style.getInstance().setVisibility(!hide);
211         } catch (NullPointerException e1) {
212         } catch (NoSuchMethodError e2) { }
213     }
214
215     public static void polyline(boolean hide) {
216         try {
217             org.scilab.modules.gui.ged.graphic_objects.polyline.BaseProperties.getInstance().setVisibility(!hide);
218             org.scilab.modules.gui.ged.graphic_objects.polyline.DataProperties.getInstance().setVisibility(!hide);
219             org.scilab.modules.gui.ged.graphic_objects.polyline.Mark.getInstance().setVisibility(!hide);
220             org.scilab.modules.gui.ged.graphic_objects.polyline.Shift.getInstance().setVisibility(!hide);
221             org.scilab.modules.gui.ged.graphic_objects.polyline.Style.getInstance().setVisibility(!hide);
222         } catch (NullPointerException e1) {
223         } catch (NoSuchMethodError e2) { }
224     }
225
226     public static void rectangle(boolean hide) {
227         try {
228             org.scilab.modules.gui.ged.graphic_objects.rectangle.DataProperties.getInstance().setVisibility(!hide);
229             org.scilab.modules.gui.ged.graphic_objects.rectangle.Mark.getInstance().setVisibility(!hide);
230             org.scilab.modules.gui.ged.graphic_objects.rectangle.Style.getInstance().setVisibility(!hide);
231         } catch (NullPointerException e1) {
232         } catch (NoSuchMethodError e2) { }
233     }
234
235     public static void segs(boolean hide) {
236         try {
237             org.scilab.modules.gui.ged.graphic_objects.segs.DataProperties.getInstance().setVisibility(!hide);
238             org.scilab.modules.gui.ged.graphic_objects.segs.Mark.getInstance().setVisibility(!hide);
239             org.scilab.modules.gui.ged.graphic_objects.segs.Style.getInstance().setVisibility(!hide);
240         } catch (NullPointerException e1) {
241         } catch (NoSuchMethodError e2) { }
242     }
243
244     public static void surface(boolean hide) {
245         try {
246             org.scilab.modules.gui.ged.graphic_objects.surface.BaseProperties.getInstance().setVisibility(!hide);
247             org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().setVisibility(!hide);
248             org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().setVisibility(!hide);
249             org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().setVisibility(!hide);
250         } catch (NullPointerException e1) {
251         } catch (NoSuchMethodError e2) { }
252     }
253
254     /**
255      * Check the status of the buttons of all sections.
256      * Updates the button's icon in the toolbar
257      */
258     public static void checkAllButtons(String type) {
259         try {
260             if("axes".equals(type)) {
261                 boolean A = org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().getStatus();
262                 boolean B = org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().getStatus();
263                 boolean C = org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().getStatus();
264                 boolean D = org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().getStatus();
265                 boolean E = org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().getStatus();
266                 boolean F = org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().getStatus();
267                 boolean G = org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().getStatus();
268                 if (A && B && C && D && E && F && G)
269                     setStatus(false);
270                 else if (!A && !B && !C && !D && !E && !F && !G)
271                     setStatus(true);
272             } else if("champ".equals(type)) {
273                 boolean A = org.scilab.modules.gui.ged.graphic_objects.champ.DataProperties.getInstance().getStatus();
274                 boolean B = org.scilab.modules.gui.ged.graphic_objects.champ.Style.getInstance().getStatus();
275                 if (A && B)
276                     setStatus(false);
277                 else if (!A && !B)
278                     setStatus(true);
279             } else if("datatip".equals(type)) {
280                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.datatip.BaseProperties.getInstance().getStatus();
281                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.datatip.DataProperties.getInstance().getStatus();
282                 boolean LA = org.scilab.modules.gui.ged.graphic_objects.datatip.Label.getInstance().getStatus();
283                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.datatip.Mark.getInstance().getStatus();
284                 if (BP && DP && LA && MK)
285                     setStatus(false);
286                 else if (!BP && !DP && !LA && !MK)
287                     setStatus(true);
288             } else if("fec".equals(type)) {
289                 boolean A = org.scilab.modules.gui.ged.graphic_objects.fec.DataProperties.getInstance().getStatus();
290                 boolean B = org.scilab.modules.gui.ged.graphic_objects.fec.Style.getInstance().getStatus();
291                 if (A && B)
292                     setStatus(false);
293                 else if (!A && !B)
294                     setStatus(true);
295             } else if("figure".equals(type)) {
296                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.figure.BaseProperties.getInstance().getStatus();
297                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.figure.DataProperties.getInstance().getStatus();
298                 boolean CT = org.scilab.modules.gui.ged.graphic_objects.figure.Control.getInstance().getStatus();
299                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.figure.Style.getInstance().getStatus();
300                 if (BP && DP && CT && ST)
301                     setStatus(false);
302                 else if (!BP && !DP && !CT && !ST)
303                     setStatus(true);
304             } else if("imageplot".equals(type)) {
305                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.imageplot.BaseProperties.getInstance().getStatus();
306                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.imageplot.DataProperties.getInstance().getStatus();
307                 if (BP && DP)
308                     setStatus(false);
309                 else if (!BP && !DP)
310                     setStatus(true);
311             } else if("label".equals(type)) {
312                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.label.BaseProperties.getInstance().getStatus();
313                 boolean FT = org.scilab.modules.gui.ged.graphic_objects.label.Font.getInstance().getStatus();
314                 boolean PO = org.scilab.modules.gui.ged.graphic_objects.label.Position.getInstance().getStatus();
315                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.label.Style.getInstance().getStatus();
316                 if (BP && FT && PO && ST)
317                     setStatus(false);
318                 else if (!BP && !FT && !PO && !ST)
319                     setStatus(true);
320             } else if("legend".equals(type)) {
321                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.legend.BaseProperties.getInstance().getStatus();
322                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.legend.DataProperties.getInstance().getStatus();
323                 boolean FT = org.scilab.modules.gui.ged.graphic_objects.legend.Font.getInstance().getStatus();
324                 boolean PO = org.scilab.modules.gui.ged.graphic_objects.legend.Position.getInstance().getStatus();
325                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.legend.Style.getInstance().getStatus();
326                 if (BP && DP && FT && PO && ST)
327                     setStatus(false);
328                 else if (!BP && !DP && !FT && !PO && !ST)
329                     setStatus(true);
330             } else if("polyline".equals(type)) {
331                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.polyline.BaseProperties.getInstance().getStatus();
332                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.polyline.DataProperties.getInstance().getStatus();
333                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.polyline.Mark.getInstance().getStatus();
334                 boolean SH = org.scilab.modules.gui.ged.graphic_objects.polyline.Shift.getInstance().getStatus();
335                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.polyline.Style.getInstance().getStatus();
336                 if (BP && DP && MK && SH && ST)
337                     setStatus(false);
338                 else if (!BP && !DP && !MK && !SH && !ST)
339                     setStatus(true);
340             } else if("rectangle".equals(type)) {
341                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.rectangle.DataProperties.getInstance().getStatus();
342                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.rectangle.Mark.getInstance().getStatus();
343                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.rectangle.Style.getInstance().getStatus();
344                 if (DP && MK && ST)
345                     setStatus(false);
346                 else if (!DP && !MK && !ST)
347                     setStatus(true);
348             } else if("segs".equals(type)) {
349                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().getStatus();
350                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().getStatus();
351                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().getStatus();
352                 if (DP && MK && ST)
353                     setStatus(false);
354                 else if (!DP && !MK && !ST)
355                     setStatus(true);
356             } else if("surface".equals(type)) {
357                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.surface.BaseProperties.getInstance().getStatus();
358                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().getStatus();
359                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().getStatus();
360                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().getStatus();
361                 if (BP && DP && MK && ST)
362                     setStatus(false);
363                 else if (!BP && !DP && !MK && !ST)
364                     setStatus(true);
365             }
366         } catch (NoSuchMethodError e2) { }
367     }
368
369     /**
370     * Change the icons on buttons.
371     *
372     * @param intValue Integer value.
373     */
374     public static void setIcon(int intValue) {
375         switch (intValue) {
376             case 0:
377                 ((SwingScilabPushButton) button.getAsSimplePushButton())
378                         .setIcon(new ImageIcon(SwingInspector.icon_expand_all));
379                 break;
380             case 1:
381                 ((SwingScilabPushButton) button.getAsSimplePushButton())
382                         .setIcon(new ImageIcon(SwingInspector.icon_collapse_all));
383                 break;
384             default:
385                 ((SwingScilabPushButton) button.getAsSimplePushButton())
386                         .setIcon(new ImageIcon(SwingInspector.icon_expand_all));
387                 break;
388         }
389     }
390 }