GED: Arc Properties
[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.arc.BaseProperties.getInstance().setVisibility(!hide);
127             org.scilab.modules.gui.ged.graphic_objects.arc.DataProperties.getInstance().setVisibility(!hide);
128             org.scilab.modules.gui.ged.graphic_objects.arc.Style.getInstance().setVisibility(!hide);
129         } catch (NullPointerException e1) {
130         } catch (NoSuchMethodError e2) { }
131     }
132
133     public static void axes(boolean hide) {
134         try {
135             org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().setVisibility(!hide);
136             org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().setVisibility(!hide);
137             org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().setVisibility(!hide);
138             org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().setVisibility(!hide);
139             org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().setVisibility(!hide);
140             org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().setVisibility(!hide);
141             org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().setVisibility(!hide);
142         } catch (NullPointerException e1) {
143         } catch (NoSuchMethodError e2) { }
144     }
145
146     public static void champ(boolean hide) {
147         try {
148             org.scilab.modules.gui.ged.graphic_objects.champ.DataProperties.getInstance().setVisibility(!hide);
149             org.scilab.modules.gui.ged.graphic_objects.champ.Style.getInstance().setVisibility(!hide);
150         } catch (NullPointerException e1) {
151         } catch (NoSuchMethodError e2) { }
152     }
153
154     public static void datatip(boolean hide) {
155         try {
156             org.scilab.modules.gui.ged.graphic_objects.datatip.BaseProperties.getInstance().setVisibility(!hide);
157             org.scilab.modules.gui.ged.graphic_objects.datatip.DataProperties.getInstance().setVisibility(!hide);
158             org.scilab.modules.gui.ged.graphic_objects.datatip.Label.getInstance().setVisibility(!hide);
159             org.scilab.modules.gui.ged.graphic_objects.datatip.Mark.getInstance().setVisibility(!hide);
160         } catch (NullPointerException e1) {
161         } catch (NoSuchMethodError e2) { }
162     }
163
164     public static void fec(boolean hide) {
165         try {
166             org.scilab.modules.gui.ged.graphic_objects.fec.DataProperties.getInstance().setVisibility(!hide);
167             org.scilab.modules.gui.ged.graphic_objects.fec.Style.getInstance().setVisibility(!hide);
168         } catch (NullPointerException e1) {
169         } catch (NoSuchMethodError e2) { }
170     }
171
172     public static void figure(boolean hide) {
173         try {
174             org.scilab.modules.gui.ged.graphic_objects.figure.BaseProperties.getInstance().setVisibility(!hide);
175             org.scilab.modules.gui.ged.graphic_objects.figure.DataProperties.getInstance().setVisibility(!hide);
176             org.scilab.modules.gui.ged.graphic_objects.figure.Control.getInstance().setVisibility(!hide);
177             org.scilab.modules.gui.ged.graphic_objects.figure.Style.getInstance().setVisibility(!hide);
178         } catch (NullPointerException e1) {
179         } catch (NoSuchMethodError e2) { }
180     }
181
182     public static void imageplot(boolean hide) {
183         try {
184             org.scilab.modules.gui.ged.graphic_objects.imageplot.BaseProperties.getInstance().setVisibility(!hide);
185             org.scilab.modules.gui.ged.graphic_objects.imageplot.DataProperties.getInstance().setVisibility(!hide);
186         } catch (NullPointerException e1) {
187         } catch (NoSuchMethodError e2) { }
188     }
189
190     public static void label(boolean hide) {
191         try {
192             org.scilab.modules.gui.ged.graphic_objects.label.BaseProperties.getInstance().setVisibility(!hide);
193             org.scilab.modules.gui.ged.graphic_objects.label.Font.getInstance().setVisibility(!hide);
194             org.scilab.modules.gui.ged.graphic_objects.label.Position.getInstance().setVisibility(!hide);
195             org.scilab.modules.gui.ged.graphic_objects.label.Style.getInstance().setVisibility(!hide);
196         } catch (NullPointerException e1) {
197         } catch (NoSuchMethodError e2) { }
198     }
199
200     public static void legend(boolean hide) {
201         try {
202             org.scilab.modules.gui.ged.graphic_objects.legend.BaseProperties.getInstance().setVisibility(!hide);
203             org.scilab.modules.gui.ged.graphic_objects.legend.DataProperties.getInstance().setVisibility(!hide);
204             org.scilab.modules.gui.ged.graphic_objects.legend.Font.getInstance().setVisibility(!hide);
205             org.scilab.modules.gui.ged.graphic_objects.legend.Position.getInstance().setVisibility(!hide);
206             org.scilab.modules.gui.ged.graphic_objects.legend.Style.getInstance().setVisibility(!hide);
207         } catch (NullPointerException e1) {
208         } catch (NoSuchMethodError e2) { }
209     }
210
211     public static void polyline(boolean hide) {
212         try {
213             org.scilab.modules.gui.ged.graphic_objects.polyline.BaseProperties.getInstance().setVisibility(!hide);
214             org.scilab.modules.gui.ged.graphic_objects.polyline.DataProperties.getInstance().setVisibility(!hide);
215             org.scilab.modules.gui.ged.graphic_objects.polyline.Mark.getInstance().setVisibility(!hide);
216             org.scilab.modules.gui.ged.graphic_objects.polyline.Shift.getInstance().setVisibility(!hide);
217             org.scilab.modules.gui.ged.graphic_objects.polyline.Style.getInstance().setVisibility(!hide);
218         } catch (NullPointerException e1) {
219         } catch (NoSuchMethodError e2) { }
220     }
221
222     public static void rectangle(boolean hide) {
223         try {
224             org.scilab.modules.gui.ged.graphic_objects.rectangle.DataProperties.getInstance().setVisibility(!hide);
225             org.scilab.modules.gui.ged.graphic_objects.rectangle.Mark.getInstance().setVisibility(!hide);
226             org.scilab.modules.gui.ged.graphic_objects.rectangle.Style.getInstance().setVisibility(!hide);
227         } catch (NullPointerException e1) {
228         } catch (NoSuchMethodError e2) { }
229     }
230
231     public static void segs(boolean hide) {
232         try {
233             org.scilab.modules.gui.ged.graphic_objects.segs.DataProperties.getInstance().setVisibility(!hide);
234             org.scilab.modules.gui.ged.graphic_objects.segs.Mark.getInstance().setVisibility(!hide);
235             org.scilab.modules.gui.ged.graphic_objects.segs.Style.getInstance().setVisibility(!hide);
236         } catch (NullPointerException e1) {
237         } catch (NoSuchMethodError e2) { }
238     }
239
240     public static void surface(boolean hide) {
241         try {
242             org.scilab.modules.gui.ged.graphic_objects.surface.BaseProperties.getInstance().setVisibility(!hide);
243             org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().setVisibility(!hide);
244             org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().setVisibility(!hide);
245             org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().setVisibility(!hide);
246         } catch (NullPointerException e1) {
247         } catch (NoSuchMethodError e2) { }
248     }
249
250     /**
251      * Check the status of the buttons of all sections.
252      * Updates the button's icon in the toolbar
253      */
254     public static void checkAllButtons(String type) {
255         try {
256             if("axes".equals(type)) {
257                 boolean A = org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().getStatus();
258                 boolean B = org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().getStatus();
259                 boolean C = org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().getStatus();
260                 boolean D = org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().getStatus();
261                 boolean E = org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().getStatus();
262                 boolean F = org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().getStatus();
263                 boolean G = org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().getStatus();
264                 if (A && B && C && D && E && F && G)
265                     setStatus(false);
266                 else if (!A && !B && !C && !D && !E && !F && !G)
267                     setStatus(true);
268             } else if("arc".equals(type)) {
269                 boolean A = org.scilab.modules.gui.ged.graphic_objects.arc.BaseProperties.getInstance().getStatus();
270                 boolean B = org.scilab.modules.gui.ged.graphic_objects.arc.DataProperties.getInstance().getStatus();
271                 boolean C = org.scilab.modules.gui.ged.graphic_objects.arc.Style.getInstance().getStatus();
272                 if (A && B && C)
273                     setStatus(false);
274                 else if (!A && !B && !C)
275                     setStatus(true);
276             } else if("champ".equals(type)) {
277                 boolean A = org.scilab.modules.gui.ged.graphic_objects.champ.DataProperties.getInstance().getStatus();
278                 boolean B = org.scilab.modules.gui.ged.graphic_objects.champ.Style.getInstance().getStatus();
279                 if (A && B)
280                     setStatus(false);
281                 else if (!A && !B)
282                     setStatus(true);
283             } else if("datatip".equals(type)) {
284                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.datatip.BaseProperties.getInstance().getStatus();
285                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.datatip.DataProperties.getInstance().getStatus();
286                 boolean LA = org.scilab.modules.gui.ged.graphic_objects.datatip.Label.getInstance().getStatus();
287                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.datatip.Mark.getInstance().getStatus();
288                 if (BP && DP && LA && MK)
289                     setStatus(false);
290                 else if (!BP && !DP && !LA && !MK)
291                     setStatus(true);
292             } else if("fec".equals(type)) {
293                 boolean A = org.scilab.modules.gui.ged.graphic_objects.fec.DataProperties.getInstance().getStatus();
294                 boolean B = org.scilab.modules.gui.ged.graphic_objects.fec.Style.getInstance().getStatus();
295                 if (A && B)
296                     setStatus(false);
297                 else if (!A && !B)
298                     setStatus(true);
299             } else if("figure".equals(type)) {
300                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.figure.BaseProperties.getInstance().getStatus();
301                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.figure.DataProperties.getInstance().getStatus();
302                 boolean CT = org.scilab.modules.gui.ged.graphic_objects.figure.Control.getInstance().getStatus();
303                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.figure.Style.getInstance().getStatus();
304                 if (BP && DP && CT && ST)
305                     setStatus(false);
306                 else if (!BP && !DP && !CT && !ST)
307                     setStatus(true);
308             } else if("imageplot".equals(type)) {
309                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.imageplot.BaseProperties.getInstance().getStatus();
310                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.imageplot.DataProperties.getInstance().getStatus();
311                 if (BP && DP)
312                     setStatus(false);
313                 else if (!BP && !DP)
314                     setStatus(true);
315             } else if("label".equals(type)) {
316                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.label.BaseProperties.getInstance().getStatus();
317                 boolean FT = org.scilab.modules.gui.ged.graphic_objects.label.Font.getInstance().getStatus();
318                 boolean PO = org.scilab.modules.gui.ged.graphic_objects.label.Position.getInstance().getStatus();
319                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.label.Style.getInstance().getStatus();
320                 if (BP && FT && PO && ST)
321                     setStatus(false);
322                 else if (!BP && !FT && !PO && !ST)
323                     setStatus(true);
324             } else if("legend".equals(type)) {
325                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.legend.BaseProperties.getInstance().getStatus();
326                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.legend.DataProperties.getInstance().getStatus();
327                 boolean FT = org.scilab.modules.gui.ged.graphic_objects.legend.Font.getInstance().getStatus();
328                 boolean PO = org.scilab.modules.gui.ged.graphic_objects.legend.Position.getInstance().getStatus();
329                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.legend.Style.getInstance().getStatus();
330                 if (BP && DP && FT && PO && ST)
331                     setStatus(false);
332                 else if (!BP && !DP && !FT && !PO && !ST)
333                     setStatus(true);
334             } else if("polyline".equals(type)) {
335                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.polyline.BaseProperties.getInstance().getStatus();
336                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.polyline.DataProperties.getInstance().getStatus();
337                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.polyline.Mark.getInstance().getStatus();
338                 boolean SH = org.scilab.modules.gui.ged.graphic_objects.polyline.Shift.getInstance().getStatus();
339                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.polyline.Style.getInstance().getStatus();
340                 if (BP && DP && MK && SH && ST)
341                     setStatus(false);
342                 else if (!BP && !DP && !MK && !SH && !ST)
343                     setStatus(true);
344             } else if("rectangle".equals(type)) {
345                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.rectangle.DataProperties.getInstance().getStatus();
346                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.rectangle.Mark.getInstance().getStatus();
347                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.rectangle.Style.getInstance().getStatus();
348                 if (DP && MK && ST)
349                     setStatus(false);
350                 else if (!DP && !MK && !ST)
351                     setStatus(true);
352             } else if("segs".equals(type)) {
353                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().getStatus();
354                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().getStatus();
355                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().getStatus();
356                 if (DP && MK && ST)
357                     setStatus(false);
358                 else if (!DP && !MK && !ST)
359                     setStatus(true);
360             } else if("surface".equals(type)) {
361                 boolean BP = org.scilab.modules.gui.ged.graphic_objects.surface.BaseProperties.getInstance().getStatus();
362                 boolean DP = org.scilab.modules.gui.ged.graphic_objects.surface.DataProperties.getInstance().getStatus();
363                 boolean MK = org.scilab.modules.gui.ged.graphic_objects.surface.Mark.getInstance().getStatus();
364                 boolean ST = org.scilab.modules.gui.ged.graphic_objects.surface.Style.getInstance().getStatus();
365                 if (BP && DP && MK && ST)
366                     setStatus(false);
367                 else if (!BP && !DP && !MK && !ST)
368                     setStatus(true);
369             }
370         } catch (NoSuchMethodError e2) { }
371     }
372
373     /**
374     * Change the icons on buttons.
375     *
376     * @param intValue Integer value.
377     */
378     public static void setIcon(int intValue) {
379         switch (intValue) {
380             case 0:
381                 ((SwingScilabPushButton) button.getAsSimplePushButton())
382                         .setIcon(new ImageIcon(SwingInspector.icon_expand_all));
383                 break;
384             case 1:
385                 ((SwingScilabPushButton) button.getAsSimplePushButton())
386                         .setIcon(new ImageIcon(SwingInspector.icon_collapse_all));
387                 break;
388             default:
389                 ((SwingScilabPushButton) button.getAsSimplePushButton())
390                         .setIcon(new ImageIcon(SwingInspector.icon_expand_all));
391                 break;
392         }
393     }
394 }