Navigation Menu - initial implementation
[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.events.callback.CommonCallBack;
24 import org.scilab.modules.xcos.palette.view.PaletteManagerView;
25 import org.scilab.modules.xcos.utils.XcosMessages;
26
27 /**
28  * Navigation menu management.
29  * Actions 'next' and 'previous' of the palette browser.
30  * @author Marcos CARDINOT <mcardinot@gmail.com>
31  */
32 public class NavigationAction extends CommonCallBack {
33
34     private static final long serialVersionUID = 1L;
35
36     private static final String LABEL_NEXT = XcosMessages.NEXT;
37     private static final String LABEL_PREV = XcosMessages.PREVIOUS;
38     private static final String ICON_NEXT = FindIconHelper.findIcon("go-next");
39     private static final String ICON_PREV = FindIconHelper.findIcon("go-previous");
40
41     private static JButton btnNEXT;
42     private static JButton btnPREV;
43
44     /**
45      * Constructor
46      */
47     public NavigationAction() {
48         super("");
49     }
50
51     /**
52      * Create the button 'next'
53      * @return the button
54      */
55     public static JButton createButtonNext() {
56         btnNEXT = new JButton();
57         ScilabLAF.setDefaultProperties(btnNEXT);
58         btnNEXT.setIcon(new ImageIcon(ICON_NEXT));
59         btnNEXT.setToolTipText(LABEL_NEXT);
60         btnNEXT.addActionListener(getCallBack());
61         setEnabledNext(false);
62         return btnNEXT;
63     }
64
65     /**
66      * Create the button 'previous'
67      * @return the button
68      */
69     public static JButton createButtonPrev() {
70         btnPREV = new JButton();
71         ScilabLAF.setDefaultProperties(btnPREV);
72         btnPREV.setIcon(new ImageIcon(ICON_PREV));
73         btnPREV.setToolTipText(LABEL_PREV);
74         btnPREV.addActionListener(getCallBack());
75         setEnabledPrev(false);
76         return btnPREV;
77     }
78
79     /**
80      * Create a new class instance
81      * @return the instance
82      */
83     private static CommonCallBack getCallBack() {
84         CommonCallBack callback = null;
85         try {
86             callback = NavigationAction.class.getConstructor().newInstance();
87         } catch (IllegalArgumentException e) {
88             e.printStackTrace();
89         } catch (SecurityException e) {
90             e.printStackTrace();
91         } catch (InstantiationException e) {
92             e.printStackTrace();
93         } catch (IllegalAccessException e) {
94             e.printStackTrace();
95         } catch (InvocationTargetException e) {
96             e.printStackTrace();
97         } catch (NoSuchMethodException e) {
98             e.printStackTrace();
99         }
100         return callback;
101     }
102
103     /**
104      * Action
105      * @param e ActionEvent
106      */
107     public void actionPerformed(ActionEvent e) {
108         Object src = e.getSource();
109         if (btnNEXT != null && src.equals(btnNEXT)) {
110             PaletteManagerView.get().getPanel().goNext();
111         } else if (btnPREV != null && src.equals(btnPREV)) {
112             PaletteManagerView.get().getPanel().goPrevious();
113         }
114     }
115
116     /**
117      * setEnabled property of the button 'next'
118      * @param enabled enabled 
119      */
120     public static void setEnabledNext(boolean enabled) {
121         btnNEXT.setEnabled(enabled);
122     }
123
124     /**
125      * setEnabled property of the button 'previous'
126      * @param enabled enabled 
127      */
128     public static void setEnabledPrev(boolean enabled) {
129         btnPREV.setEnabled(enabled);
130     }
131
132     @Override
133     public void callBack() {
134     }
135 }