Ignore:
Timestamp:
2010-09-23T23:26:08+02:00 (14 years ago)
Author:
pieren
Message:

Handle a fourth optional parameter in the sources.cfg preconfigured WMS servers where an EULA licence accceptance can be asked.

Location:
applications/editors/josm/plugins/wmsplugin/src/wmsplugin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSInfo.java

    r23207 r23325  
    33import java.util.ArrayList;
    44import java.util.Collection;
    5 
    6 import org.openstreetmap.josm.Main;
    75
    86/**
     
    1614    String url=null;
    1715    String cookies = null;
     16    String eulaAcceptanceRequired = null;
    1817    boolean html = false;
    1918    double pixelPerDegree = 0.0;
     
    2827    }
    2928
    30     public WMSInfo(String name, String url, String cookies) {
     29    public WMSInfo(String name, String url, String eulaAcceptanceRequired) {
     30        this.name=name;
     31        setURL(url);
     32        this.eulaAcceptanceRequired = eulaAcceptanceRequired;
     33    }
     34
     35    public WMSInfo(String name, String url, String eulaAcceptanceRequired, String cookies) {
    3136        this.name=name;
    3237        setURL(url);
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayerInfo.java

    r23207 r23325  
    44
    55import java.io.BufferedReader;
     6import java.io.IOException;
    67import java.io.InputStreamReader;
    7 import java.io.IOException;
    88import java.io.UnsupportedEncodingException;
    9 
     9import java.util.ArrayList;
    1010import java.util.Arrays;
    11 import java.util.ArrayList;
    1211import java.util.Collection;
    1312import java.util.Collections;
     
    103102                {
    104103                    String val[] = line.split(";");
    105                     if(!line.startsWith("#") && val.length == 3) {
     104                    if(!line.startsWith("#") && (val.length == 3 || val.length == 4)) {
    106105                        boolean force = "true".equals(val[0]);
    107106                        String name = tr(val[1]);
    108107                        String url = val[2];
    109 
    110                         defaultLayers.add(new WMSInfo(name, url));
     108                        String eulaAcceptanceRequired = null;
     109                        if (val.length == 4) {
     110                            // 4th parameter optional for license agreement (EULA)
     111                            eulaAcceptanceRequired = val[3];
     112                        }
     113                        defaultLayers.add(new WMSInfo(name, url, eulaAcceptanceRequired));
    111114
    112115                        if(force) {
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPreferenceEditor.java

    r23207 r23325  
    1010import java.awt.event.ActionListener;
    1111import java.awt.event.MouseEvent;
    12 import java.util.ArrayList;
    13 import java.util.HashMap;
    14 import java.util.Map;
     12import java.io.IOException;
     13import java.net.MalformedURLException;
     14import java.net.URL;
     15import java.util.Locale;
    1516
    1617import javax.swing.Box;
     
    1819import javax.swing.JCheckBox;
    1920import javax.swing.JComboBox;
     21import javax.swing.JEditorPane;
    2022import javax.swing.JLabel;
    2123import javax.swing.JOptionPane;
     
    5860        JScrollPane scroll = new JScrollPane(list);
    5961        p.add(scroll, GBC.eol().fill(GridBagConstraints.BOTH));
    60         scroll.setPreferredSize(new Dimension(200,200));
     62        scroll.setPreferredSize(new Dimension(200, 200));
    6163
    6264        final WMSDefaultLayerTableModel modeldef = new WMSDefaultLayerTableModel();
     
    7173        // scrolldef is added after the buttons so it's clearer the buttons
    7274        // control the top list and not the default one
    73         scrolldef.setPreferredSize(new Dimension(200,200));
     75        scrolldef.setPreferredSize(new Dimension(200, 200));
    7476
    7577        TableColumnModel mod = listdef.getColumnModel();
     
    8486
    8587        JButton add = new JButton(tr("Add"));
    86         buttonPanel.add(add, GBC.std().insets(0,5,0,0));
    87         add.addActionListener(new ActionListener(){
     88        buttonPanel.add(add, GBC.std().insets(0, 5, 0, 0));
     89        add.addActionListener(new ActionListener() {
    8890            public void actionPerformed(ActionEvent e) {
    8991                AddWMSLayerPanel p = new AddWMSLayerPanel();
     
    99101
    100102        JButton delete = new JButton(tr("Delete"));
    101         buttonPanel.add(delete, GBC.std().insets(0,5,0,0));
    102         delete.addActionListener(new ActionListener(){
     103        buttonPanel.add(delete, GBC.std().insets(0, 5, 0, 0));
     104        delete.addActionListener(new ActionListener() {
    103105            public void actionPerformed(ActionEvent e) {
    104106                if (list.getSelectedRow() == -1)
    105107                    JOptionPane.showMessageDialog(gui, tr("Please select the row to delete."));
    106                 else
    107                 {
     108                else {
    108109                    Integer i;
    109110                    while ((i = list.getSelectedRow()) != -1)
     
    114115
    115116        JButton copy = new JButton(tr("Copy Selected Default(s)"));
    116         buttonPanel.add(copy, GBC.std().insets(0,5,0,0));
    117         copy.addActionListener(new ActionListener(){
     117        buttonPanel.add(copy, GBC.std().insets(0, 5, 0, 0));
     118        copy.addActionListener(new ActionListener() {
    118119            public void actionPerformed(ActionEvent e) {
    119120                int[] lines = listdef.getSelectedRows();
     
    123124                            tr("Please select at least one row to copy."),
    124125                            tr("Information"),
    125                             JOptionPane.INFORMATION_MESSAGE
    126                     );
     126                            JOptionPane.INFORMATION_MESSAGE);
    127127                    return;
    128128                }
    129129
    130                 outer: for(int i = 0; i < lines.length; i++) {
     130                outer: for (int i = 0; i < lines.length; i++) {
    131131                    WMSInfo info = modeldef.getRow(lines[i]);
    132132
    133133                    // Check if an entry with exactly the same values already
    134134                    // exists
    135                     for(int j = 0; j < model.getRowCount(); j++) {
    136                         if(info.equalsBaseValues(model.getRow(j))) {
     135                    for (int j = 0; j < model.getRowCount(); j++) {
     136                        if (info.equalsBaseValues(model.getRow(j))) {
    137137                            // Select the already existing row so the user has
    138138                            // some feedback in case an entry exists
     
    143143                    }
    144144
     145                    if (info.eulaAcceptanceRequired != null) {
     146                        if (!confirmeEulaAcceptance(gui, info.eulaAcceptanceRequired))
     147                            continue outer;
     148                    }
     149
    145150                    model.addRow(new WMSInfo(info));
    146151                    int lastLine = model.getRowCount() - 1;
     
    154159        p.add(Box.createHorizontalGlue(), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
    155160        // Add default item list
    156         p.add(scrolldef, GBC.eol().insets(0,5,0,0).fill(GridBagConstraints.BOTH));
    157 
    158         browser = new JComboBox(new String[]{
     161        p.add(scrolldef, GBC.eol().insets(0, 5, 0, 0).fill(GridBagConstraints.BOTH));
     162
     163        browser = new JComboBox(new String[] {
    159164                "webkit-image {0}",
    160165                "gnome-web-photo --mode=photo --format=png {0} /dev/stdout",
     
    166171        p.add(browser);
    167172
    168         //Overlap
     173        // Overlap
    169174        p.add(Box.createHorizontalGlue(), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
    170175
    171         overlapCheckBox = new JCheckBox(tr("Overlap tiles"), plugin.PROP_OVERLAP.get() );
     176        overlapCheckBox = new JCheckBox(tr("Overlap tiles"), plugin.PROP_OVERLAP.get());
    172177        JLabel labelEast = new JLabel(tr("% of east:"));
    173178        JLabel labelNorth = new JLabel(tr("% of north:"));
     
    193198        p.add(overlapPanelSimConn, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
    194199
    195 
    196200        allowRemoteControl = Main.pref.getBoolean("wmsplugin.remotecontrol", true);
    197         remoteCheckBox = new JCheckBox(tr("Allow remote control (reqires remotecontrol plugin)"), allowRemoteControl );
     201        remoteCheckBox = new JCheckBox(tr("Allow remote control (reqires remotecontrol plugin)"), allowRemoteControl);
    198202        JPanel remotePanel = new JPanel(new FlowLayout());
    199203        remotePanel.add(remoteCheckBox);
     
    214218        Main.pref.put("wmsplugin.browser", browser.getEditor().getItem().toString());
    215219
    216         Main.pref.put("wmsplugin.remotecontrol",    String.valueOf(allowRemoteControl));
     220        Main.pref.put("wmsplugin.remotecontrol", String.valueOf(allowRemoteControl));
    217221        return false;
    218222    }
     
    221225     * Updates a server URL in the preferences dialog. Used by other plugins.
    222226     *
    223      * @param server The server name
    224      * @param url The server URL
     227     * @param server
     228     *            The server name
     229     * @param url
     230     *            The server URL
    225231     */
    226     public void setServerUrl(String server, String url)
    227     {
    228         for (int i = 0; i < model.getRowCount(); i++)
    229         {
    230             if( server.equals(model.getValueAt(i,0).toString()) )
    231             {
     232    public void setServerUrl(String server, String url) {
     233        for (int i = 0; i < model.getRowCount(); i++) {
     234            if (server.equals(model.getValueAt(i, 0).toString())) {
    232235                model.setValueAt(url, i, 1);
    233236                return;
    234237            }
    235238        }
    236         model.addRow(new String[]{server, url});
     239        model.addRow(new String[] { server, url });
    237240    }
    238241
     
    240243     * Gets a server URL in the preferences dialog. Used by other plugins.
    241244     *
    242      * @param server The server name
     245     * @param server
     246     *            The server name
    243247     * @return The server URL
    244248     */
    245     public String getServerUrl(String server)
    246     {
    247         for (int i = 0; i < model.getRowCount(); i++)
    248         {
    249             if( server.equals(model.getValueAt(i,0).toString()) )
    250             {
    251                 return model.getValueAt(i,1).toString();
     249    public String getServerUrl(String server) {
     250        for (int i = 0; i < model.getRowCount(); i++) {
     251            if (server.equals(model.getValueAt(i, 0).toString())) {
     252                return model.getValueAt(i, 1).toString();
    252253            }
    253254        }
     
    261262    class WMSLayerTableModel extends DefaultTableModel {
    262263        public WMSLayerTableModel() {
    263             setColumnIdentifiers(new String[]{tr("Menu Name"), tr("WMS URL"), trc("layer", "Zoom")});
     264            setColumnIdentifiers(new String[] { tr("Menu Name"), tr("WMS URL"), trc("layer", "Zoom") });
    264265        }
    265266
     
    270271        public void addRow(WMSInfo i) {
    271272            plugin.info.add(i);
    272             int p = getRowCount()-1;
    273             fireTableRowsInserted(p,p);
    274         }
    275 
     273            int p = getRowCount() - 1;
     274            fireTableRowsInserted(p, p);
     275        }
     276
     277        @Override
    276278        public void removeRow(int i) {
    277279            plugin.info.remove(getRow(i));
    278             fireTableRowsDeleted(i,i);
     280            fireTableRowsDeleted(i, i);
    279281        }
    280282
     
    287289        public Object getValueAt(int row, int column) {
    288290            WMSInfo info = plugin.info.layers.get(row);
    289             switch(column) {
    290             case 0: return info.name;
    291             case 1: return info.getFullURL();
    292             case 2: return info.pixelPerDegree == 0.0 ? "" : info.pixelPerDegree;
     291            switch (column) {
     292            case 0:
     293                return info.name;
     294            case 1:
     295                return info.getFullURL();
     296            case 2:
     297                return info.pixelPerDegree == 0.0 ? "" : info.pixelPerDegree;
    293298            }
    294299            return null;
     
    307312    class WMSDefaultLayerTableModel extends DefaultTableModel {
    308313        public WMSDefaultLayerTableModel() {
    309             setColumnIdentifiers(new String[]{tr("Menu Name (Default)"), tr("WMS URL (Default)")});
     314            setColumnIdentifiers(new String[] { tr("Menu Name (Default)"), tr("WMS URL (Default)") });
    310315        }
    311316
     
    322327        public Object getValueAt(int row, int column) {
    323328            WMSInfo info = plugin.info.defaultLayers.get(row);
    324             switch(column) {
    325             case 0: return info.name;
    326             case 1: return info.getFullURL();
     329            switch (column) {
     330            case 0:
     331                return info.name;
     332            case 1:
     333                return info.getFullURL();
    327334            }
    328335            return null;
     
    334341        }
    335342    }
     343
     344    private boolean confirmeEulaAcceptance(PreferenceTabbedPane gui, String eulaUrl) {
     345        URL url = null;
     346        try {
     347            url = new URL(eulaUrl.replaceAll("\\{lang\\}", Locale.getDefault().toString()));
     348            JEditorPane htmlPane = null;
     349            try {
     350                htmlPane = new JEditorPane(url);
     351            } catch (IOException e1) {
     352                // give a second chance with a default Locale 'en'
     353                try {
     354                    url = new URL(eulaUrl.replaceAll("\\{lang\\}", "en"));
     355                    htmlPane = new JEditorPane(url);
     356                } catch (IOException e2) {
     357                    JOptionPane.showMessageDialog(gui ,tr("EULA license URL not available: {0}", eulaUrl));
     358                    return false;
     359                }
     360            }
     361            Box box = Box.createVerticalBox();
     362            htmlPane.setEditable(false);
     363            JScrollPane scrollPane = new JScrollPane(htmlPane);
     364            scrollPane.setPreferredSize(new Dimension(400, 400));
     365            box.add(scrollPane);
     366            int option = JOptionPane.showConfirmDialog(Main.parent, box, tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
     367                    JOptionPane.WARNING_MESSAGE);
     368            if (option == JOptionPane.YES_OPTION) {
     369                return true;
     370            }
     371        } catch (MalformedURLException e2) {
     372            JOptionPane.showMessageDialog(gui ,tr("Malformed URL for the EULA licence: {0}", eulaUrl));
     373        }
     374        return false;
     375    }
    336376}
Note: See TracChangeset for help on using the changeset viewer.