source: josm/trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java@ 2810

Last change on this file since 2810 was 2810, checked in by stoecker, 14 years ago

fixed typo - closes #4341

  • Property svn:eol-style set to native
File size: 4.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.preferences;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.BorderLayout;
7import java.awt.Component;
8import java.awt.Container;
9import java.awt.Dimension;
10import java.awt.FlowLayout;
11import java.awt.event.ActionEvent;
12import java.awt.event.KeyEvent;
13import java.awt.event.WindowAdapter;
14import java.awt.event.WindowEvent;
15
16import javax.swing.AbstractAction;
17import javax.swing.BorderFactory;
18import javax.swing.JComponent;
19import javax.swing.JDialog;
20import javax.swing.JOptionPane;
21import javax.swing.JPanel;
22import javax.swing.KeyStroke;
23
24import org.openstreetmap.josm.gui.SideButton;
25import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
26import org.openstreetmap.josm.gui.help.HelpUtil;
27import org.openstreetmap.josm.tools.ImageProvider;
28import org.openstreetmap.josm.tools.WindowGeometry;
29
30public class PreferenceDialog extends JDialog {
31
32 private PreferenceTabbedPane tpPreferences;
33 private boolean canceled;
34
35 protected JPanel buildActionPanel() {
36 JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER));
37 pnl.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
38 pnl.add(new SideButton(new OKAction()));
39 pnl.add(new SideButton(new CancelAction()));
40 pnl.add(new SideButton(new ContextSensitiveHelpAction(HelpUtil.ht("/Action/Preferences"))));
41 return pnl;
42 }
43
44 protected void build() {
45 Container c = getContentPane();
46 c.setLayout(new BorderLayout());
47 c.add(tpPreferences = new PreferenceTabbedPane(), BorderLayout.CENTER);
48 tpPreferences.buildGui();
49 tpPreferences.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
50 c.add(buildActionPanel(), BorderLayout.SOUTH);
51
52 addWindowListener(new WindowEventHandler());
53
54 getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
55 getRootPane().getActionMap().put("cancel", new CancelAction());
56 HelpUtil.setHelpContext(getRootPane(), HelpUtil.ht("/Action/Preferences"));
57 }
58
59 public PreferenceDialog(Component parent) {
60 super(JOptionPane.getFrameForComponent(parent), tr("Preferences"), true /* modal */);
61 build();
62 }
63
64 public boolean isCanceled() {
65 return canceled;
66 }
67
68 protected void setCanceled(boolean canceled) {
69 this.canceled = canceled;
70 }
71
72 @Override
73 public void setVisible(boolean visible) {
74 if (visible) {
75 new WindowGeometry(
76 getClass().getName() + ".geometry",
77 WindowGeometry.centerInWindow(
78 getParent(),
79 new Dimension(600,800)
80 )
81 ).apply(this);
82 } else if (!visible && isShowing()){
83 new WindowGeometry(this).remember(getClass().getName() + ".geometry");
84 }
85 super.setVisible(visible);
86 }
87
88 class CancelAction extends AbstractAction {
89 public CancelAction() {
90 putValue(NAME, tr("Cancel"));
91 putValue(SMALL_ICON, ImageProvider.get("cancel"));
92 putValue(SHORT_DESCRIPTION, tr("Close the preferences dialog and discard preference updates"));
93 }
94
95 public void cancel() {
96 setCanceled(true);
97 setVisible(false);
98 }
99
100 public void actionPerformed(ActionEvent evt) {
101 cancel();
102 }
103 }
104
105 class OKAction extends AbstractAction {
106 public OKAction() {
107 putValue(NAME, tr("OK"));
108 putValue(SMALL_ICON, ImageProvider.get("ok"));
109 putValue(SHORT_DESCRIPTION, tr("Save the preferences and close the dialog"));
110 }
111
112 public void actionPerformed(ActionEvent evt) {
113 tpPreferences.savePreferences();
114 setCanceled(false);
115 setVisible(false);
116 }
117 }
118
119 class WindowEventHandler extends WindowAdapter {
120 @Override
121 public void windowClosing(WindowEvent arg0) {
122 new CancelAction().cancel();
123 }
124 }
125}
Note: See TracBrowser for help on using the repository browser.