source: josm/trunk/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java@ 12531

Last change on this file since 12531 was 11366, checked in by Don-vip, 7 years ago

findbugs - SIC_INNER_SHOULD_BE_STATIC_ANON

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.io;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.event.ActionEvent;
8import java.io.File;
9import java.util.Collection;
10import java.util.Collections;
11
12import javax.swing.AbstractAction;
13import javax.swing.JMenu;
14import javax.swing.JMenuItem;
15import javax.swing.JSeparator;
16import javax.swing.event.MenuEvent;
17import javax.swing.event.MenuListener;
18
19import org.openstreetmap.josm.Main;
20import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
21import org.openstreetmap.josm.tools.ImageProvider;
22
23/**
24 * Show list of recently opened files
25 */
26public class RecentlyOpenedFilesMenu extends JMenu {
27 private ClearAction clearAction;
28
29 /**
30 * Constructs a new {@code RecentlyOpenedFilesMenu}.
31 */
32 public RecentlyOpenedFilesMenu() {
33 super(tr("Open Recent"));
34 setToolTipText(tr("List of recently opened files"));
35 setIcon(ImageProvider.get("openrecent", ImageProvider.ImageSizes.MENU));
36 putClientProperty("help", ht("/Action/OpenRecent"));
37
38 // build dynamically
39 addMenuListener(new MenuListener() {
40 @Override
41 public void menuSelected(MenuEvent e) {
42 rebuild();
43 }
44
45 @Override
46 public void menuDeselected(MenuEvent e) {
47 // Do nothing
48 }
49
50 @Override
51 public void menuCanceled(MenuEvent e) {
52 // Do nothing
53 }
54 });
55 }
56
57 private void rebuild() {
58 removeAll();
59 Collection<String> fileHistory = Main.pref.getCollection("file-open.history");
60
61 for (final String file : fileHistory) {
62 add(new OpenRecentAction(file));
63 }
64 add(new JSeparator());
65 if (clearAction == null) {
66 clearAction = new ClearAction();
67 }
68 JMenuItem clearItem = new JMenuItem(clearAction);
69 clearItem.setEnabled(!fileHistory.isEmpty());
70 add(clearItem);
71 }
72
73 static final class OpenRecentAction extends AbstractAction {
74 private final String file;
75
76 OpenRecentAction(String file) {
77 this.file = file;
78 putValue(NAME, file);
79 putValue("help", ht("/Action/OpenRecent"));
80 putValue("toolbar", Boolean.FALSE);
81 }
82
83 @Override
84 public void actionPerformed(ActionEvent e) {
85 OpenFileTask task = new OpenFileTask(Collections.singletonList(new File(file)), null);
86 task.setRecordHistory(true);
87 Main.worker.submit(task);
88 }
89 }
90
91 private static class ClearAction extends AbstractAction {
92
93 ClearAction() {
94 super(tr("Clear"));
95 putValue(SHORT_DESCRIPTION, tr("Clear the list of recently opened files"));
96 putValue("help", ht("/Action/OpenRecent"));
97 putValue("toolbar", "recentlyopenedfiles/clear");
98 }
99
100 @Override
101 public void actionPerformed(ActionEvent e) {
102 Main.pref.putCollection("file-open.history", null);
103 }
104 }
105}
Note: See TracBrowser for help on using the repository browser.