Ignore:
Timestamp:
2013-02-19T22:38:52+01:00 (11 years ago)
Author:
Don-vip
Message:

fix #8444 - NPE when no WMS url is entered in WMS add dialog + various UI improvements in add WMS/TMS dialogs (OK button enabled status is dynamic, new Help button, name suggested for wms_endpoint)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java

    r5650 r5731  
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
    6 import java.awt.Dimension;
    7 import java.awt.GridBagLayout;
    86import java.awt.event.ActionEvent;
    97import java.awt.event.ActionListener;
     
    1412import java.io.IOException;
    1513import java.net.MalformedURLException;
     14
    1615import javax.swing.JButton;
    1716import javax.swing.JCheckBox;
     
    2019import javax.swing.JScrollPane;
    2120import javax.swing.JTextArea;
    22 import javax.swing.JTextField;
     21
    2322import org.openstreetmap.josm.data.imagery.ImageryInfo;
    2423import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
     
    3029
    3130    private final WMSImagery wms = new WMSImagery();
    32     private final JTextArea rawUrl = new JTextArea(3, 40);
    3331    private final JCheckBox endpoint = new JCheckBox(tr("Store WMS endpoint only, select layers at usage"));
    3432    private final WMSLayerTree tree = new WMSLayerTree();
     33    private final JLabel wmsInstruction;
    3534    private final JTextArea wmsUrl = new JTextArea(3, 40);
    36     private final JTextField name = new JTextField();
     35    private final JButton showBounds = new JButton(tr("Show bounds"));
    3736
    3837    public AddWMSLayerPanel() {
    39         super(new GridBagLayout());
    4038
    4139        add(new JLabel(tr("1. Enter service URL")), GBC.eol());
     
    4846        add(endpoint, GBC.eol().fill());
    4947        add(new JScrollPane(tree.getLayerTree()), GBC.eol().fill().weight(1, 100));
    50         final JButton showBounds = new JButton(tr("Show bounds"));
     48
    5149        showBounds.setEnabled(false);
    5250        add(new JScrollPane(showBounds), GBC.eop().fill());
    5351
    54         add(new JLabel(tr("3. Verify generated WMS URL")), GBC.eol());
     52        add(wmsInstruction = new JLabel(tr("3. Verify generated WMS URL")), GBC.eol());
    5553        add(wmsUrl, GBC.eop().fill());
    5654        wmsUrl.setLineWrap(true);
     
    8583                tree.getLayerTree().setEnabled(!endpoint.isSelected());
    8684                showBounds.setEnabled(!endpoint.isSelected());
     85                wmsInstruction.setEnabled(!endpoint.isSelected());
    8786                wmsUrl.setEnabled(!endpoint.isSelected());
     87                if (endpoint.isSelected()) {
     88                    name.setText(wms.getServiceUrl().getHost());
     89                } else {
     90                    onLayerSelectionChanged();
     91                }
    8892            }
    8993        });
     
    9195        tree.getLayerTree().addPropertyChangeListener("selectedLayers", new PropertyChangeListener() {
    9296            @Override
    93             public void propertyChange(PropertyChangeEvent evt) {
    94                 if (wms.getServiceUrl() != null) {
    95                     wmsUrl.setText(wms.buildGetMapUrl(tree.getSelectedLayers()));
    96                     name.setText(wms.getServiceUrl().getHost() + ": " + Utils.join(", ", tree.getSelectedLayers()));
    97                 }
    98                 showBounds.setEnabled(tree.getSelectedLayers().size() == 1);
     97            public void propertyChange(PropertyChangeEvent evt) {
     98                onLayerSelectionChanged();
    9999            }
    100100        });
     
    113113            }
    114114        });
    115 
     115       
     116        registerValidableComponent(endpoint);
     117        registerValidableComponent(rawUrl);
     118        registerValidableComponent(wmsUrl);
     119    }
     120   
     121    protected final void onLayerSelectionChanged() {
     122        if (wms.getServiceUrl() != null) {
     123            wmsUrl.setText(wms.buildGetMapUrl(tree.getSelectedLayers()));
     124            name.setText(wms.getServiceUrl().getHost() + ": " + Utils.join(", ", tree.getSelectedLayers()));
     125        }
     126        showBounds.setEnabled(tree.getSelectedLayers().size() == 1);
    116127    }
    117128
     
    120131        final ImageryInfo info;
    121132        if (endpoint.isSelected()) {
    122             info = new ImageryInfo(name.getText(), rawUrl.getText());
     133            info = new ImageryInfo(getImageryName(), getImageryRawUrl());
    123134            info.setImageryType(ImageryInfo.ImageryType.WMS_ENDPOINT);
    124135        } else {
    125             info = wms.toImageryInfo(name.getText(), tree.getSelectedLayers());
    126             info.setUrl(wmsUrl.getText());
     136            info = wms.toImageryInfo(getImageryName(), tree.getSelectedLayers());
     137            info.setUrl(getWmsUrl());
    127138        }
    128139        return info;
    129140    }
     141   
     142    protected final String getWmsUrl() {
     143        return sanitize(wmsUrl.getText());
     144    }
     145   
     146    protected boolean isImageryValid() {
     147        if (getImageryName().isEmpty()) {
     148            return false;
     149        }
     150        if (endpoint.isSelected()) {
     151            return !getImageryRawUrl().isEmpty();
     152        } else {
     153            return !getWmsUrl().isEmpty();
     154        }
     155    }
    130156}
Note: See TracChangeset for help on using the changeset viewer.