source: josm/trunk/src/org/openstreetmap/josm/gui/MainMenu.java@ 795

Last change on this file since 795 was 795, checked in by stoecker, 16 years ago

einstein mode preferences now shows all options and their default values

  • Property svn:eol-style set to native
File size: 10.4 KB
Line 
1// License: GPL. See LICENSE file for details.
2
3package org.openstreetmap.josm.gui;
4
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.event.ActionEvent;
8import java.awt.event.ActionListener;
9
10import javax.swing.JCheckBoxMenuItem;
11import javax.swing.JMenu;
12import javax.swing.JMenuBar;
13import javax.swing.JMenuItem;
14import javax.swing.KeyStroke;
15
16import org.openstreetmap.josm.Main;
17import org.openstreetmap.josm.actions.AboutAction;
18import org.openstreetmap.josm.actions.AlignInCircleAction;
19import org.openstreetmap.josm.actions.AlignInLineAction;
20import org.openstreetmap.josm.actions.AlignInRectangleAction;
21import org.openstreetmap.josm.actions.AutoScaleAction;
22import org.openstreetmap.josm.actions.CombineWayAction;
23import org.openstreetmap.josm.actions.CopyAction;
24import org.openstreetmap.josm.actions.DeleteAction;
25import org.openstreetmap.josm.actions.DownloadAction;
26import org.openstreetmap.josm.actions.DuplicateAction;
27import org.openstreetmap.josm.actions.ExitAction;
28import org.openstreetmap.josm.actions.GpxExportAction;
29import org.openstreetmap.josm.actions.HelpAction;
30import org.openstreetmap.josm.actions.JoinNodeWayAction;
31import org.openstreetmap.josm.actions.JosmAction;
32import org.openstreetmap.josm.actions.MergeNodesAction;
33import org.openstreetmap.josm.actions.NewAction;
34import org.openstreetmap.josm.actions.OpenAction;
35import org.openstreetmap.josm.actions.PasteAction;
36import org.openstreetmap.josm.actions.PasteTagsAction;
37import org.openstreetmap.josm.actions.PreferencesAction;
38import org.openstreetmap.josm.actions.RedoAction;
39import org.openstreetmap.josm.actions.ReverseWayAction;
40import org.openstreetmap.josm.actions.SaveAction;
41import org.openstreetmap.josm.actions.SaveAsAction;
42import org.openstreetmap.josm.actions.SelectAllAction;
43import org.openstreetmap.josm.actions.SplitWayAction;
44import org.openstreetmap.josm.actions.UndoAction;
45import org.openstreetmap.josm.actions.UnselectAllAction;
46import org.openstreetmap.josm.actions.UploadAction;
47import org.openstreetmap.josm.actions.ZoomInAction;
48import org.openstreetmap.josm.actions.ZoomOutAction;
49import org.openstreetmap.josm.actions.audio.AudioBackAction;
50import org.openstreetmap.josm.actions.audio.AudioFasterAction;
51import org.openstreetmap.josm.actions.audio.AudioFwdAction;
52import org.openstreetmap.josm.actions.audio.AudioNextAction;
53import org.openstreetmap.josm.actions.audio.AudioPlayPauseAction;
54import org.openstreetmap.josm.actions.audio.AudioPrevAction;
55import org.openstreetmap.josm.actions.audio.AudioSlowerAction;
56import org.openstreetmap.josm.actions.search.SearchAction;
57import org.openstreetmap.josm.data.DataSetChecker;
58
59/**
60 * This is the JOSM main menu bar. It is overwritten to initialize itself and provide
61 * all menu entries as member variables (sort of collect them).
62 *
63 * It also provides possibilities to attach new menu entries (used by plugins).
64 *
65 * @author Immanuel.Scholz
66 */
67public class MainMenu extends JMenuBar {
68
69 /* File menu */
70 public final NewAction newAction = new NewAction();
71 public final OpenAction open = new OpenAction();
72 public final JosmAction save = new SaveAction(null);
73 public final JosmAction saveAs = new SaveAsAction(null);
74 public final JosmAction gpxExport = new GpxExportAction(null);
75 public final DownloadAction download = new DownloadAction();
76 public final JosmAction upload = new UploadAction();
77 public final JosmAction exit = new ExitAction();
78
79 /* Edit menu */
80 public final UndoAction undo = new UndoAction();
81 public final RedoAction redo = new RedoAction();
82 public final JosmAction copy = new CopyAction();
83 public final JosmAction paste = new PasteAction();
84 public final JosmAction delete = new DeleteAction();
85 public final JosmAction pasteTags = new PasteTagsAction(copy);
86 public final JosmAction duplicate = new DuplicateAction();
87 public final JosmAction selectAll = new SelectAllAction();
88 public final JosmAction unselectAll = new UnselectAllAction();
89 /* crashes when loading data, if using JosmAction for search */
90 public final JosmAction search = new SearchAction();
91 public final JosmAction preferences = new PreferencesAction();
92
93 /* View menu */
94
95 /* Tools menu */
96 public final JosmAction splitWay = new SplitWayAction();
97 public final JosmAction combineWay = new CombineWayAction();
98 public final JosmAction reverseWay = new ReverseWayAction();
99 public final JosmAction alignInCircle = new AlignInCircleAction();
100 public final JosmAction alignInLine = new AlignInLineAction();
101 public final JosmAction alignInRect = new AlignInRectangleAction();
102 public final JosmAction mergeNodes = new MergeNodesAction();
103 public final JosmAction joinNodeWay = new JoinNodeWayAction();
104
105 /* Audio menu */
106 public final JosmAction audioPlayPause = new AudioPlayPauseAction();
107 public final JosmAction audioNext = new AudioNextAction();
108 public final JosmAction audioPrev = new AudioPrevAction();
109 public final JosmAction audioFwd = new AudioFwdAction();
110 public final JosmAction audioBack = new AudioBackAction();
111 public final JosmAction audioFaster = new AudioFasterAction();
112 public final JosmAction audioSlower = new AudioSlowerAction();
113
114 /* Help menu */
115 public final HelpAction help = new HelpAction();
116 public final JosmAction about = new AboutAction();
117
118 public final JMenu fileMenu = new JMenu(tr("File"));
119 public final JMenu editMenu = new JMenu(tr("Edit"));
120 public final JMenu viewMenu = new JMenu(tr("View"));
121 public final JMenu toolsMenu = new JMenu(tr("Tools"));
122 public final JMenu audioMenu = new JMenu(tr("Audio"));
123 public final JMenu presetsMenu = new JMenu(tr("Presets"));
124 public final JMenu helpMenu = new JMenu(tr("Help"));
125
126
127 public MainMenu() {
128 JMenuItem current;
129
130 fileMenu.setMnemonic('F');
131 current = fileMenu.add(newAction);
132 current.setAccelerator(newAction.shortCut);
133 current = fileMenu.add(open);
134 current.setAccelerator(open.shortCut);
135 fileMenu.addSeparator();
136 current = fileMenu.add(save);
137 current.setAccelerator(save.shortCut);
138 current = fileMenu.add(saveAs);
139 current.setAccelerator(saveAs.shortCut);
140 current = fileMenu.add(gpxExport);
141 current.setAccelerator(gpxExport.shortCut);
142 fileMenu.addSeparator();
143 current = fileMenu.add(download);
144 current.setAccelerator(download.shortCut);
145 current = fileMenu.add(upload);
146 current.setAccelerator(upload.shortCut);
147 fileMenu.addSeparator();
148 current = fileMenu.add(exit);
149 current.setAccelerator(exit.shortCut);
150 add(fileMenu);
151
152 editMenu.setMnemonic('E');
153 current = editMenu.add(undo);
154 current.setAccelerator(undo.shortCut);
155 current = editMenu.add(redo);
156 current.setAccelerator(redo.shortCut);
157 editMenu.addSeparator();
158 current = editMenu.add(copy);
159 current.setAccelerator(copy.shortCut);
160 current = editMenu.add(delete);
161 current.setAccelerator(delete.shortCut);
162 current = editMenu.add(paste);
163 current.setAccelerator(paste.shortCut);
164 current = editMenu.add(pasteTags);
165 current.setAccelerator(pasteTags.shortCut);
166 current = editMenu.add(duplicate);
167 current.setAccelerator(duplicate.shortCut);
168 editMenu.addSeparator();
169 current = editMenu.add(selectAll);
170 current.setAccelerator(selectAll.shortCut);
171 current = editMenu.add(unselectAll);
172 current.setAccelerator(unselectAll.shortCut);
173 editMenu.addSeparator();
174 current = editMenu.add(search);
175 current.setAccelerator(search.shortCut);
176 editMenu.addSeparator();
177 current = editMenu.add(preferences);
178 current.setAccelerator(preferences.shortCut);
179 add(editMenu);
180
181 viewMenu.setMnemonic('V');
182 for (String mode : AutoScaleAction.modes) {
183 JosmAction autoScaleAction = new AutoScaleAction(mode);
184 current = viewMenu.add(autoScaleAction);
185 current.setAccelerator(autoScaleAction.shortCut);
186 }
187 viewMenu.addSeparator();
188 JosmAction a = new ZoomOutAction();
189 viewMenu.add(a).setAccelerator(a.shortCut);
190 a = new ZoomInAction();
191 viewMenu.add(a).setAccelerator(a.shortCut);
192
193 viewMenu.addSeparator();
194
195 // TODO move code to an "action" like the others?
196 final JCheckBoxMenuItem wireframe = new JCheckBoxMenuItem(tr("Wireframe view"));
197 wireframe.setSelected(Main.pref.getBoolean("draw.wireframe", false));
198 wireframe.setAccelerator(KeyStroke.getKeyStroke("ctrl W"));
199 wireframe.addActionListener(new ActionListener() {
200 public void actionPerformed(ActionEvent ev) {
201 Main.pref.put("draw.wireframe", wireframe.isSelected());
202 if (Main.map != null) {
203 Main.map.mapView.repaint();
204 }
205 }
206 });
207 viewMenu.add(wireframe);
208
209 add(viewMenu);
210
211 toolsMenu.setMnemonic('T');
212 current = toolsMenu.add(splitWay);
213 current.setAccelerator(splitWay.shortCut);
214 current = toolsMenu.add(combineWay);
215 current.setAccelerator(combineWay.shortCut);
216 toolsMenu.addSeparator();
217 current = toolsMenu.add(reverseWay);
218 current.setAccelerator(reverseWay.shortCut);
219 toolsMenu.addSeparator();
220 current = toolsMenu.add(alignInCircle);
221 current.setAccelerator(alignInCircle.shortCut);
222 current = toolsMenu.add(alignInLine);
223 current.setAccelerator(alignInLine.shortCut);
224 current = toolsMenu.add(alignInRect);
225 current.setAccelerator(alignInRect.shortCut);
226 toolsMenu.addSeparator();
227 current = toolsMenu.add(mergeNodes);
228 current.setAccelerator(mergeNodes.shortCut);
229 current = toolsMenu.add(joinNodeWay);
230 current.setAccelerator(joinNodeWay.shortCut);
231 add(toolsMenu);
232
233 if (! Main.pref.getBoolean("audio.menuinvisible")) {
234 audioMenu.setMnemonic('A');
235 current = audioMenu.add(audioPlayPause);
236 current.setAccelerator(audioPlayPause.shortCut);
237 current = audioMenu.add(audioNext);
238 current.setAccelerator(audioNext.shortCut);
239 current = audioMenu.add(audioPrev);
240 current.setAccelerator(audioPrev.shortCut);
241 current = audioMenu.add(audioFwd);
242 current.setAccelerator(audioFwd.shortCut);
243 current = audioMenu.add(audioBack);
244 current.setAccelerator(audioBack.shortCut);
245 current = audioMenu.add(audioSlower);
246 current.setAccelerator(audioSlower.shortCut);
247 current = audioMenu.add(audioFaster);
248 current.setAccelerator(audioFaster.shortCut);
249 add(audioMenu);
250 }
251
252 add(presetsMenu);
253 presetsMenu.setMnemonic('P');
254
255 helpMenu.setMnemonic('H');
256 JMenuItem check = new JMenuItem("DEBUG: Check Dataset");
257 check.addActionListener(new ActionListener(){
258 public void actionPerformed(ActionEvent e) {
259 DataSetChecker.check();
260 }
261 });
262 current = helpMenu.add(check);
263 current = helpMenu.add(help);
264 //current.setAccelerator(help.shortCut);
265 current = helpMenu.add(about);
266 current.setAccelerator(about.shortCut);
267 add(helpMenu);
268 }
269}
Note: See TracBrowser for help on using the repository browser.