]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/AddMapSourceDialog.java
Version 16, February 2014
[GpsPrune.git] / tim / prune / function / AddMapSourceDialog.java
index da1f15e8a951e0d6c258041e5872d5e84c799299..bcc8b7064bed60cb5f81b5672e560f8600f5c1a8 100644 (file)
@@ -43,11 +43,11 @@ public class AddMapSourceDialog
        private JTextField _oNameField = null;
        private JTextField _baseUrlField = null, _topUrlField = null;
        private JRadioButton[] _baseTypeRadios = null, _topTypeRadios = null;
-       private JComboBox _oZoomCombo = null;
+       private JComboBox<Integer> _oZoomCombo = null;
        // controls for cloudmade panel
        private JTextField _cNameField = null;
        private JTextField _cStyleField = null;
-       private JComboBox _cZoomCombo = null;
+       private JComboBox<Integer> _cZoomCombo = null;
        private JButton _okButton = null;
 
        /** array of file types */
@@ -105,9 +105,21 @@ public class AddMapSourceDialog
                KeyAdapter keyListener = new KeyAdapter() {
                        public void keyReleased(KeyEvent e) {
                                super.keyReleased(e);
+                               if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+                                       _addDialog.dispose();
+                               }
+                               else {
+                                       enableOK();
+                               }
+                       }
+               };
+               // Listener for any gui changes (to enable ok when anything changes on an edit)
+               ActionListener okEnabler = new ActionListener() {
+                       public void actionPerformed(ActionEvent arg0) {
                                enableOK();
                        }
                };
+
                // openstreetmap panel
                JPanel osmPanel = new JPanel();
                osmPanel.setLayout(new BorderLayout());
@@ -144,6 +156,8 @@ public class AddMapSourceDialog
                        radioGroup.add(_baseTypeRadios[i]);
                        c.gridx = 2+i; c.weightx = 0.0;
                        gbPanel.add(_baseTypeRadios[i], c);
+                       // Each type radio needs listener to call enableOk()
+                       _baseTypeRadios[i].addActionListener(okEnabler);
                }
 
                // Top layer
@@ -161,14 +175,18 @@ public class AddMapSourceDialog
                        radioGroup.add(_topTypeRadios[i]);
                        c.gridx = 2+i; c.weightx = 0.0;
                        gbPanel.add(_topTypeRadios[i], c);
+                       // Each type radio needs listener to call enableOk()
+                       _topTypeRadios[i].addActionListener(okEnabler);
                }
                // Max zoom
                c.gridx = 0; c.gridy = 3;
                gbPanel.add(new JLabel(I18nManager.getText("dialog.addmapsource.maxzoom")), c);
-               _oZoomCombo = new JComboBox();
+               _oZoomCombo = new JComboBox<Integer>();
                for (int i=10; i<=20; i++) {
-                       _oZoomCombo.addItem("" + i);
+                       _oZoomCombo.addItem(i);
                }
+               // zoom dropdown needs listener to call enableOk()
+               _oZoomCombo.addActionListener(okEnabler);
                c.gridx = 1;
                gbPanel.add(_oZoomCombo, c);
                osmPanel.add(gbPanel, BorderLayout.NORTH);
@@ -190,9 +208,9 @@ public class AddMapSourceDialog
                _cStyleField.addKeyListener(keyListener);
                cloudGridPanel.add(_cStyleField);
                cloudGridPanel.add(new JLabel(I18nManager.getText("dialog.addmapsource.maxzoom")));
-               _cZoomCombo = new JComboBox();
+               _cZoomCombo = new JComboBox<Integer>();
                for (int i=10; i<=20; i++) {
-                       _cZoomCombo.addItem("" + i);
+                       _cZoomCombo.addItem(i);
                }
                cloudGridPanel.add(_cZoomCombo);
                cloudPanel.add(cloudGridPanel, BorderLayout.NORTH);