Gridarta Editor
ManageBookmarksDialog.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.gui.dialog.bookmarks;
21 
22 import java.awt.Component;
23 import java.awt.Dimension;
24 import java.awt.GridBagConstraints;
25 import java.awt.GridBagLayout;
26 import java.awt.dnd.DnDConstants;
27 import javax.swing.Action;
28 import javax.swing.Icon;
29 import javax.swing.JButton;
30 import javax.swing.JDialog;
31 import javax.swing.JLabel;
32 import javax.swing.JOptionPane;
33 import javax.swing.JPanel;
34 import javax.swing.JScrollPane;
35 import javax.swing.JTree;
36 import javax.swing.JViewport;
37 import javax.swing.ScrollPaneConstants;
38 import javax.swing.SwingConstants;
39 import javax.swing.WindowConstants;
40 import javax.swing.event.TreeSelectionEvent;
41 import javax.swing.event.TreeSelectionListener;
42 import javax.swing.tree.DefaultMutableTreeNode;
43 import javax.swing.tree.TreePath;
44 import javax.swing.tree.TreeSelectionModel;
60 import net.sf.japi.swing.action.ActionBuilder;
61 import net.sf.japi.swing.action.ActionBuilderFactory;
62 import net.sf.japi.swing.action.ActionMethod;
63 import org.jetbrains.annotations.NotNull;
64 import org.jetbrains.annotations.Nullable;
65 
70 public class ManageBookmarksDialog<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends JOptionPane {
71 
75  private static final long serialVersionUID = 1L;
76 
80  @NotNull
81  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
82 
86  @NotNull
88 
92  @NotNull
93  private final MapMenu mapMenu;
94 
98  @NotNull
100 
105  @NotNull
106  private final JTree bookmarksTree;
107 
112  @NotNull
113  private final JLabel preview = new JLabel();
114 
119  @NotNull
120  private final JDialog dialog;
121 
126  @NotNull
127  private final Action editAction = ACTION_BUILDER.createAction(false, "manageBookmarksEdit", this);
128 
133  @NotNull
134  private final Action removeAction = ACTION_BUILDER.createAction(false, "manageBookmarksRemove", this);
135 
140  @NotNull
141  private final Action unDeleteAction = ACTION_BUILDER.createAction(false, "manageBookmarksUnDelete", this);
142 
147  @NotNull
148  private final Action newDirectoryAction = ACTION_BUILDER.createAction(false, "manageBookmarksNewDirectory", this);
149 
154  @NotNull
155  private final JButton closeButton = new JButton(ACTION_BUILDER.createAction(false, "manageBookmarksClose", this));
156 
161  @Nullable
162  private TreePath selectedTreePath;
163 
170  public ManageBookmarksDialog(@NotNull final Component parentComponent, @NotNull final MapImageCache<G, A, R> mapImageCache, @NotNull final MapMenu mapMenu) {
171  this.mapImageCache = mapImageCache;
172  this.mapMenu = mapMenu;
175  //noinspection ResultOfObjectAllocationIgnored
176  new TreeDragSource(bookmarksTree, DnDConstants.ACTION_COPY_OR_MOVE);
177  //noinspection ResultOfObjectAllocationIgnored
179  final JButton editButton = new JButton(editAction);
180  final JButton removeButton = new JButton(removeAction);
181  final JButton unDeleteButton = new JButton(unDeleteAction);
182  final JButton newDirectoryButton = new JButton(newDirectoryAction);
183  setOptions(new Object[] { editButton, removeButton, unDeleteButton, newDirectoryButton, closeButton });
184 
185  setMessage(createPanel());
186 
187  dialog = createDialog(parentComponent, ActionBuilderUtils.getString(ACTION_BUILDER, "manageBookmarks.title"));
188  dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
189  dialog.setModal(false);
190  dialog.setResizable(true);
191  dialog.pack();
192  }
193 
198  public void showDialog(@NotNull final Component parentComponent) {
199  setInitialValue(bookmarksTree);
200  bookmarksTree.setRootVisible(false);
201  bookmarksTree.setSelectionRow(0);
202  dialog.setLocationRelativeTo(parentComponent);
203  dialog.setMinimumSize(new Dimension(600, 300));
204  dialog.setPreferredSize(new Dimension(800, 600));
205  dialog.setVisible(true);
206  dialog.toFront();
207  }
208 
213  @NotNull
214  private JPanel createPanel() {
215  preview.setHorizontalAlignment(SwingConstants.CENTER);
216  preview.setPreferredSize(new Dimension(200, 200));
217 
218  final JPanel mainPanel = new JPanel(new GridBagLayout());
219 
220  mainPanel.setBorder(GUIConstants.DIALOG_BORDER);
221 
222  final JScrollPane bookmarksScrollPane = new JScrollPane();
223  bookmarksScrollPane.setViewportView(bookmarksTree);
224  bookmarksScrollPane.setBackground(bookmarksTree.getBackground());
225  bookmarksScrollPane.getViewport().add(bookmarksTree);
226  bookmarksScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
227  bookmarksScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
228  bookmarksScrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
229 
230  final GridBagConstraints gbc = new GridBagConstraints();
231  gbc.fill = GridBagConstraints.BOTH;
232  gbc.weightx = 1.0;
233  gbc.weighty = 1.0;
234  gbc.gridx = 0;
235  gbc.gridy = 0;
236  mainPanel.add(bookmarksScrollPane, gbc);
237 
238  gbc.weightx = 0.0;
239  gbc.gridx = 1;
240  mainPanel.add(preview, gbc);
241 
242  bookmarksTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
244 
245  final TreeSelectionListener treeSelectionListener = new TreeSelectionListener() {
246 
247  @Override
248  public void valueChanged(final TreeSelectionEvent e) {
250  }
251 
252  };
253  bookmarksTree.addTreeSelectionListener(treeSelectionListener);
255 
256  return mainPanel;
257  }
258 
262  private void updateSelectedBookmark() {
263  selectedTreePath = bookmarksTree.getSelectionPath();
264  updateActions();
265  }
266 
270  @ActionMethod
271  public void manageBookmarksEdit() {
272  doEditBookmark(true);
273  }
274 
278  @ActionMethod
279  public void manageBookmarksRemove() {
280  doRemoveBookmark(true);
281  }
282 
286  @ActionMethod
287  public void manageBookmarksUnDelete() {
288  doUnDeleteBookmark(true);
289  }
290 
294  @ActionMethod
296  doNewDirectory(true);
297  }
298 
302  @ActionMethod
303  public void manageBookmarksClose() {
305  }
306 
307  @Override
308  public void setValue(@Nullable final Object newValue) {
309  super.setValue(newValue);
310  if (newValue != UNINITIALIZED_VALUE) {
311  mapMenu.save();
312  }
313  }
314 
320  private boolean doEditBookmark(final boolean performAction) {
321  final TreePath tmpSelectedTreePath = selectedTreePath;
322  if (tmpSelectedTreePath == null) {
323  return false;
324  }
325 
326  final DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) tmpSelectedTreePath.getLastPathComponent();
327  if (selectedTreeNode == mapMenu.getRoot()) {
328  return false;
329  }
330 
331  if (performAction) {
332  final DefaultMutableTreeNode tmpSelectedTreeNode = (DefaultMutableTreeNode) tmpSelectedTreePath.getLastPathComponent();
333  final MapMenuEntryVisitor mapMenuEntryVisitor = new MapMenuEntryVisitor() {
334 
335  @Override
336  public void visit(@NotNull final MapMenuEntryDir mapMenuEntry) {
337  final BookmarkDirectoryDialog bookmarkDirectoryDialog = new BookmarkDirectoryDialog(ManageBookmarksDialog.this, mapMenuEntry.getTitle());
338  if (bookmarkDirectoryDialog.showDialog()) {
339  mapMenuEntry.setTitle(bookmarkDirectoryDialog.getDirectory());
340  bookmarksTree.getModel().valueForPathChanged(tmpSelectedTreePath, mapMenuEntry);
341  }
342  }
343 
344  @Override
345  public void visit(@NotNull final MapMenuEntryMap mapMenuEntry) {
346  final EditBookmarkDialog editBookmarkDialog = new EditBookmarkDialog(ManageBookmarksDialog.this, mapMenuEntry.getTitle());
347  if (editBookmarkDialog.showDialog()) {
348  mapMenuEntry.setTitle(editBookmarkDialog.getDescription());
349  bookmarksTree.getModel().valueForPathChanged(tmpSelectedTreePath, mapMenuEntry);
350  }
351  }
352 
353  };
354  ((MapMenuEntry) tmpSelectedTreeNode.getUserObject()).visit(mapMenuEntryVisitor);
355  }
356 
357  return true;
358  }
359 
365  private boolean doRemoveBookmark(final boolean performAction) {
366  final TreePath tmpSelectedTreePath = selectedTreePath;
367  if (tmpSelectedTreePath == null) {
368  return false;
369  }
370 
371  final DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) tmpSelectedTreePath.getLastPathComponent();
372  if (selectedTreeNode == mapMenu.getRoot()) {
373  return false;
374  }
375 
376  if (performAction) {
377  final int[] selectionRows = bookmarksTree.getSelectionRows();
378  mapMenu.removeNode(selectedTreeNode);
379  final int index = selectionRows == null ? 0 : selectionRows[0];
380  if (index > 0) {
381  bookmarksTree.setSelectionRow(index - 1);
382  }
383  }
384 
385  return true;
386  }
387 
393  private boolean doUnDeleteBookmark(final boolean performAction) {
394  final DeletedNode deletedNode = mapMenu.getDeletedNode(performAction);
395  if (deletedNode == null) {
396  return false;
397  }
398 
399  if (performAction) {
400  final TreePath treePath = mapMenu.addMapMenuEntry(deletedNode.getDirectory(), deletedNode.getTreeNode());
401  bookmarksTree.setSelectionPath(treePath);
402  }
403 
404  return true;
405  }
406 
412  private boolean doNewDirectory(final boolean performAction) {
413  final TreePath tmpSelectedTreePath = selectedTreePath;
414  if (tmpSelectedTreePath == null) {
415  return false;
416  }
417 
418  if (performAction) {
419  final DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) tmpSelectedTreePath.getLastPathComponent();
420  final BookmarkDirectoryDialog bookmarkDirectoryDialog = new BookmarkDirectoryDialog(this, "");
421  if (bookmarkDirectoryDialog.showDialog()) {
422  final String directory = bookmarkDirectoryDialog.getDirectory();
423  final MapMenuEntry mapEntry = new MapMenuEntryDir(directory);
424  final DefaultMutableTreeNode parent;
425  final int index;
426  if (selectedTreeNode == mapMenu.getRoot()) {
427  parent = selectedTreeNode;
428  index = 0;
429  } else {
430  parent = (DefaultMutableTreeNode) selectedTreeNode.getParent();
431  assert parent != null;
432  index = parent.getIndex(selectedTreeNode) + 1;
433  assert index != 0;
434  }
435  final TreePath treePath = mapMenu.insertNodeInto(mapEntry, parent, index);
436  bookmarksTree.setSelectionPath(treePath);
437 
438  }
439  }
440 
441  return true;
442  }
443 
447  private void updateActions() {
448  editAction.setEnabled(doEditBookmark(false));
449  removeAction.setEnabled(doRemoveBookmark(false));
450  unDeleteAction.setEnabled(doUnDeleteBookmark(false));
451  newDirectoryAction.setEnabled(doNewDirectory(false));
452  @Nullable final Icon previewIcon;
453  if (selectedTreePath == null) {
454  previewIcon = null;
455  } else {
456  final DefaultMutableTreeNode tmpSelectedTreeNode = (DefaultMutableTreeNode) selectedTreePath.getLastPathComponent();
457  final MapMenuEntry mapMenuEntry = (MapMenuEntry) tmpSelectedTreeNode.getUserObject();
458  previewIcon = mapMenuEntryIcons.getIcon(mapMenuEntry);
459  }
460  preview.setIcon(previewIcon);
461  }
462 
463 }
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.manageBookmarksUnDelete
void manageBookmarksUnDelete()
Definition: ManageBookmarksDialog.java:287
net.sf.gridarta.gui.dialog.bookmarks.EditBookmarkDialog.getDescription
String getDescription()
Definition: EditBookmarkDialog.java:181
net.sf.gridarta.gui.mapimagecache
Definition: ImageType.java:20
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.doRemoveBookmark
boolean doRemoveBookmark(final boolean performAction)
Definition: ManageBookmarksDialog.java:365
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.manageBookmarksEdit
void manageBookmarksEdit()
Definition: ManageBookmarksDialog.java:271
net.sf.gridarta.gui.dialog.bookmarks.EditBookmarkDialog
Definition: EditBookmarkDialog.java:46
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.showDialog
void showDialog(@NotNull final Component parentComponent)
Definition: ManageBookmarksDialog.java:198
net.sf.gridarta.gui.mapmenu.MapMenuEntry
Definition: MapMenuEntry.java:29
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.preview
final JLabel preview
Definition: ManageBookmarksDialog.java:113
net.sf.gridarta
net.sf.gridarta.gui.utils.GUIConstants
Definition: GUIConstants.java:33
net.sf.gridarta.gui.mapmenu.MapMenu.getDeletedNode
DeletedNode getDeletedNode(final boolean delete)
Definition: MapMenu.java:342
net.sf
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.createPanel
JPanel createPanel()
Definition: ManageBookmarksDialog.java:214
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.manageBookmarksClose
void manageBookmarksClose()
Definition: ManageBookmarksDialog.java:303
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.closeButton
final JButton closeButton
Definition: ManageBookmarksDialog.java:155
net.sf.gridarta.gui.mapmenu.TreeDragSource
Definition: TreeDragSource.java:42
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.editAction
final Action editAction
Definition: ManageBookmarksDialog.java:127
net.sf.gridarta.gui.mapmenu.MapMenuEntryTreeCellRenderer
Definition: MapMenuEntryTreeCellRenderer.java:37
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.gui.dialog.bookmarks.MapMenuEntryIcons
Definition: MapMenuEntryIcons.java:36
net.sf.gridarta.gui
net.sf.gridarta.gui.mapmenu.MapMenu
Definition: MapMenu.java:46
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.getDirectory
String getDirectory()
Definition: BookmarkDirectoryDialog.java:182
net.sf.gridarta.gui.mapmenu.MapMenu.DeletedNode
Definition: MapMenu.java:398
net.sf.gridarta.gui.mapimagecache.MapImageCache
Definition: MapImageCache.java:54
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.dialog.bookmarks.EditBookmarkDialog.showDialog
boolean showDialog()
Definition: EditBookmarkDialog.java:133
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.newDirectoryAction
final Action newDirectoryAction
Definition: ManageBookmarksDialog.java:148
net.sf.gridarta.gui.mapmenu.MapMenu.save
void save()
Definition: MapMenu.java:151
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog
Definition: ManageBookmarksDialog.java:70
net.sf.gridarta.gui.mapmenu.MapMenu.insertNodeInto
TreePath insertNodeInto(@NotNull final MapMenuEntry mapEntry, @NotNull final DefaultMutableTreeNode parent, final int index)
Definition: MapMenu.java:280
net.sf.gridarta.model.maparchobject.MapArchObject
Definition: MapArchObject.java:40
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.mapMenuEntryIcons
final MapMenuEntryIcons mapMenuEntryIcons
Definition: ManageBookmarksDialog.java:99
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.updateSelectedBookmark
void updateSelectedBookmark()
Definition: ManageBookmarksDialog.java:262
net.sf.gridarta.gui.mapmenu.MapMenu.newTree
JTree newTree()
Definition: MapMenu.java:380
net.sf.gridarta.gui.dialog.bookmarks.MapMenuEntryIcons.getIcon
Icon getIcon(@NotNull final MapMenuEntry mapMenuEntry)
Definition: MapMenuEntryIcons.java:64
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.bookmarksTree
final JTree bookmarksTree
Definition: ManageBookmarksDialog.java:106
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.dialog
final JDialog dialog
Definition: ManageBookmarksDialog.java:120
net.sf.gridarta.gui.mapmenu
Definition: AbstractMapMenuPreferences.java:20
net.sf.gridarta.gui.mapmenu.MapMenu.DeletedNode.getDirectory
String getDirectory()
Definition: MapMenu.java:427
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.manageBookmarksNewDirectory
void manageBookmarksNewDirectory()
Definition: ManageBookmarksDialog.java:295
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.setValue
void setValue(@Nullable final Object newValue)
Definition: ManageBookmarksDialog.java:308
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.unDeleteAction
final Action unDeleteAction
Definition: ManageBookmarksDialog.java:141
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Definition: Archetype.java:41
net.sf.gridarta.gui.mapmenu.MapMenu.getRoot
DefaultMutableTreeNode getRoot()
Definition: MapMenu.java:389
net.sf.gridarta.gui.mapmenu.TreeDropTarget
Definition: TreeDropTarget.java:46
net.sf.gridarta.gui.mapmenu.MapMenu.DeletedNode.getTreeNode
DefaultMutableTreeNode getTreeNode()
Definition: MapMenu.java:436
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.updateActions
void updateActions()
Definition: ManageBookmarksDialog.java:447
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Definition: ManageBookmarksDialog.java:81
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.selectedTreePath
TreePath selectedTreePath
Definition: ManageBookmarksDialog.java:162
net.sf.gridarta.gui.mapmenu.MapMenuEntryVisitor
Definition: MapMenuEntryVisitor.java:28
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.doNewDirectory
boolean doNewDirectory(final boolean performAction)
Definition: ManageBookmarksDialog.java:412
net.sf.gridarta.utils.ActionBuilderUtils
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.serialVersionUID
static final long serialVersionUID
Definition: ManageBookmarksDialog.java:75
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.mapmenu.MapMenu.removeNode
void removeNode(@NotNull final DefaultMutableTreeNode treeNode)
Definition: MapMenu.java:294
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog
Definition: BookmarkDirectoryDialog.java:47
net.sf.gridarta.gui.mapmenu.MapMenuEntryMap
Definition: MapMenuEntryMap.java:29
net.sf.gridarta.gui.utils
Definition: AnimationComponent.java:20
net.sf.gridarta.gui.mapmenu.MapMenuEntryDir
Definition: MapMenuEntryDir.java:28
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.doUnDeleteBookmark
boolean doUnDeleteBookmark(final boolean performAction)
Definition: ManageBookmarksDialog.java:393
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.ManageBookmarksDialog
ManageBookmarksDialog(@NotNull final Component parentComponent, @NotNull final MapImageCache< G, A, R > mapImageCache, @NotNull final MapMenu mapMenu)
Definition: ManageBookmarksDialog.java:170
net.sf.gridarta.gui.mapmenu.MapMenu.addMapMenuEntry
void addMapMenuEntry(@NotNull final String directory, @NotNull final MapMenuEntry mapMenuEntry)
Definition: MapMenu.java:210
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.doEditBookmark
boolean doEditBookmark(final boolean performAction)
Definition: ManageBookmarksDialog.java:320
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.mapImageCache
final MapImageCache< G, A, R > mapImageCache
Definition: ManageBookmarksDialog.java:87
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.manageBookmarksRemove
void manageBookmarksRemove()
Definition: ManageBookmarksDialog.java:279
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.removeAction
final Action removeAction
Definition: ManageBookmarksDialog.java:134
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.showDialog
boolean showDialog()
Definition: BookmarkDirectoryDialog.java:134
net.sf.gridarta.gui.utils.GUIConstants.DIALOG_BORDER
Border DIALOG_BORDER
Definition: GUIConstants.java:38
net.sf.gridarta.gui.dialog.bookmarks.ManageBookmarksDialog.mapMenu
final MapMenu mapMenu
Definition: ManageBookmarksDialog.java:93