Changeset 69 in josm for src/org


Ignore:
Timestamp:
2006-03-24T23:50:09+01:00 (19 years ago)
Author:
imi
Message:
  • improved search (now like google)
  • link in About dialog work with windows
Location:
src/org/openstreetmap/josm
Files:
4 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/AboutAction.java

    r68 r69  
    1313import java.util.regex.Pattern;
    1414
    15 import javax.swing.JEditorPane;
    1615import javax.swing.JLabel;
    1716import javax.swing.JOptionPane;
     
    2019import javax.swing.JTabbedPane;
    2120import javax.swing.JTextArea;
    22 import javax.swing.event.HyperlinkEvent;
    23 import javax.swing.event.HyperlinkListener;
    2421
    2522import org.openstreetmap.josm.Main;
    2623import org.openstreetmap.josm.gui.GBC;
    2724import org.openstreetmap.josm.gui.ImageProvider;
     25import org.openstreetmap.josm.tools.UrlLabel;
    2826
    2927/**
     
    5957                info.add(new JLabel("last change at "+time), GBC.eop());
    6058                info.add(new JLabel("Homepage"), GBC.std().insets(0,0,10,0));
    61                 JEditorPane homepage = new JEditorPane();
    62                 homepage.setContentType("text/html");
    63                 homepage.setText("<html><a href=\"http://wiki.eigenheimstrasse.de/wiki/JOSM\">" +
    64                                 "http://wiki.eigenheimstrasse.de/wiki/JOSM</a></html>");
    65                 homepage.setEditable(false);
    66                 homepage.setOpaque(false);
    67                 homepage.addHyperlinkListener(new HyperlinkListener(){
    68                         public void hyperlinkUpdate(HyperlinkEvent e) {
    69                                 if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
    70                                         //TODO: Open browser
    71                                 }
    72                         }
    73                 });
    74                 info.add(homepage, GBC.eol());
     59                info.add(new UrlLabel("http://wiki.eigenheimstrasse.de/wiki/JOSM"), GBC.eol());
    7560               
    7661               
  • src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

    r68 r69  
    1010import java.awt.event.MouseEvent;
    1111import java.util.Collection;
    12 import java.util.Map.Entry;
    1312
    1413import javax.swing.DefaultListModel;
     
    2726import org.openstreetmap.josm.gui.MapFrame;
    2827import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
     28import org.openstreetmap.josm.tools.SearchCompiler;
    2929
    3030/**
     
    8484                                JLabel l = new JLabel("Please enter a search string.");
    8585                                l.setToolTipText("<html>Fulltext search.<ul>" +
    86                                                 "<li>Baker Street  - search for everything with 'Baker Street' in any key or name.</li>" +
    87                                                 "<li>name:Bak  - search for every object with key=name and 'Bak' anywhere in the value.</li>" +
    88                                                 "<li>foot:  - search for everything with the key=foot set to any value." +
     86                                                "<li><code>Baker Street</code>  - 'Baker' and 'Street' in any key or name.</li>" +
     87                                                "<li><code>\"Baker Street\"</code>  - 'Baker Street' in any key or name.</li>" +
     88                                                "<li><code>name:Bak</code>  - 'Bak' anywhere in the name.</li>" +
     89                                                "<li><code>-name:Bak</code>  - not 'Bak' in the name.</li>" +
     90                                                "<li><code>foot:</code>  - key=foot set to any value." +
    8991                                                "</ul></html>");
    9092                                lastSearch = (String)JOptionPane.showInputDialog(Main.main,l,"Search",JOptionPane.INFORMATION_MESSAGE,null,null,lastSearch);
    9193                                if (lastSearch == null)
    9294                                        return;
    93                                 Main.main.ds.clearSelection();
    94                                 for (OsmPrimitive osm : Main.main.ds.allNonDeletedPrimitives()) {
    95                                         for (Entry<String, String> ent : osm.entrySet()) {
    96                                                 if (match(lastSearch, ent.getKey(), ent.getValue())) {
    97                                                         osm.setSelected(true);
    98                                                         break;
    99                                                 }
    100                                         }
    101                                 }
     95                                SearchCompiler.Match matcher = SearchCompiler.compile(lastSearch);
     96                                for (OsmPrimitive osm : Main.main.ds.allNonDeletedPrimitives())
     97                                        osm.setSelected(matcher.match(osm));
    10298                                selectionChanged(Main.main.ds.getSelected());
    10399                                Main.main.getMapFrame().repaint();
    104                         }
    105                         private boolean match(String search, String key, String value) {
    106                                 int colon = search.indexOf(':');
    107                                 if (colon == -1)
    108                                         return key.indexOf(search) != -1 || value.indexOf(search) != -1;
    109                                 String searchKey = search.substring(0, colon);
    110                                 String searchValue = search.substring(colon+1);
    111                                 if (searchKey.equals("type") && (searchValue.equals("segment")||searchValue.equals("way")||searchValue.equals("node")))
    112                                         return true;
    113                                 return key.equals(searchKey) && value.indexOf(searchValue) != -1;
    114100                        }
    115101                });
Note: See TracChangeset for help on using the changeset viewer.