PaletteBrowser - toolbar buttons should be focusable
[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         btnNEXT.setFocusable(true);
62         setEnabledNext(false);
63         return btnNEXT;
64     }
65
66     /**
67      * Create the button 'previous'
68      * @return the button
69      */
70     public static JButton createButtonPrev() {
71         btnPREV = new JButton();
72         ScilabLAF.setDefaultProperties(btnPREV);
73         btnPREV.setIcon(new ImageIcon(ICON_PREV));
74         btnPREV.setToolTipText(LABEL_PREV);
75         btnPREV.addActionListener(getCallBack());
76         btnPREV.setFocusable(true);
77         setEnabledPrev(false);
78         return btnPREV;
79     }
80
81     /**
82      * Create a new class instance
83      * @return the instance
84      */
85     private static CommonCallBack getCallBack() {
86         CommonCallBack callback = null;
87         try {
88             callback = NavigationAction.class.getConstructor().newInstance();
89         } catch (IllegalArgumentException e) {
90             e.printStackTrace();
91         } catch (SecurityException e) {
92             e.printStackTrace();
93         } catch (InstantiationException e) {
94             e.printStackTrace();
95         } catch (IllegalAccessException e) {
96             e.printStackTrace();
97         } catch (InvocationTargetException e) {
98             e.printStackTrace();
99         } catch (NoSuchMethodException e) {
100             e.printStackTrace();
101         }
102         return callback;
103     }
104
105     /**
106      * Action
107      * @param e ActionEvent
108      */
109     public void actionPerformed(ActionEvent e) {
110         Object src = e.getSource();
111         if (btnNEXT != null && src.equals(btnNEXT)) {
112             PaletteManagerView.get().getPanel().goNext();
113         } else if (btnPREV != null && src.equals(btnPREV)) {
114             PaletteManagerView.get().getPanel().goPrevious();
115         }
116     }
117
118     /**
119      * setEnabled property of the button 'next'
120      * @param enabled enabled 
121      */
122     public static void setEnabledNext(boolean enabled) {
123         btnNEXT.setEnabled(enabled);
124     }
125
126     /**
127      * setEnabled property of the button 'previous'
128      * @param enabled enabled 
129      */
130     public static void setEnabledPrev(boolean enabled) {
131         btnPREV.setEnabled(enabled);
132     }
133
134     @Override
135     public void callBack() {
136     }
137 }