1 | public class RecentDirectoriesProvider implements DynamicMenuProvider↵ | | 1 | public class RecentFilesProvider implements DynamicMenuProvider↵
|
2 | {↵ | | 2 | {↵
|
3 | //{{{ updateEveryTime() method↵ | | 3 | //{{{ updateEveryTime() method↵
|
4 | public boolean updateEveryTime()↵ | | 4 | public boolean updateEveryTime()↵
|
5 | {↵ | | 5 | {↵
|
6 | return true;↵ | | 6 | return false;↵
|
7 | } //}}}↵ | | 7 | } //}}}↵
|
|
8 | //{{{ update() method↵ | | 8 | //{{{ update() method↵
|
9 | public void update(JMenu menu)↵ | | 9 | public void update(JMenu menu)↵
|
10 | {↵ | | 10 | {↵
|
11 | final View view = GUIUtilities.getView(menu);↵ | | 11 | final View view = GUIUtilities.getView(menu);↵
|
|
12 | //{{{ ActionListener...↵ | | 12 | //{{{ ActionListener...↵
|
13 | ActionListener actionListener = new ActionListener()↵ | | 13 | ActionListener actionListener = new ActionListener()↵
|
14 | {↵ | | 14 | {↵
|
15 | public void actionPerformed(ActionEvent evt)↵ | | 15 | public void actionPerformed(ActionEvent evt)↵
|
16 | {↵ | | 16 | {↵
|
17 | VFSBrowser.browseDirectory(view,evt.getActionCommand());↵ | | 17 | jEdit.openFile(view,evt.getActionCommand());↵
|
|
18 | view.getStatus().setMessage(null);↵ | | 18 | view.getStatus().setMessage(null);↵
|
19 | }↵ | | 19 | }↵
|
20 | }; //}}}↵ | | 20 | }; //}}}↵
|
|
21 | //{{{ MouseListener...↵ | | 21 | //{{{ MouseListener...↵
|
22 | MouseListener mouseListener = new MouseAdapter()↵ | | 22 | MouseListener mouseListener = new MouseAdapter()↵
|
23 | {↵ | | 23 | {↵
|
24 | public void mouseEntered(MouseEvent evt)↵ | | 24 | public void mouseEntered(MouseEvent evt)↵
|
25 | {↵ | | 25 | {↵
|
26 | view.getStatus().setMessage(↵ | | 26 | view.getStatus().setMessage(↵
|
27 | ((JMenuItem)evt.getSource())↵ | | 27 | ((JMenuItem)evt.getSource())↵
|
28 | .getActionCommand());↵ | | 28 | .getActionCommand());↵
|
29 | }↵ | | 29 | }↵
|
|
30 | public void mouseExited(MouseEvent evt)↵ | | 30 | public void mouseExited(MouseEvent evt)↵
|
31 | {↵ | | 31 | {↵
|
32 | view.getStatus().setMessage(null);↵ | | 32 | view.getStatus().setMessage(null);↵
|
33 | }↵ | | 33 | }↵
|
34 | }; //}}}↵ | | 34 | }; //}}}↵
|
|
35 | HistoryModel model = HistoryModel.getModel("vfs.browser.path");↵ | | 35 | List recentVector = BufferHistory.getHistory();↵
|
|
36 | if(model.getSize() == 0)↵ | | 36 | if(recentVector.size() == 0)↵
|
37 | {↵ | | 37 | {↵
|
38 | JMenuItem menuItem = new JMenuItem(↵ | | 38 | JMenuItem menuItem = new JMenuItem(↵
|
39 | jEdit.getProperty("no-recent-dirs.label"));↵ | | 39 | jEdit.getProperty("no-recent-files.label"));↵
|
40 | menuItem.setEnabled(false);↵ | | 40 | menuItem.setEnabled(false);↵
|
41 | menu.add(menuItem);↵ | | 41 | menu.add(menuItem);↵
|
42 | return;↵ | | 42 | return;↵
|
43 | }↵ | | 43 | }↵
|
|
| | | 44 | Vector menuItems = new Vector();↵
|
|
44 | boolean sort = jEdit.getBooleanProperty("sortRecent");↵ | | 45 | boolean sort = jEdit.getBooleanProperty("sortRecent");↵
|
|
45 | int maxItems = jEdit.getIntegerProperty("menu.spillover",20);↵ | | 46 | int maxItems = jEdit.getIntegerProperty("menu.spillover",20);↵
|
|
46 | Vector menuItems = new Vector();↵ | | 47 | Iterator iter = recentVector.iterator();↵
|
|
47 | for(int i = 0; i < model.getSize(); i++)↵ | | 48 | ↵
|
48 | {↵ | | |
|
49 | String path = model.getItem(i)↵ | | 49 | while(iter.hasNext())↵
|
| | | 50 | {↵
|
50 | ;↵ | | 51 | String path = ((BufferHistory.Entry)iter.next()).path;↵
|
51 | JMenuItem menuItem = new JMenuItem(MiscUtilities↵ | | 52 | JMenuItem menuItem = new JMenuItem(MiscUtilities↵
|
52 | .getFileName(path));↵ | | 53 | .getFileName(path));↵
|
53 | menuItem.setActionCommand(path);↵ | | 54 | menuItem.setActionCommand(path);↵
|
54 | menuItem.addActionListener(actionListener);↵ | | 55 | menuItem.addActionListener(actionListener);↵
|
55 | menuItem.addMouseListener(mouseListener);↵ | | 56 | menuItem.addMouseListener(mouseListener);↵
|
56 | menuItem.setIcon(FileCellRenderer.dirIcon);↵ | | 57 | menuItem.setIcon(FileCellRenderer.fileIcon);↵
|
|
57 | if(sort)↵ | | 58 | if(sort)↵
|
58 | menuItems.addElement(menuItem);↵ | | 59 | menuItems.addElement(menuItem);↵
|
59 | else↵ | | 60 | else↵
|
60 | {↵ | | 61 | {↵
|
61 | if(menu.getMenuComponentCount() >= maxItems↵ | | 62 | if(menu.getMenuComponentCount() >= maxItems↵
|
62 | && i != model.getSize() - 1)↵ | | 63 | && iter.hasNext())↵
|
63 | {↵ | | 64 | {↵
|
64 | JMenu newMenu = new JMenu(↵ | | 65 | JMenu newMenu = new JMenu(↵
|
65 | jEdit.getProperty("common.more"));↵ | | 66 | jEdit.getProperty("common.more"));↵
|
66 | menu.add(newMenu);↵ | | 67 | menu.add(newMenu);↵
|
67 | menu = newMenu;↵ | | 68 | menu = newMenu;↵
|
68 | }↵ | | 69 | }↵
|
|
69 | menu.add(menuItem);↵ | | 70 | menu.add(menuItem);↵
|
70 | }↵ | | 71 | }↵
|
71 | }↵ | | 72 | }↵
|
|
72 | if(sort)↵ | | 73 | if(sort)↵
|
73 | {↵ | | 74 | {↵
|
74 | MiscUtilities.quicksort(menuItems,↵ | | 75 | MiscUtilities.quicksort(menuItems,↵
|
75 | new MiscUtilities.MenuItemCompare());↵ | | 76 | new MiscUtilities.MenuItemCompare());↵
|
76 | for(int i = 0; i < menuItems.size(); i++)↵ | | 77 | for(int i = 0; i < menuItems.size(); i++)↵
|
77 | {↵ | | 78 | {↵
|
78 | if(menu.getMenuComponentCount() >= maxItems↵ | | 79 | if(menu.getMenuComponentCount() >= maxItems↵
|
79 | && i != 0)↵ | | 80 | && i != 0)↵
|
80 | {↵ | | 81 | {↵
|
81 | JMenu newMenu = new JMenu(↵ | | 82 | JMenu newMenu = new JMenu(↵
|
82 | jEdit.getProperty("common.more"));↵ | | 83 | jEdit.getProperty("common.more"));↵
|
83 | menu.add(newMenu);↵ | | 84 | menu.add(newMenu);↵
|
84 | menu = newMenu;↵ | | 85 | menu = newMenu;↵
|
85 | }↵ | | 86 | }↵
|
|
86 | menu.add((JMenuItem)menuItems.elementAt(i));↵ | | 87 | menu.add((JMenuItem)menuItems.elementAt(i));↵
|
87 | | | 88 |
|