Bug 7590 fixed: bad organization of menus 'Split...' and 'Line Numbering' 08/1408/2
Calixte DENIZET [Thu, 22 Jul 2010 15:27:27 +0000 (17:27 +0200)]
Change-Id: I9de0d532d036e54e3364df2973ec4b5eb45b1b76

scilab/CHANGES_5.3.X
scilab/modules/scinotes/etc/keysConfiguration.xml
scilab/modules/scinotes/etc/scinotesConfiguration.xml
scilab/modules/scinotes/etc/scinotesGUIConfiguration.xml
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/SciNotesLineNumberPanel.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/LineNumbersAction.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/NoSplitAction.java [deleted file]
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitAction.java [new file with mode: 0644]
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitHorizontallyAction.java [deleted file]
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitVerticallyAction.java [deleted file]

index 40f9f77..589e829 100644 (file)
@@ -174,6 +174,9 @@ Bug Fixes:
 
 * bug 7586 fixed - ShortCut for 'Save' action was missing in SciNotes.
 
+* bug 7590 fixed - In SciNotes, there was a bad organization of the menus
+                   "Split..." and "Line Numbering...". 
+
            Changes between version 5.2.X and 5.3.0-beta1 of Scilab
            =======================================================
 
index efaf2e2..b5c7ad4 100644 (file)
@@ -39,7 +39,6 @@
 
   <entry key="HighlightCurrentLineAction">control J</entry>
   <entry key="HelpOnKeywordAction">control F1</entry>
-  <entry key="LineNumbersAction">control B</entry>
 
   <entry key="LoadIntoScilabAction">control L</entry>
   <entry key="ExecuteFileIntoScilabAction">control shift E</entry>
 
   <entry key="SciNotesCompletionAction">control SPACE</entry>
 
-  <entry key="SplitHorizontallyAction">control shift H</entry>
-  <entry key="SplitVerticallyAction">control shift V</entry>
-  <entry key="NoSplitAction">control shift N</entry>
-
   <entry key="HelpAction">F1</entry>
   <entry key="AboutAction">shift F1</entry>
 
index adb608a..187f91f 100644 (file)
@@ -34,8 +34,8 @@
     <!-- Restore the open files from the last session  -->
     <RestoreFiles value="true"/>
 
-    <!-- Line numbering : 0 is normal, 1 is for the whereami compatibility and 2 for no numbering-->
-    <LineNumbering value="0"/>
+    <!-- Line numbering : 0 is off, 1 is normal and 2 is whereami-->
+    <LineNumbering value="1"/>
 
     <!-- inside is a boolean to indicate if the contents between the keywords must be highlighted
          if inside is true type can be filled or framed else it can be filled, framed or underlined -->
 
     <!-- Recent Opened Files Section  -->
     <recentFiles>
-
     </recentFiles>
 
     <!-- Currently Open Files Section  -->
-    <openFiles>
-      
+    <openFiles>      
     </openFiles>
 
   </Profile>
index 489afa3..fea573d 100644 (file)
 
     <menu label="View" mnemonic="V">
       <menuitem action="HighlightCurrentLineAction" label="Highlight current line"/>
-      <menuitem action="LineNumbersAction" label="Whereami Line Numbering;Normal Line Numbering;No Line Numbering"/>
+      <menuitem action="LineNumbersAction" label="Line numbering;Off;Normal;Whereami compatible"/>
+      <menuitem action="SplitAction" label="Split View;Off;Horizontally;Vertically"/>
+      <separator/>
       <menuitem action="SetColorsAction" label="Set Colors"/>
       <menuitem action="SetFontAction" label="Set Font"/>
       <menuitem action="ResetFontAction" label="Reset default font"/>
-      <separator/>
-      <menuitem action="SplitVerticallyAction" label="Split vertically"/>
-      <menuitem action="SplitHorizontallyAction" label="Split horizontally"/>
-      <menuitem action="NoSplitAction" label="No split"/>
     </menu>
 
     <menu label="Document" mnemonic="D">
