Changeset 10767 in osm for applications/editors/josm


Ignore:
Timestamp:
2008-09-18T09:43:02+02:00 (16 years ago)
Author:
stoecker
Message:

cleanup preferences handling and default entries

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

Legend:

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

    r10382 r10767  
    88 * @author Frederik Ramm <frederik@remote.org>
    99 */
    10 public class WMSInfo {
     10public class WMSInfo implements Comparable {
    1111       
    1212        String name;
     
    2323                Main.pref.put("wmsplugin.url." + prefid + ".url", url);
    2424        }
    25        
     25        public int compareTo(Object c)
     26        {
     27                Integer i = 0;
     28                if(c instanceof WMSInfo)
     29                {
     30                        WMSInfo in = (WMSInfo)c;
     31                        i = name.compareTo(in.name);
     32                        if(i == 0)
     33                                i = url.compareTo(in.url);
     34                        if(i == 0)
     35                                i = prefid-in.prefid;
     36                }
     37                return i;
     38        }
    2639}
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java

    r10645 r10767  
    77import java.awt.event.KeyEvent;
    88import java.util.ArrayList;
     9import java.util.Collections;
    910import java.util.Map;
    1011import java.util.TreeSet;
     
    3940        static ArrayList<WMSInfo> wmsList = new ArrayList<WMSInfo>();
    4041
    41        // remember state of menu item to restore on changed preferences
    42        static private boolean menuEnabled = false;
     42        // remember state of menu item to restore on changed preferences
     43        static private boolean menuEnabled = false;
    4344       
    4445        public WMSPlugin() {
     
    8283                String url = null;
    8384                int lastid = -1;
    84                 boolean isYahoo = false;
    8585                for (String key : keys) {
    8686                        String[] elements = key.split("\\.");
     
    9292                        }
    9393                        if (prefid != lastid) {
    94                                 if ((name != null) && (url != null)) {
    95                                         wmsList.add(new WMSInfo(name, url, prefid));
    96                                         if(url.startsWith("yahoo://")) isYahoo = true;
    97                                 }
    98                                 name = null; url = null; lastid = prefid;
     94                                name = url = null; lastid = prefid;
    9995                        }
    100                         if (elements[3].equals("name")) {
    101                                 name=prefs.get(key);
    102                         } else if (elements[3].equals("url")) {
     96                        if (elements[3].equals("name"))
     97                                name = prefs.get(key);
     98                        else if (elements[3].equals("url"))
    10399                                url = prefs.get(key);
    104                         }               
     100                        if (name != null && url != null)
     101                                wmsList.add(new WMSInfo(name, url, prefid));
    105102                }
    106                 if ((name != null) && (url != null)) {
    107                         wmsList.add(new WMSInfo(name, url, prefid));
    108                         if(url.startsWith("yahoo://")) isYahoo = true;
    109                 }
     103                setDefault(tr("Landsat"), "http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
     104                "layers=global_mosaic&styles=&srs=EPSG:4326&format=image/jpeg");
     105                setDefault(tr("NPE Maps"), "http://nick.dev.openstreetmap.org/openpaths/freemap.php?layers=npe&");
     106                setDefault(tr("YAHOO"), "yahoo://gnome-web-photo --mode=photo --format=png {0} /dev/stdout");
    110107
    111                 // if no (valid) prefs are set, initialize to a sensible default.
    112                 if (wmsList.isEmpty()) {
    113                         WMSInfo landsatInfo = new WMSInfo(tr("Landsat"),
    114                                         "http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
    115                                         "layers=global_mosaic&styles=&srs=EPSG:4326&"+
    116                                         "format=image/jpeg", 1);
    117                         landsatInfo.save();
    118                         wmsList.add(landsatInfo);
    119                        
    120                         WMSInfo npeInfo = new WMSInfo(tr("NPE Maps"),
    121                                         "http://nick.dev.openstreetmap.org/openpaths/freemap.php?layers=npe&", 2);
    122                         npeInfo.save();
    123                         wmsList.add(npeInfo);
    124                 }
    125                 if(!isYahoo){ //add Yahoo to the list, if there isn't
    126                         int maxKey = 0;
    127                         for(WMSInfo in : wmsList)
    128                                 if(maxKey < in.prefid)maxKey = in.prefid;
    129                         WMSInfo yahooInfo = new WMSInfo(tr("YAHOO"),
    130                                         "yahoo://gnome-web-photo --mode=photo --format=png {0} /dev/stdout", maxKey+1);
    131                         yahooInfo.save();
    132                         wmsList.add(yahooInfo);
    133                 }
    134                
     108                Collections.sort(wmsList);
    135109                JMenuBar menu = Main.main.menu;
    136110
     
    159133                wmsJMenu.addSeparator();
    160134                wmsJMenu.add(new JMenuItem(new Help_WMSmenuAction()));
    161                setEnabledAll(menuEnabled);
     135                setEnabledAll(menuEnabled);
     136        }
     137
     138        /* add a default entry in case the URL does not yet exist */
     139        private static void setDefault(String name, String url)
     140        {
     141                String testurl = url.replaceAll("=", "_");
     142                if(!Main.pref.getBoolean("wmsplugin.default."+testurl))
     143                {
     144                        Main.pref.put("wmsplugin.default."+testurl, true);
     145                        int id = -1;
     146                        for(WMSInfo i : wmsList)
     147                        {
     148                                if(url.equals(i.url))
     149                                        return;
     150                                if(i.prefid > id)
     151                                        id = i.prefid;
     152                        }
     153                        WMSInfo newinfo = new WMSInfo(name, url, id+1);
     154                        newinfo.save();
     155                        wmsList.add(newinfo);
     156                }
    162157        }
    163158
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPreferenceEditor.java

    r8721 r10767  
    3030        private Map<String,String> orig;
    3131        private DefaultTableModel model;
    32         private int highestIdUsed = 0;
    3332        private HashMap<Integer, WMSInfo> oldValues = new HashMap<Integer, WMSInfo>();
    3433       
     
    3635                JPanel p = gui.createPreferenceTab("wms", tr("WMS Plugin Preferences"), tr("Modify list of WMS servers displayed in the WMS plugin menu"));
    3736               
    38                 model = new DefaultTableModel(new String[]{"#", tr("Menu Name"), tr("WMS URL")}, 0) {
    39                         @Override public boolean isCellEditable(int row, int column) {
    40                                 return column != 0;
    41                         }
    42                 };
     37                model = new DefaultTableModel(new String[]{tr("Menu Name"), tr("WMS URL")}, 0);
    4338                final JTable list = new JTable(model);
    44                 list.getColumnModel().removeColumn(list.getColumnModel().getColumn(0));
    4539                JScrollPane scroll = new JScrollPane(list);
    4640                p.add(scroll, GBC.eol().fill(GBC.BOTH));
     
    4943                for (WMSInfo i : WMSPlugin.wmsList) {
    5044                        oldValues.put(i.prefid, i);
    51                         model.addRow(new String[]{Integer.toString(i.prefid), i.name, i.url});
    52                         if (i.prefid > highestIdUsed) highestIdUsed = i.prefid;
     45                        model.addRow(new String[]{i.name, i.url});
    5346                }
    5447               
     
    6760                                int answer = JOptionPane.showConfirmDialog(gui, p, tr("Enter a menu name and WMS URL"), JOptionPane.OK_CANCEL_OPTION);
    6861                                if (answer == JOptionPane.OK_OPTION) {
    69                                         highestIdUsed++;
    70                                         model.addRow(new String[]{Integer.toString(highestIdUsed), key.getText(), value.getText()});
     62                                        model.addRow(new String[]{key.getText(), value.getText()});
    7163                                }
    7264                        }
    7365                });
    74                                
     66
    7567                JButton delete = new JButton(tr("Delete"));
    7668                p.add(delete, GBC.std().insets(0,5,0,0));
    7769                delete.addActionListener(new ActionListener(){
    7870                        public void actionPerformed(ActionEvent e) {
    79                                 if (list.getSelectedRowCount() == 0) {
     71                                if (list.getSelectedRow() == -1)
    8072                                        JOptionPane.showMessageDialog(gui, tr("Please select the row to delete."));
    81                                         return;
     73                                else
     74                                {
     75                                        Integer i;
     76                                        while ((i = list.getSelectedRow()) != -1)
     77                                                model.removeRow(i);
    8278                                }
    83                                 while (list.getSelectedRow() != -1)
    84                                         model.removeRow(list.getSelectedRow());
    8579                        }
    8680                });
     
    9084                boolean change = false;
    9185                for (int i = 0; i < model.getRowCount(); ++i) {
    92                         int id = Integer.parseInt(model.getValueAt(i, 0).toString());
    93                         String name = model.getValueAt(i,1).toString();
    94                         String url = model.getValueAt(i,2).toString();
    95                        
    96                         WMSInfo origValue = oldValues.get(id);
    97                         if (origValue == null) {
    98                                 new WMSInfo(name, url, id).save();
     86                        String name = model.getValueAt(i,0).toString();
     87                        String url = model.getValueAt(i,1).toString();
     88
     89                        WMSInfo origValue = oldValues.get(i);
     90                        if (origValue == null)
     91                        {
     92                                new WMSInfo(name, url, i).save();
    9993                                change = true;
    100                         } else {
    101                                 if (origValue.name.equals(name) && origValue.url.equals(url)) {
    102                                         // no change
    103                                 } else {
     94                        }
     95                        else
     96                        {
     97                                if (!origValue.name.equals(name) || !origValue.url.equals(url))
     98                                {
    10499                                        origValue.name = name;
    105100                                        origValue.url = url;
     
    107102                                        change = true;
    108103                                }
    109                                 oldValues.remove(id);
     104                                oldValues.remove(i);
    110105                        }
    111106                }
    112107               
    113                // using null values instead of empty string really deletes
    114                // the preferences entry
    115                 for (WMSInfo i : oldValues.values()) {
    116                        i.url = null;
    117                        i.name = null;
     108                // using null values instead of empty string really deletes
     109                // the preferences entry
     110                for (WMSInfo i : oldValues.values())
     111                {
     112                        i.url = null;
     113                        i.name = null;
    118114                        i.save();
    119115                        change = true;
    120116                }
    121                
     117
    122118                if (change) WMSPlugin.refreshMenu();
    123119        }
     
    133129        for (int i = 0; i < model.getRowCount(); i++)
    134130        {
    135             String name = model.getValueAt(i,1).toString();
    136             if( name.equals(server) )
     131            if( server.equals(model.getValueAt(i,0).toString()) )
    137132            {
    138                 model.setValueAt(url, i, 2);
     133                model.setValueAt(url, i, 1);
    139134                return;
    140135            }
    141         }       
     136        }
     137        model.addRow(new String[]{server, url});
     138    }
    142139
    143         highestIdUsed++;
    144         model.addRow(new String[]{Integer.toString(highestIdUsed), server, url});
    145     }
    146    
    147140    /**
    148141     * Gets a server URL in the preferences dialog. Used by other plugins.
    149      * 
     142     *
    150143     * @param server The server name
    151144     * @return The server URL
     
    155148        for (int i = 0; i < model.getRowCount(); i++)
    156149        {
    157             String name = model.getValueAt(i,1).toString();
    158             if( name.equals(server) )
     150            if( server.equals(model.getValueAt(i,0).toString()) )
    159151            {
    160                 String url = model.getValueAt(i,2).toString();
    161                 return url;
     152                return model.getValueAt(i,1).toString();
    162153            }
    163154        }
    164        
    165155        return null;
    166156    }
Note: See TracChangeset for help on using the changeset viewer.