Refactorization of the management of the actions in menus, button, shortcuts
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / actions / RecentFileAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - INRIA - Allan SIMON
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.io.File;
15 import java.util.List;
16 import javax.swing.KeyStroke;
17
18 import org.scilab.modules.gui.menuitem.MenuItem;
19 import org.scilab.modules.gui.menu.Menu;
20 import org.scilab.modules.gui.menu.ScilabMenu;
21 import org.scilab.modules.gui.bridge.menu.SwingScilabMenu;
22 import org.scilab.modules.scinotes.SciNotes;
23 import org.scilab.modules.scinotes.utils.ConfigSciNotesManager;
24
25 /**
26  * RecentFileAction Class
27  * @author Allan SIMON
28  *
29  */
30 public class RecentFileAction extends DefaultAction {
31
32     private static Menu recentsMenu = ScilabMenu.createMenu();
33     private static String label;
34
35     private File recentFile;
36
37     /**
38      * Constructor
39      * @param editor SciNotes
40      * @param f File
41      */
42     public RecentFileAction(SciNotes editor , File f) {
43         super(f.getName(), editor);
44         recentFile = f;
45     }
46
47     /**
48      * doAction
49      */
50     public void doAction() {
51         ConfigSciNotesManager.saveToRecentOpenedFiles(recentFile.getPath());
52         getEditor().readFile(recentFile);
53         getEditor().setTitle(recentFile.getPath() + " - SciNotes");
54     }
55
56     /**
57      * createMenu
58      * @param editor SciNotes
59      * @param f File
60      * @return a MenuItem
61      */
62     public static MenuItem createMenu(SciNotes editor, File f) {
63         return createMenu(f.getName(), null, new RecentFileAction(editor, f), null);
64     }
65
66     /**
67      * createMenu
68      * @param label label of the menu
69      * @param editor associated editor
70      * @param key KeyStroke
71      * @return the menu
72      */
73     public static Menu createMenu(String label, SciNotes editor, KeyStroke key) {
74         RecentFileAction.label = label;
75         updateRecentOpenedFilesMenu(editor);
76         return recentsMenu;
77     }
78
79     /**
80      * Update menu displaying recent opened files.
81      * @param editor SciNotes
82      */
83     public static void updateRecentOpenedFilesMenu(SciNotes editor) {
84         List<File> recentFiles = ConfigSciNotesManager.getAllRecentOpenedFiles();
85
86         ((SwingScilabMenu) recentsMenu.getAsSimpleMenu()).removeAll();
87         for (int i = recentFiles.size() - 1; i >= 0; i--) {
88             recentsMenu.add(RecentFileAction.createMenu(editor, recentFiles.get(i)));
89         }
90         recentsMenu.setText(label);
91     }
92 }