Gridarta Editor
BookmarkDirectoryDialog.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 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 javax.swing.Box;
24 import javax.swing.BoxLayout;
25 import javax.swing.JButton;
26 import javax.swing.JDialog;
27 import javax.swing.JOptionPane;
28 import javax.swing.JPanel;
29 import javax.swing.JTextField;
30 import javax.swing.WindowConstants;
31 import javax.swing.event.DocumentEvent;
32 import javax.swing.event.DocumentListener;
33 import javax.swing.text.JTextComponent;
38 import net.sf.japi.swing.action.ActionBuilder;
39 import net.sf.japi.swing.action.ActionBuilderFactory;
40 import net.sf.japi.swing.action.ActionMethod;
41 import org.jetbrains.annotations.NotNull;
42 
47 public class BookmarkDirectoryDialog extends JOptionPane {
48 
52  private static final long serialVersionUID = 1L;
53 
57  @NotNull
58  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
59 
64  @NotNull
65  private final JDialog dialog;
66 
71  @NotNull
72  private final JTextComponent directoryField = new JTextField();
73 
78  @NotNull
79  private final JButton okButton = new JButton(ACTION_BUILDER.createAction(false, "bookmarkDirectoryOkay", this));
80 
85  @NotNull
86  private final JButton cancelButton = new JButton(ACTION_BUILDER.createAction(false, "bookmarkDirectoryCancel", this));
87 
93  public BookmarkDirectoryDialog(@NotNull final Component parentComponent, @NotNull final String defaultDirectory) {
94  okButton.setDefaultCapable(true);
95  setOptions(new Object[] { okButton, cancelButton });
96 
97  setMessage(createPanel());
98 
100  directoryField.setText(defaultDirectory);
101 
102  final DocumentListener documentListener = new DocumentListener() {
103 
104  @Override
105  public void insertUpdate(@NotNull final DocumentEvent e) {
106  updateOkButton();
107  }
108 
109  @Override
110  public void removeUpdate(@NotNull final DocumentEvent e) {
111  updateOkButton();
112  }
113 
114  @Override
115  public void changedUpdate(@NotNull final DocumentEvent e) {
116  updateOkButton();
117  }
118 
119  };
120  directoryField.getDocument().addDocumentListener(documentListener);
121  updateOkButton();
122 
123  dialog = createDialog(parentComponent, ActionBuilderUtils.getString(ACTION_BUILDER, "bookmarkDirectory.title"));
124  dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
125  dialog.getRootPane().setDefaultButton(okButton);
126  dialog.pack();
127  dialog.setLocationRelativeTo(parentComponent);
128  }
129 
134  public boolean showDialog() {
135  dialog.setVisible(true);
136  return getValue() == okButton;
137  }
138 
143  @NotNull
144  private JPanel createPanel() {
145  final JPanel mainPanel = new JPanel();
146  mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
147 
148  mainPanel.setBorder(GUIConstants.DIALOG_BORDER);
149 
150  mainPanel.add(ActionBuilderUtils.newLabel(ACTION_BUILDER, "bookmarkDirectory.description"));
151  mainPanel.add(Box.createVerticalStrut(5));
152 
153  mainPanel.add(directoryField);
154  mainPanel.add(Box.createVerticalStrut(5));
155 
156  return mainPanel;
157  }
158 
162  @ActionMethod
163  public void bookmarkDirectoryOkay() {
164  if (isOkEnabled()) {
165  setValue(okButton);
166  }
167  }
168 
172  @ActionMethod
173  public void bookmarkDirectoryCancel() {
174  setValue(cancelButton);
175  }
176 
181  @NotNull
182  public String getDirectory() {
183  return directoryField.getText().trim();
184  }
185 
190  private void updateOkButton() {
191  okButton.setEnabled(isOkEnabled());
192  }
193 
198  private boolean isOkEnabled() {
200  }
201 
202 }
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.isOkEnabled
boolean isOkEnabled()
Returns whether the "ok" button is enabled.
Definition: BookmarkDirectoryDialog.java:198
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.gui.utils.GUIConstants
Defines common UI constants used in different dialogs.
Definition: GUIConstants.java:33
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.createPanel
JPanel createPanel()
Creates the GUI.
Definition: BookmarkDirectoryDialog.java:144
net.sf.gridarta.gui.mapmenu.MapMenuEntryDir.isValidDirectory
static boolean isValidDirectory(@NotNull final String title)
Returns whether a title is valid.
Definition: MapMenuEntryDir.java:62
net.sf
net.sf.gridarta.utils.ActionBuilderUtils.newLabel
static JLabel newLabel(@NotNull final ActionBuilder actionBuilder, @NotNull final String key)
Creates a new JLabel from a resource key.
Definition: ActionBuilderUtils.java:117
net.sf.gridarta.gui
Graphical User Interface of Gridarta.
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.bookmarkDirectoryOkay
void bookmarkDirectoryOkay()
Action method for okay.
Definition: BookmarkDirectoryDialog.java:163
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.getDirectory
String getDirectory()
Returns the directory name.
Definition: BookmarkDirectoryDialog.java:182
net
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.updateOkButton
void updateOkButton()
Sets the enabled state of okButton depending on the contents of directoryField.
Definition: BookmarkDirectoryDialog.java:190
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.okButton
final JButton okButton
The JButton for ok.
Definition: BookmarkDirectoryDialog.java:79
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.bookmarkDirectoryCancel
void bookmarkDirectoryCancel()
Action method for cancel.
Definition: BookmarkDirectoryDialog.java:173
net.sf.gridarta.gui.mapmenu
Definition: AbstractMapMenuPreferences.java:20
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.BookmarkDirectoryDialog
BookmarkDirectoryDialog(@NotNull final Component parentComponent, @NotNull final String defaultDirectory)
Creates a new instance.
Definition: BookmarkDirectoryDialog.java:93
net.sf.gridarta.gui.utils.TextComponentUtils.setAutoSelectOnFocus
static void setAutoSelectOnFocus(@NotNull final JTextComponent textComponent)
Selects all text of a JTextComponent when the component gains the focus.
Definition: TextComponentUtils.java:47
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.directoryField
final JTextComponent directoryField
The text input field for the directory name.
Definition: BookmarkDirectoryDialog.java:72
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
The ActionBuilder.
Definition: BookmarkDirectoryDialog.java:58
net.sf.gridarta.utils.ActionBuilderUtils
Utility class for ActionBuilder related functions.
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog
A dialog that queries a bookmark directory name.
Definition: BookmarkDirectoryDialog.java:47
net.sf.gridarta.gui.utils
Definition: AnimationComponent.java:20
net.sf.gridarta.gui.mapmenu.MapMenuEntryDir
A MapMenuEntry that represents a directory.
Definition: MapMenuEntryDir.java:28
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.serialVersionUID
static final long serialVersionUID
The serial Version UID.
Definition: BookmarkDirectoryDialog.java:52
net.sf.gridarta.gui.utils.TextComponentUtils
Utility class for JTextComponent related functions.
Definition: TextComponentUtils.java:34
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.dialog
final JDialog dialog
The dialog.
Definition: BookmarkDirectoryDialog.java:65
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.showDialog
boolean showDialog()
Opens the dialog.
Definition: BookmarkDirectoryDialog.java:134
net.sf.gridarta.gui.utils.GUIConstants.DIALOG_BORDER
Border DIALOG_BORDER
The Border object to be used when creating dialogs.
Definition: GUIConstants.java:38
net.sf.gridarta.gui.dialog.bookmarks.BookmarkDirectoryDialog.cancelButton
final JButton cancelButton
The JButton for cancel.
Definition: BookmarkDirectoryDialog.java:86