Changeset 207 in josm


Ignore:
Timestamp:
2007-04-03T17:46:00+02:00 (15 years ago)
Author:
imi
Message:
  • added "case sensitive" option to search dialog
  • added a plugin manifest option "Plugin-Stage" to specify boot stage order (default is 50, smaller first)
Location:
src/org/openstreetmap/josm
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/Main.java

    r203 r207  
    1414import java.util.LinkedList;
    1515import java.util.Map;
     16import java.util.SortedMap;
    1617import java.util.StringTokenizer;
     18import java.util.TreeMap;
    1719import java.util.concurrent.Executor;
    1820import java.util.concurrent.Executors;
     
    190192
    191193        /**
    192          * Load all plugins specified in preferences. Has to be called after the complete
    193          * GUI has been set up. (post-constructor)
    194          */
    195         public void loadPlugins() {
    196                 if (Main.pref.hasKey("plugins")) {
    197                         for (String pluginName : Main.pref.get("plugins").split(",")) {
     194         * Load all plugins specified in preferences. If the parameter is <code>true</code>, all
     195         * early plugins are loaded (before constructor).
     196         */
     197        public static void loadPlugins(boolean early) {
     198                if (!Main.pref.hasKey("plugins"))
     199                        return;
     200                SortedMap<Integer, Collection<PluginInformation>> p = new TreeMap<Integer, Collection<PluginInformation>>();
     201                for (String pluginName : Main.pref.get("plugins").split(",")) {
     202                        File pluginFile = new File(pref.getPreferencesDir()+"plugins/"+pluginName+".jar");
     203                        if (pluginFile.exists()) {
     204                                PluginInformation info = new PluginInformation(pluginFile);
     205                                if (info.early != early)
     206                                        continue;
     207                                if (!p.containsKey(info.stage))
     208                                        p.put(info.stage, new LinkedList<PluginInformation>());
     209                                p.get(info.stage).add(info);
     210                        } else {
     211                                if (early)
     212                                        System.out.println("Plugin not found: "+pluginName); // do not translate
     213                                else   
     214                                        JOptionPane.showMessageDialog(Main.parent, tr("Plugin not found: {0}.", pluginName));
     215                        }
     216                }
     217                for (Collection<PluginInformation> c : p.values()) {
     218                        for (PluginInformation info : c) {
    198219                                try {
    199                                         File pluginFile = new File(pref.getPreferencesDir()+"plugins/"+pluginName+".jar");
    200                                         if (pluginFile.exists()) {
    201                                                 PluginInformation info = new PluginInformation(pluginFile);
    202                                                 Class<?> klass = info.loadClass();
    203                                                 ImageProvider.sources.add(0, klass);
    204                                                 plugins.add(info.load(klass));
    205                                         } else
    206                                                 JOptionPane.showMessageDialog(Main.parent, tr("Plugin not found: {0}.", pluginName));
     220                                        Class<?> klass = info.loadClass();
     221                                        ImageProvider.sources.add(0, klass);
     222                                        System.out.println("loading "+info.name);
     223                                        plugins.add(info.load(klass));
    207224                                } catch (PluginException e) {
    208225                                        e.printStackTrace();
    209                                         JOptionPane.showMessageDialog(Main.parent, tr("Could not load plugin {0}.", pluginName));
     226                                        if (early)
     227                                                System.out.println("Could not load plugin: "+info.name); // do not translate
     228                                        else
     229                                                JOptionPane.showMessageDialog(Main.parent, tr("Could not load plugin {0}.", info.name));
    210230                                }
    211231                        }
     
    307327                        bounds = !args.containsKey("no-fullscreen") ? new Rectangle(0,0,screenDimension.width,screenDimension.height) : new Rectangle(1000,740);
    308328
    309                 pleaseWaitDlg = new PleaseWaitDialog();
     329                        pleaseWaitDlg = new PleaseWaitDialog();
    310330        }
    311331
     
    319339                if (args.containsKey("selection"))
    320340                        for (String s : args.get("selection"))
    321                                 SearchAction.search(s, SearchAction.SearchMode.add);
     341                                SearchAction.search(s, SearchAction.SearchMode.add, false);
    322342        }
    323343
  • src/org/openstreetmap/josm/actions/search/SearchAction.java

    r191 r207  
    99
    1010import javax.swing.ButtonGroup;
     11import javax.swing.JCheckBox;
    1112import javax.swing.JLabel;
    1213import javax.swing.JOptionPane;
     
    5152        bg.add(add);
    5253        bg.add(remove);
     54       
     55        JCheckBox caseSensitive = new JCheckBox(tr("case sensitive"), false);
    5356   
    5457        JPanel p = new JPanel(new GridBagLayout());
     
    5760        p.add(replace, GBC.eol());
    5861        p.add(add, GBC.eol());
    59         p.add(remove, GBC.eol());
     62        p.add(remove, GBC.eop());
     63        p.add(caseSensitive, GBC.eol());
    6064        JOptionPane pane = new JOptionPane(p, JOptionPane.INFORMATION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null){
    6165                @Override public void selectInitialValue() {
     
    6973        lastSearch = input.getText();
    7074        SearchAction.SearchMode mode = replace.isSelected() ? SearchAction.SearchMode.replace : (add.isSelected() ? SearchAction.SearchMode.add : SearchAction.SearchMode.remove);
    71         search(lastSearch, mode);
     75        search(lastSearch, mode, caseSensitive.isSelected());
    7276    }
    7377
    74         public static void search(String search, SearchMode mode) {
     78        public static void search(String search, SearchMode mode, boolean caseSensitive) {
    7579        if (search.startsWith("http://") || search.startsWith("ftp://") || search.startsWith("https://") || search.startsWith("file:/")) {
    7680                SelectionWebsiteLoader loader = new SelectionWebsiteLoader(search, mode);
     
    8185        }
    8286        Collection<OsmPrimitive> sel = Main.ds.getSelected();
    83         SearchCompiler.Match matcher = SearchCompiler.compile(search);
     87        SearchCompiler.Match matcher = SearchCompiler.compile(search, caseSensitive);
    8488        for (OsmPrimitive osm : Main.ds.allNonDeletedPrimitives()) {
    8589                if (mode == SearchMode.replace) {
  • src/org/openstreetmap/josm/actions/search/SearchCompiler.java

    r191 r207  
    1717public class SearchCompiler {
    1818
     19        boolean caseSensitive = false;
     20       
    1921        abstract public static class Match {
    2022                abstract public boolean match(OsmPrimitive osm);
     
    6567        }
    6668
    67         private static class KeyValue extends Match {
     69        private class KeyValue extends Match {
    6870                private String key;
    6971                private String value;
     
    7880                        if (value == null)
    7981                                return notValue;
    80                         return (value.toLowerCase().indexOf(this.value.toLowerCase()) != -1) != notValue;
     82                        String v1 = caseSensitive ? value : value.toLowerCase();
     83                        String v2 = caseSensitive ? this.value : this.value.toLowerCase();
     84                        return (v1.indexOf(v2) != -1) != notValue;
    8185                }
    8286                @Override public String toString() {return key+"="+(notValue?"!":"")+value;}
    8387        }
    8488
    85         private static class Any extends Match {
     89        private class Any extends Match {
    8690                private String s;
    8791                public Any(String s) {this.s = s;}
     
    8993                        if (osm.keys == null)
    9094                                return s.equals("");
    91                         for (Entry<String, String> e : osm.keys.entrySet())
    92                                 if (e.getKey().toLowerCase().indexOf(s.toLowerCase()) != -1
    93                                                 || e.getValue().toLowerCase().indexOf(s.toLowerCase()) != -1)
     95                        for (Entry<String, String> e : osm.keys.entrySet()) {
     96                                String key = caseSensitive ? e.getKey() : e.getKey().toLowerCase();
     97                                String value = caseSensitive ? e.getValue() : e.getValue().toLowerCase();
     98                                String search = caseSensitive ? s : s.toLowerCase();
     99                                if (key.indexOf(search) != -1 || value.indexOf(search) != -1)
    94100                                        return true;
     101                        }
    95102                        return false;
    96103                }
     
    134141        }
    135142       
    136         public static Match compile(String searchStr) {
    137                 return new SearchCompiler().parse(new PushbackReader(new StringReader(searchStr)));
     143        public static Match compile(String searchStr, boolean caseSensitive) {
     144                SearchCompiler searchCompiler = new SearchCompiler();
     145                searchCompiler.caseSensitive = caseSensitive;
     146                return searchCompiler.parse(new PushbackReader(new StringReader(searchStr)));
    138147        }
    139148
  • src/org/openstreetmap/josm/gui/MainApplication.java

    r205 r207  
    2121
    2222import org.openstreetmap.josm.Main;
    23 import org.openstreetmap.josm.plugins.PluginException;
    2423import org.openstreetmap.josm.plugins.PluginInformation;
    2524import org.openstreetmap.josm.tools.BugReportExceptionHandler;
    26 import org.openstreetmap.josm.tools.ImageProvider;
    2725/**
    2826 * Main window class application.
     
    119117
    120118                // load the early plugins
    121                 if (Main.pref.hasKey("plugins")) {
    122                         for (String pluginName : Main.pref.get("plugins").split(",")) {
    123                                 try {
    124                                         File pluginFile = new File(pref.getPreferencesDir()+"plugins/"+pluginName+".jar");
    125                                         if (pluginFile.exists()) {
    126                                                 PluginInformation info = new PluginInformation(pluginFile);
    127                                                 if (!info.early)
    128                                                         continue;
    129                                                 Class<?> klass = info.loadClass();
    130                                                 ImageProvider.sources.add(0, klass);
    131                                                 Main.plugins.add(info.load(klass));
    132                                         } else
    133                                                 System.out.println("Plugin not found: "+pluginName);
    134                                 } catch (PluginException e) {
    135                                         System.out.println("Could not load plugin "+pluginName);
    136                                         e.printStackTrace();
    137                                 }
    138                         }
    139                 }
     119                Main.loadPlugins(true);
    140120
    141121                if (argList.contains("--help") || argList.contains("-?") || argList.contains("-h")) {
     
    171151                Main.parent = mainFrame;
    172152                final Main main = new MainApplication(mainFrame);
    173                 main.loadPlugins();
     153                Main.loadPlugins(false);
    174154
    175155                mainFrame.setVisible(true);
  • src/org/openstreetmap/josm/plugins/PluginInformation.java

    r192 r207  
    4040        public final boolean early;
    4141        public final String author;
     42        public final int stage;
    4243        public final List<URL> libraries = new ArrayList<URL>();
    4344
     
    5758                        description = attr.getValue("Plugin-Description");
    5859                        early = Boolean.parseBoolean(attr.getValue("Plugin-Early"));
     60                        String stageStr = attr.getValue("Plugin-Stage");
     61                        stage = stageStr == null ? 50 : Integer.parseInt(stageStr);
    5962                        author = attr.getValue("Author");
    6063                        libraries.add(new URL(getURLString(file.getAbsolutePath())));
Note: See TracChangeset for help on using the changeset viewer.