20 package net.sf.gridarta.gui.dialog.golocation;
22 import java.awt.GridBagConstraints;
23 import java.awt.GridBagLayout;
24 import java.awt.Insets;
25 import java.awt.Point;
26 import java.awt.Window;
27 import javax.swing.Box;
28 import javax.swing.BoxLayout;
29 import javax.swing.JButton;
30 import javax.swing.JComponent;
31 import javax.swing.JDialog;
32 import javax.swing.JLabel;
33 import javax.swing.JOptionPane;
34 import javax.swing.JPanel;
35 import javax.swing.JTextField;
36 import javax.swing.WindowConstants;
37 import javax.swing.border.CompoundBorder;
38 import javax.swing.border.EtchedBorder;
39 import javax.swing.border.TitledBorder;
40 import javax.swing.text.JTextComponent;
50 import net.
sf.japi.swing.action.ActionBuilder;
51 import net.
sf.japi.swing.action.ActionBuilderFactory;
52 import net.
sf.japi.swing.action.ActionMethod;
53 import org.jetbrains.annotations.NotNull;
54 import org.jetbrains.annotations.Nullable;
71 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
124 final JButton applyButton =
new JButton(
ACTION_BUILDER.createAction(
false,
"goLocationApply",
this));
135 dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
149 final JPanel mainPanel =
new JPanel();
150 mainPanel.setLayout(
new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
155 mainPanel.add(Box.createVerticalStrut(5));
157 final JComponent coordinatesPanel =
new JPanel(
new GridBagLayout());
158 final GridBagConstraints gbcLabel =
new GridBagConstraints();
159 final GridBagConstraints gbcField =
new GridBagConstraints();
160 gbcLabel.insets =
new Insets(2, 2, 2, 2);
161 gbcField.insets =
new Insets(2, 2, 2, 2);
162 gbcLabel.anchor = GridBagConstraints.EAST;
163 gbcField.gridwidth = GridBagConstraints.REMAINDER;
178 mainPanel.add(coordinatesPanel);
179 mainPanel.add(Box.createVerticalStrut(5));
217 final Point point =
new Point();
221 }
catch (
final IllegalArgumentException ignored) {
236 private int parseCoordinate(@NotNull
final JTextComponent textField,
final int range) {
239 result = Integer.parseInt(textField.getText());
240 }
catch (
final NumberFormatException e) {
241 ACTION_BUILDER.showMessageDialog(
this,
"goLocationCoordinateNotANumber");
242 textField.requestFocus();
244 }
catch (
final IllegalArgumentException e) {
245 ACTION_BUILDER.showMessageDialog(
this,
"goLocationCoordinateOutOfRange");
246 textField.requestFocus();
249 if (result < 0 || result >= range) {
250 ACTION_BUILDER.showMessageDialog(
this,
"goLocationCoordinateOutOfRange");
251 textField.requestFocus();
252 throw new IllegalArgumentException(
"invalid coordinate value: " + result);
259 public void setValue(@Nullable
final Object newValue) {
260 super.setValue(newValue);
261 if (newValue != UNINITIALIZED_VALUE) {