index 0b8c53a..1a26736 100644 (file)
@@ -96,14 +96,14 @@ public class SciNotesLineNumberPanel extends JPanel implements CaretListener, Do
 
     /**
      * Set a line numbering compatible with the whereami function
-     * @param state 0 for normal, 1 for whereami and 2 for nothing
+     * @param state 0 for nothing, 1 for normal and 2 for whereami
      */
     public void setWhereamiLineNumbering(int state) {
-        if (state != 2) {
+        if (state != 0) {
             if (!display) {
                 textPane.getScrollPane().setRowHeaderView(this);
             }
-            whereami = state == 1;
+            whereami = state == 2;
             display = true;
         } else {
             textPane.getScrollPane().setRowHeaderView(null);
index 8763a3b..2de86e6 100644 (file)
  */
 package org.scilab.modules.scinotes.actions;
 
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.util.StringTokenizer;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JMenu;
+import javax.swing.JRadioButtonMenuItem;
 import javax.swing.KeyStroke;
 
-import org.scilab.modules.gui.menuitem.MenuItem;
+import org.scilab.modules.gui.menu.Menu;
+import org.scilab.modules.gui.menu.ScilabMenu;
 import org.scilab.modules.scinotes.SciNotes;
 import org.scilab.modules.scinotes.utils.ConfigSciNotesManager;
 
@@ -31,12 +38,7 @@ public final class LineNumbersAction extends DefaultAction {
      */
     private static final long serialVersionUID = -2778300710964013775L;
 
-    private static String labelWhereami = "";
-    private static String labelNormal = "";
-    private static String labelNoLine = "";
-
-    private MenuItem menu;
-    private int state = 1;
+    private int state;
 
     /**
      * Construtor
@@ -45,6 +47,7 @@ public final class LineNumbersAction extends DefaultAction {
      */
     public LineNumbersAction(String name, SciNotes editor) {
         super(name, editor);
+        state = ConfigSciNotesManager.getLineNumberingState();
     }
 
     /**
@@ -53,7 +56,6 @@ public final class LineNumbersAction extends DefaultAction {
     public void doAction() {
         getEditor().setWhereamiLineNumbering(state);
         ConfigSciNotesManager.saveLineNumberingState(state);
-        setMenu();
     }
 
     /**
@@ -63,33 +65,50 @@ public final class LineNumbersAction extends DefaultAction {
      * @param key KeyStroke
      * @return createMenu
      */
-    public static MenuItem createMenu(String label, SciNotes editor, KeyStroke key) {
+    public static Menu createMenu(String label, SciNotes editor, KeyStroke key) {
         StringTokenizer tokens = new StringTokenizer(label, ";");
-        labelWhereami = tokens.nextToken();
-        labelNormal = tokens.nextToken();
-        labelNoLine = tokens.nextToken();
-        LineNumbersAction ln = new LineNumbersAction(labelWhereami, editor);
-        MenuItem mi = createMenu(label, null, ln, key);
-        ln.state = ConfigSciNotesManager.getLineNumberingState();
-        ln.menu = mi;
-        ln.setMenu();
-        return mi;
+        String labelLineNumbering = tokens.nextToken();
+        String labelOff = tokens.nextToken();
+        String labelNormal = tokens.nextToken();
+        String labelWhereami = tokens.nextToken();
+
+        LineNumbersAction ln = new LineNumbersAction(labelLineNumbering, editor);
+        Menu menu = ScilabMenu.createMenu();
+        menu.setText(labelLineNumbering);
+        JRadioButtonMenuItem[] arr = new JRadioButtonMenuItem[3];
+        String[] labels = new String[]{labelOff, labelNormal, labelWhereami};
+
+        ButtonGroup group = new ButtonGroup();
+        JRadioButtonMenuItem radio;
+
+        for (int i = 0; i < 3; i++) {
+            radio = createRadioButtonMenuItem(ln, labels[i], i);
+            group.add(radio);
+            ((JMenu) menu.getAsSimpleMenu()).add(radio);
+            arr[i] = radio;
+        }
+
+        arr[ln.state].setSelected(true);
+
+        return menu;
     }
 
     /**
-     * Set the menu
+     * createRadioButtonMenuItem
+     * @param ln the LineNumbersAction
+     * @param title the label of the menuitem
+     * @param state the state associated with the menuitem
+     * @return JRadioButtonMenuItem
      */
-    private void setMenu() {
-        state = (state + 1) % 3;
-        switch (state) {
-        case 0 :
-            menu.setText(labelNormal);
-            break;
-        case 1 :
-            menu.setText(labelWhereami);
-            break;
-        default :
-            menu.setText(labelNoLine);
-        }
+    private static JRadioButtonMenuItem createRadioButtonMenuItem(final LineNumbersAction ln, String title, final int state) {
+        JRadioButtonMenuItem radio = new JRadioButtonMenuItem(title);
+        radio.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent arg0) {
+                    ln.state = state;
+                    ln.doAction();
+                }
+            });
+
+        return radio;
     }
 }
diff --git a/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/NoSplitAction.java b/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/NoSplitAction.java
deleted file mode 100644 (file)
index 1778237..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2010 - Calixte DENIZET
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.scinotes.actions;
-
-import javax.swing.KeyStroke;
-
-import org.scilab.modules.gui.menuitem.MenuItem;
-import org.scilab.modules.scinotes.SciNotes;
-
-/**
- * No Split
- * @author Calixte DENIZET
- */
-public final class NoSplitAction extends DefaultAction {
-
-    /**
-     * Constructor
-     * @param name the name of the action
-     * @param editor associated editor
-     */
-    public NoSplitAction(String name, SciNotes editor) {
-        super(name, editor);
-    }
-
-    /**
-     * Create the MenuItem
-     * @param label label of the menu
-     * @param editor Editor
-     * @param key KeyStroke
-     * @return a MenuItem
-     */
-    public static MenuItem createMenu(String label, SciNotes editor, KeyStroke key) {
-        return createMenu(label, null, new NoSplitAction(label, editor), key);
-    }
-
-    /**
-     * Action !!
-     * @see org.scilab.modules.graph.actions.DefaultAction#doAction()
-     */
-    public void doAction() {
-        getEditor().removeSplit();
-    }
-}
diff --git a/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitAction.java b/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitAction.java
new file mode 100644 (file)
index 0000000..13f6657
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.scinotes.actions;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.StringTokenizer;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JMenu;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.KeyStroke;
+
+import org.scilab.modules.gui.menu.Menu;
+import org.scilab.modules.gui.menu.ScilabMenu;
+import org.scilab.modules.scinotes.SciNotes;
+
+/**
+ * SplitAction Class
+ * @author Calixte DENIZET
+ */
+public final class SplitAction extends DefaultAction {
+
+    /**
+     * serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    private int state;
+
+    /**
+     * Construtor
+     * @param name the name of the action
+     * @param editor SciNotes
+     */
+    public SplitAction(String name, SciNotes editor) {
+        super(name, editor);
+    }
+
+    /**
+     * doAction
+     */
+    public void doAction() {
+        switch (state) {
+        case 0 :
+            getEditor().removeSplit();
+            return;
+        case 1 :
+            getEditor().splitTab(false);
+            return;
+        default :
+            getEditor().splitTab(true);
+        }
+    }
+
+    /**
+     * createMenu
+     * @param label label of the menu
+     * @param editor SciNotes
+     * @param key KeyStroke
+     * @return createMenu
+     */
+    public static Menu createMenu(String label, SciNotes editor, KeyStroke key) {
+        StringTokenizer tokens = new StringTokenizer(label, ";");
+        String labelSplitView = tokens.nextToken();
+        String labelOff = tokens.nextToken();
+        String labelH = tokens.nextToken();
+        String labelV = tokens.nextToken();
+
+        SplitAction ln = new SplitAction(labelSplitView, editor);
+        Menu menu = ScilabMenu.createMenu();
+        menu.setText(labelSplitView);
+
+        ButtonGroup group = new ButtonGroup();
+        JRadioButtonMenuItem radio;
+        JRadioButtonMenuItem[] arr = new JRadioButtonMenuItem[3];
+        String[] labels = new String[]{labelOff, labelH, labelV};
+
+        for (int i = 0; i < 3; i++) {
+            radio = createRadioButtonMenuItem(ln, labels[i], i);
+            group.add(radio);
+            ((JMenu) menu.getAsSimpleMenu()).add(radio);
+            arr[i] = radio;
+        }
+
+        arr[0].setSelected(true);
+
+        return menu;
+    }
+
+    /**
+     * createRadioButtonMenuItem
+     * @param split the SplitAction
+     * @param title the label of the menuitem
+     * @param state the state associated with the menuitem
+     * @return JRadioButtonMenuItem
+     */
+    private static JRadioButtonMenuItem createRadioButtonMenuItem(final SplitAction split, String title, final int state) {
+        JRadioButtonMenuItem radio = new JRadioButtonMenuItem(title);
+        radio.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent arg0) {
+                    split.state = state;
+                    split.doAction();
+                }
+            });
+
+        return radio;
+    }
+}
diff --git a/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitHorizontallyAction.java b/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitHorizontallyAction.java
deleted file mode 100644 (file)
index b3d3068..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2010 - Calixte DENIZET
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.scinotes.actions;
-
-import javax.swing.KeyStroke;
-
-import org.scilab.modules.gui.menuitem.MenuItem;
-import org.scilab.modules.scinotes.SciNotes;
-
-/**
- * Split horizontally
- * @author Calixte DENIZET
- */
-public final class SplitHorizontallyAction extends DefaultAction {
-
-    /**
-     * Constructor
-     * @param name the name of the action
-     * @param editor associated editor
-     */
-    public SplitHorizontallyAction(String name, SciNotes editor) {
-        super(name, editor);
-    }
-
-    /**
-     * Create the MenuItem
-     * @param label label of the menu
-     * @param editor Editor
-     * @param key KeyStroke
-     * @return a MenuItem
-     */
-    public static MenuItem createMenu(String label, SciNotes editor, KeyStroke key) {
-        return createMenu(label, null, new SplitHorizontallyAction(label, editor), key);
-    }
-
-    /**
-     * Action !!
-     * @see org.scilab.modules.graph.actions.DefaultAction#doAction()
-     */
-    public void doAction() {
-        getEditor().splitTab(false);
-    }
-}
diff --git a/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitVerticallyAction.java b/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/SplitVerticallyAction.java
deleted file mode 100644 (file)
index 823065e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2010 - Calixte DENIZET
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.scinotes.actions;
-
-import javax.swing.KeyStroke;
-
-import org.scilab.modules.gui.menuitem.MenuItem;
-import org.scilab.modules.scinotes.SciNotes;
-
-/**
- * Split vertically
- * @author Calixte DENIZET
- */
-public final class SplitVerticallyAction extends DefaultAction {
-
-    /**
-     * Constructor
-     * @param name the name of the action
-     * @param editor associated editor
-     */
-    public SplitVerticallyAction(String name, SciNotes editor) {
-        super(name, editor);
-    }
-
-    /**
-     * Create the MenuItem
-     * @param label label of the menu
-     * @param editor Editor
-     * @param key KeyStroke
-     * @return a MenuItem
-     */
-    public static MenuItem createMenu(String label, SciNotes editor, KeyStroke key) {
-        return createMenu(label, null, new SplitVerticallyAction(label, editor), key);
-    }
-
-    /**
-     * Action !!
-     * @see org.scilab.modules.graph.actions.DefaultAction#doAction()
-     */
-    public void doAction() {
-        getEditor().splitTab(true);
-    }
-}