Xcos src: Java cleanup
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / palette / actions / NavigationAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2015 - 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.1-en.txt
10  *
11  */
12
13 package org.scilab.modules.xcos.palette.actions;
14
15 import java.awt.event.ActionEvent;
16 import java.lang.reflect.InvocationTargetException;
17
18 import javax.swing.ImageIcon;
19 import javax.swing.JButton;
20
21 import org.scilab.modules.commons.gui.FindIconHelper;
22 import org.scilab.modules.commons.gui.ScilabLAF;
23 import org.scilab.modules.gui.bridge.menuitem.SwingScilabMenuItem;
24 import org.scilab.modules.gui.events.callback.CommonCallBack;
25 import org.scilab.modules.gui.menuitem.MenuItem;
26 import org.scilab.modules.gui.menuitem.ScilabMenuItem;
27 import org.scilab.modules.xcos.palette.view.PaletteManagerView;
28 import org.scilab.modules.xcos.utils.XcosMessages;
29
30 /**
31  * Navigation menu management.
32  * Actions 'next' and 'previous' of the palette browser.
33  * @author Marcos CARDINOT <mcardinot@gmail.com>
34  */
35 public class NavigationAction extends CommonCallBack {
36
37     private static final long serialVersionUID = 1L;
38
39     private static final String ICON_NEXT = FindIconHelper.findIcon("go-next");
40     private static final String ICON_PREV = FindIconHelper.findIcon("go-previous");
41
42     private static JButton btnNEXT;
43     private static JButton btnPREV;
44     private static MenuItem miNEXT;
45     private static MenuItem miPREV;
46
47     /**
48      * Constructor
49      */
50     public NavigationAction() {
51         super("");
52     }
53
54     /**
55      * Create the button 'next'
56      * @return the button
57      */
58     public static JButton createButtonNext() {
59         btnNEXT = new JButton();
60         ScilabLAF.setDefaultProperties(btnNEXT);
61         btnNEXT.setName(XcosMessages.NEXT);
62         btnNEXT.setIcon(new ImageIcon(ICON_NEXT));
63         btnNEXT.setToolTipText(XcosMessages.NEXT);
64         btnNEXT.addActionListener(getCallBack());
65         btnNEXT.setFocusable(true);
66         setEnabledNext(false);
67         return btnNEXT;
68     }
69
70     /**
71      * Create the button 'previous'
72      * @return the button
73      */
74     public static JButton createButtonPrev() {
75         btnPREV = new JButton();
76         ScilabLAF.setDefaultProperties(btnPREV);
77         btnPREV.setName(XcosMessages.PREVIOUS);
78         btnPREV.setIcon(new ImageIcon(ICON_PREV));
79         btnPREV.setToolTipText(XcosMessages.PREVIOUS);
80         btnPREV.addActionListener(getCallBack());
81         btnPREV.setFocusable(true);
82         setEnabledPrev(false);
83         return btnPREV;
84     }
85
86     /**
87      * Creates a menu item associated with the 'next' action
88      * @return the menuitem
89      */
90     public static MenuItem createMenuNext() {
91         miNEXT = ScilabMenuItem.createMenuItem();
92         miNEXT.setText(XcosMessages.NEXT);
93         miNEXT.setMnemonic('N');
94         miNEXT.setCallback(getCallBack());
95         ((SwingScilabMenuItem) miNEXT.getAsSimpleMenuItem()).setIcon(new ImageIcon(ICON_NEXT));
96         return miNEXT;
97     }
98
99     /**
100      * Creates a menu item associated with the 'previous' action
101      * @return the menuitem
102      */
103     public static MenuItem createMenuPrev() {
104         miPREV = ScilabMenuItem.createMenuItem();
105         miPREV.setText(XcosMessages.PREVIOUS);
106         miPREV.setMnemonic('P');
107         miPREV.setCallback(getCallBack());
108         ((SwingScilabMenuItem) miPREV.getAsSimpleMenuItem()).setIcon(new ImageIcon(ICON_PREV));
109         return miPREV;
110     }
111
112     /**
113      * Create a new class instance
114      * @return the instance
115      */
116     private static CommonCallBack getCallBack() {
117         CommonCallBack callback = null;
118         try {
119             callback = NavigationAction.class.getConstructor().newInstance();
120         } catch (IllegalArgumentException e) {
121             e.printStackTrace();
122         } catch (SecurityException e) {
123             e.printStackTrace();
124         } catch (InstantiationException e) {
125             e.printStackTrace();
126         } catch (IllegalAccessException e) {
127             e.printStackTrace();
128         } catch (InvocationTargetException e) {
129             e.printStackTrace();
130         } catch (NoSuchMethodException e) {
131             e.printStackTrace();
132         }
133         return callback;
134     }
135
136     /**
137      * Action
138      * @param e ActionEvent
139      */
140     @Override
141     public void actionPerformed(ActionEvent e) {
142         String cmd = e.getActionCommand();
143         if (cmd.isEmpty()) {
144             cmd = ((JButton) e.getSource()).getName();
145         }
146
147         if (cmd.equals(XcosMessages.NEXT)) {
148             PaletteManagerView.get().getPanel().goNext();
149         } else if (cmd.equals(XcosMessages.PREVIOUS)) {
150             PaletteManagerView.get().getPanel().goPrevious();
151         }
152     }
153
154     /**
155      * setEnabled property of the button 'next'
156      * @param enabled enabled
157      */
158     public static void setEnabledNext(boolean enabled) {
159         btnNEXT.setEnabled(enabled);
160         miNEXT.setEnabled(enabled);
161     }
162
163     /**
164      * setEnabled property of the button 'previous'
165      * @param enabled enabled
166      */
167     public static void setEnabledPrev(boolean enabled) {
168         btnPREV.setEnabled(enabled);
169         miPREV.setEnabled(enabled);
170     }
171
172     @Override
173     public void callBack() {
174     }
175 }