Bug 7590 fixed: bad organization of menus 'Split...' and 'Line Numbering'
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / actions / SplitAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - Calixte DENIZET
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.scinotes.actions;
13
14 import java.awt.event.ActionEvent;
15 import java.awt.event.ActionListener;
16 import java.util.StringTokenizer;
17
18 import javax.swing.ButtonGroup;
19 import javax.swing.JMenu;
20 import javax.swing.JRadioButtonMenuItem;
21 import javax.swing.KeyStroke;
22
23 import org.scilab.modules.gui.menu.Menu;
24 import org.scilab.modules.gui.menu.ScilabMenu;
25 import org.scilab.modules.scinotes.SciNotes;
26
27 /**
28  * SplitAction Class
29  * @author Calixte DENIZET
30  */
31 public final class SplitAction extends DefaultAction {
32
33     /**
34      * serialVersionUID
35      */
36     private static final long serialVersionUID = 1L;
37
38     private int state;
39
40     /**
41      * Construtor
42      * @param name the name of the action
43      * @param editor SciNotes
44      */
45     public SplitAction(String name, SciNotes editor) {
46         super(name, editor);
47     }
48
49     /**
50      * doAction
51      */
52     public void doAction() {
53         switch (state) {
54         case 0 :
55             getEditor().removeSplit();
56             return;
57         case 1 :
58             getEditor().splitTab(false);
59             return;
60         default :
61             getEditor().splitTab(true);
62         }
63     }
64
65     /**
66      * createMenu
67      * @param label label of the menu
68      * @param editor SciNotes
69      * @param key KeyStroke
70      * @return createMenu
71      */
72     public static Menu createMenu(String label, SciNotes editor, KeyStroke key) {
73         StringTokenizer tokens = new StringTokenizer(label, ";");
74         String labelSplitView = tokens.nextToken();
75         String labelOff = tokens.nextToken();
76         String labelH = tokens.nextToken();
77         String labelV = tokens.nextToken();
78
79         SplitAction ln = new SplitAction(labelSplitView, editor);
80         Menu menu = ScilabMenu.createMenu();
81         menu.setText(labelSplitView);
82
83         ButtonGroup group = new ButtonGroup();
84         JRadioButtonMenuItem radio;
85         JRadioButtonMenuItem[] arr = new JRadioButtonMenuItem[3];
86         String[] labels = new String[]{labelOff, labelH, labelV};
87
88         for (int i = 0; i < 3; i++) {
89             radio = createRadioButtonMenuItem(ln, labels[i], i);
90             group.add(radio);
91             ((JMenu) menu.getAsSimpleMenu()).add(radio);
92             arr[i] = radio;
93         }
94
95         arr[0].setSelected(true);
96
97         return menu;
98     }
99
100     /**
101      * createRadioButtonMenuItem
102      * @param split the SplitAction
103      * @param title the label of the menuitem
104      * @param state the state associated with the menuitem
105      * @return JRadioButtonMenuItem
106      */
107     private static JRadioButtonMenuItem createRadioButtonMenuItem(final SplitAction split, String title, final int state) {
108         JRadioButtonMenuItem radio = new JRadioButtonMenuItem(title);
109         radio.addActionListener(new ActionListener() {
110                 public void actionPerformed(ActionEvent arg0) {
111                     split.state = state;
112                     split.doAction();
113                 }
114             });
115
116         return radio;
117     }
118 }