Bug 11763 fixed: In SciNotes, number of recent open files set in prefs was not taken... 22/8822/2
Calixte DENIZET [Mon, 27 Aug 2012 12:17:41 +0000 (14:17 +0200)]
Change-Id: I14fd6889f4140ee3f4eb1a36902b1f78efb7a07c

scilab/CHANGES_5.4.X
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/SciNotes.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/SciNotesOptions.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/RecentFileAction.java

index 19a09b2..02761ef 100644 (file)
@@ -157,6 +157,9 @@ Bug Fixes
 
 * Bug #11761 fixed - There was an exception in rendering MathML.
 
+* Bug #11763 fixed - In SciNotes, number of recently opened files set in
+                     preferences was not taken into account.
+
 * Bug #11764 fixed - The 'ispc' m2sci help page was not updated regarding the
                      MSDOS removal.
 
index 26f2f99..6f0a919 100644 (file)
@@ -236,6 +236,10 @@ public class SciNotes extends SwingScilabTab {
             SciNotesAutosave.stopAutosave();
             SciNotesAutosave.autosave();
         }
+        if (conf.preferences) {
+            RecentFileAction.updateRecentOpenedFilesMenu();
+        }
+
         updatePanes(conf);
     }
 
index bacaa26..98a7a76 100644 (file)
@@ -65,21 +65,21 @@ public class SciNotesOptions {
         private void set(boolean restartOpen, boolean addLineTermination, int numberOfRecentlyOpen, String encoding, String eol, boolean useScinotes, boolean externalCmd, String cmd) {
             this.restartOpen = restartOpen;
             this.addLineTermination = addLineTermination;
-            this.numberOfRecentlyOpen = numberOfRecentlyOpen;
+            this.numberOfRecentlyOpen = numberOfRecentlyOpen > 0 ? numberOfRecentlyOpen : 1;
             this.encoding = encoding.toLowerCase();
 
-           if (eol.equals("")) {
-               switch (OS.get()) {
-               case WINDOWS:
-                   this.eol = ScilabDocument.EOLWIN;
-                   break;
-               case MAC:
-                   this.eol = ScilabDocument.EOLMAC;
-                   break;
-               default:
-                   this.eol = ScilabDocument.EOLUNIX;
-                   break;
-               }
+            if (eol.equals("")) {
+                switch (OS.get()) {
+                case WINDOWS:
+                    this.eol = ScilabDocument.EOLWIN;
+                    break;
+                case MAC:
+                    this.eol = ScilabDocument.EOLMAC;
+                    break;
+                default:
+                    this.eol = ScilabDocument.EOLUNIX;
+                    break;
+                }
             } else if (eol.startsWith("Windows")) {
                 this.eol = ScilabDocument.EOLWIN;
             } else if (eol.startsWith("Mac")) {
index 35f7df5..7bf046f 100644 (file)
@@ -12,7 +12,9 @@
 package org.scilab.modules.scinotes.actions;
 
 import java.io.File;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import javax.swing.KeyStroke;
 
 import org.scilab.modules.gui.menuitem.MenuItem;
@@ -20,8 +22,10 @@ import org.scilab.modules.gui.menu.Menu;
 import org.scilab.modules.gui.menu.ScilabMenu;
 import org.scilab.modules.gui.bridge.menu.SwingScilabMenu;
 import org.scilab.modules.scinotes.SciNotes;
+import org.scilab.modules.scinotes.SciNotesOptions;
 import org.scilab.modules.scinotes.utils.ConfigSciNotesManager;
 
+
 /**
  * RecentFileAction Class
  * @author Allan SIMON
@@ -30,8 +34,7 @@ import org.scilab.modules.scinotes.utils.ConfigSciNotesManager;
 @SuppressWarnings(value = { "serial" })
 public class RecentFileAction extends DefaultAction {
 
-    private static Menu recentsMenu = ScilabMenu.createMenu();
-    private static String label;
+    private static Map<SciNotes, Menu> menus = new HashMap<SciNotes, Menu>();
 
     private File recentFile;
 
@@ -72,7 +75,10 @@ public class RecentFileAction extends DefaultAction {
      * @return the menu
      */
     public static Menu createMenu(String label, SciNotes editor, KeyStroke key) {
-        RecentFileAction.label = label;
+        Menu recentsMenu = ScilabMenu.createMenu();
+        recentsMenu.setText(label);
+        menus.put(editor, recentsMenu);
+
         updateRecentOpenedFilesMenu(editor);
         return recentsMenu;
     }
@@ -81,13 +87,33 @@ public class RecentFileAction extends DefaultAction {
      * Update menu displaying recent opened files.
      * @param editor SciNotes
      */
-    public static void updateRecentOpenedFilesMenu(SciNotes editor) {
+    public static void updateRecentOpenedFilesMenu() {
         List<File> recentFiles = ConfigSciNotesManager.getAllRecentOpenedFiles();
+        for (SciNotes ed : menus.keySet()) {
+            Menu recentsMenu = menus.get(ed);
+            if (recentsMenu != null) {
+                ((SwingScilabMenu) recentsMenu.getAsSimpleMenu()).removeAll();
+                final int N = Math.min(recentFiles.size(), SciNotesOptions.getSciNotesPreferences().numberOfRecentlyOpen);
+                for (int i = N - 1; i >= 0; i--) {
+                    recentsMenu.add(RecentFileAction.createMenu(ed, recentFiles.get(i)));
+                }
+            }
+        }
+    }
 
-        ((SwingScilabMenu) recentsMenu.getAsSimpleMenu()).removeAll();
-        for (int i = recentFiles.size() - 1; i >= 0; i--) {
-            recentsMenu.add(RecentFileAction.createMenu(editor, recentFiles.get(i)));
+    /**
+     * Update menu displaying recent opened files.
+     * @param editor SciNotes
+     */
+    public static void updateRecentOpenedFilesMenu(SciNotes editor) {
+        List<File> recentFiles = ConfigSciNotesManager.getAllRecentOpenedFiles();
+        Menu recentsMenu = menus.get(editor);
+        if (recentsMenu != null) {
+            ((SwingScilabMenu) recentsMenu.getAsSimpleMenu()).removeAll();
+            final int N = Math.min(recentFiles.size(), SciNotesOptions.getSciNotesPreferences().numberOfRecentlyOpen);
+            for (int i = N - 1; i >= 0; i--) {
+                recentsMenu.add(RecentFileAction.createMenu(editor, recentFiles.get(i)));
+            }
         }
-        recentsMenu.setText(label);
     }
 }