Changeset 755 in josm for trunk


Ignore:
Timestamp:
2008-08-07T10:03:52+02:00 (16 years ago)
Author:
stoecker
Message:

better sorting of selected elements and relation list, reenabled relation search, translation cleanups

Location:
trunk/src/org/openstreetmap/josm
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java

    r753 r755  
    8888                        Collection<OsmPrimitive> sel = Main.ds.getSelected();
    8989                        SearchCompiler.Match matcher = SearchCompiler.compile(search, caseSensitive);
    90                         for (OsmPrimitive osm : Main.ds.allNonDeletedPhysicalPrimitives()) {
     90                        for (OsmPrimitive osm : Main.ds.allNonDeletedCompletePrimitives()) {
    9191                                if (mode == SearchMode.replace) {
    9292                                        if (matcher.match(osm))
  • trunk/src/org/openstreetmap/josm/command/DeleteCommand.java

    r630 r755  
    5858                if (data.size() == 1) {
    5959                        data.iterator().next().visit(v);
    60                         return new DefaultMutableTreeNode(new JLabel(tr("Delete")+" "+tr(v.className)+" "+v.name, v.icon, JLabel.HORIZONTAL));
     60                        return new DefaultMutableTreeNode(new JLabel(tr("Delete {1} {0}", v.name, tr(v.className)), v.icon, JLabel.HORIZONTAL));
    6161                }
    6262
    6363                String cname = null;
     64                String cnamem = null;
    6465                for (OsmPrimitive osm : data) {
    6566                        osm.visit(v);
    6667                        if (cname == null)
     68                        {
    6769                                cname = v.className;
     70                                cnamem = v.classNamePlural;
     71                        }
    6872                        else if (!cname.equals(v.className))
     73                        {
    6974                                cname = "object";
     75                                cnamem = trn("object", "objects", 2);
     76                        }
    7077                }
    7178                DefaultMutableTreeNode root = new DefaultMutableTreeNode(new JLabel(
    72                                 tr("Delete")+" "+data.size()+" "+trn(cname, cname+"s", data.size()), ImageProvider.get("data", cname), JLabel.HORIZONTAL));
     79                                tr("Delete {0} {1}", data.size(), trn(cname, cnamem, data.size())), ImageProvider.get("data", cname), JLabel.HORIZONTAL));
    7380                for (OsmPrimitive osm : data) {
    7481                        osm.visit(v);
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r753 r755  
    88import java.util.Collection;
    99import java.util.Collections;
     10import java.util.Comparator;
    1011import java.util.HashSet;
     12import java.util.HashMap;
    1113import java.util.LinkedList;
    1214import java.util.List;
     
    7880                for (OsmPrimitive osm : allPrimitives())
    7981                        if (!osm.deleted)
     82                                o.add(osm);
     83                return o;
     84        }
     85
     86        public Collection<OsmPrimitive> allNonDeletedCompletePrimitives() {
     87                Collection<OsmPrimitive> o = new LinkedList<OsmPrimitive>();
     88                for (OsmPrimitive osm : allPrimitives())
     89                        if (!osm.deleted && !osm.incomplete)
    8090                                o.add(osm);
    8191                return o;
     
    230240               
    231241        }
     242
     243        // Search für Relation wieder erlauben.
     244        public static OsmPrimitive[] sort(Collection<? extends OsmPrimitive> list) {
     245                OsmPrimitive[] selArr = new OsmPrimitive[list.size()];
     246                final HashMap<Object, String> h = new HashMap<Object, String>();
     247                selArr = list.toArray(selArr);
     248                Arrays.sort(selArr, new Comparator<OsmPrimitive>() {
     249                        public int compare(OsmPrimitive a, OsmPrimitive b)
     250                        {
     251                                if(a.getClass() == b.getClass())
     252                                {
     253                                        String as = h.get(a);
     254                                        if(as == null)
     255                                        {
     256                                                as = a.getName();
     257                                                h.put(a, as);
     258                                        }
     259                                        String bs = h.get(b);
     260                                        if(bs == null)
     261                                        {
     262                                                bs = b.getName();
     263                                                h.put(b, bs);
     264                                        }
     265                                        int res = as.compareTo(bs);
     266                                        if(res != 0)
     267                                                return res;
     268                                }
     269                                return a.compareTo(b);
     270                        }
     271                });
     272                return selArr;
     273        }
    232274}
  • trunk/src/org/openstreetmap/josm/data/osm/Node.java

    r643 r755  
    11// License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.data.osm;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5import static org.openstreetmap.josm.tools.I18n.trn;
     6
     7import java.text.DecimalFormat;
     8import java.text.NumberFormat;
    39
    410import org.openstreetmap.josm.Main;
     
    6773        public int compareTo(OsmPrimitive o) {
    6874            return o instanceof Node ? Long.valueOf(id).compareTo(o.id) : 1;
    69     }
     75        }
     76
     77        public String getName() {
     78                String name;
     79                if (incomplete) {
     80                        name = tr("incomplete");
     81                } else {
     82                        NumberFormat latLonFormat = new DecimalFormat("###0.0000000");
     83
     84                        name = get("name");
     85                        if (name == null)
     86                                name = id == 0 ? "" : ""+id;
     87                        name += " ("+latLonFormat.format(coor.lat())+", "+latLonFormat.format(coor.lon())+")";
     88                }
     89                return name;
     90        }
    7091}
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

    r655 r755  
    217217                checkTagged();
    218218                checkDirectionTagged();
     219        }
     220
     221        public String getName() {
     222                return null;
    219223        }
    220224
  • trunk/src/org/openstreetmap/josm/data/osm/Relation.java

    r627 r755  
    11package org.openstreetmap.josm.data.osm;
     2
     3import static org.openstreetmap.josm.tools.I18n.tr;
     4import static org.openstreetmap.josm.tools.I18n.trn;
    25
    36import java.util.ArrayList;
     
    6669        public int compareTo(OsmPrimitive o) {
    6770            return o instanceof Relation ? Long.valueOf(id).compareTo(o.id) : -1;
    68     }
    69        
     71        }
     72
     73        public String getName() {
     74                String name;
     75                if (incomplete) {
     76                        name = tr("incomplete");
     77                } else {
     78                        name = get("type");
     79                        // FIXME add names of members
     80                        if (name == null)
     81                                name = tr("relation");
     82                       
     83                        name += " (";
     84                        String nameTag = get("name");
     85                        if (nameTag == null) nameTag = get("ref");
     86                        if (nameTag != null) name += "\"" + nameTag + "\", ";
     87                        int mbno = members.size();
     88                        name += trn("{0} member", "{0} members", mbno, mbno) + ")";
     89                }
     90                return name;
     91        }
     92
    7093        public boolean isIncomplete() {
    7194                for (RelationMember m : members)
  • trunk/src/org/openstreetmap/josm/data/osm/Way.java

    r627 r755  
    11// License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.data.osm;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5import static org.openstreetmap.josm.tools.I18n.trn;
     6
     7import java.util.HashSet;
    38
    49import java.util.ArrayList;
     
    8792
    8893        public int compareTo(OsmPrimitive o) {
    89             return o instanceof Way ? Long.valueOf(id).compareTo(o.id) : -1;
    90     }
     94                if(o instanceof Relation)
     95                        return 1;
     96                return o instanceof Way ? Long.valueOf(id).compareTo(o.id) : -1;
     97        }
     98
     99        public String getName() {
     100                String name;
     101                if (incomplete) {
     102                        name = tr("incomplete");
     103                } else {
     104                        name = get("name");
     105                        if (name == null) name = get("ref");
     106                        if (name == null) {
     107                                name =
     108                                        (get("highway") != null) ? tr("highway") :
     109                                        (get("railway") != null) ? tr("railway") :
     110                                        (get("waterway") != null) ? tr("waterway") :
     111                                        (get("landuse") != null) ? tr("landuse") : "";
     112                        }
     113
     114                        int nodesNo = new HashSet<Node>(nodes).size();
     115                        name += trn(" ({0} node)", " ({0} nodes)", nodesNo, nodesNo);
     116                }
     117                return name;
     118        }
    91119
    92120        @Deprecated
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/NameVisitor.java

    r627 r755  
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55import static org.openstreetmap.josm.tools.I18n.trn;
    6 
    7 import java.text.DecimalFormat;
    8 import java.text.NumberFormat;
    9 import java.util.HashSet;
    106
    117import javax.swing.Icon;
     
    3026         */
    3127        public String className;
     28        public String classNamePlural;
    3229        /**
    3330         * The name of this item.
     
    3936        public Icon icon;
    4037       
    41         /**
    42          * For formatting lat/lon
    43          */
    44         public static NumberFormat latLonFormat = new DecimalFormat("###0.0000000");
    45        
    4638        /**
    4739         * If the node has a name-key or id-key, this is displayed. If not, (lat,lon)
     
    4941         */
    5042        public void visit(Node n) {
    51                 if (n.incomplete) {
    52                         name = tr("incomplete");
    53                 } else {
    54                         name = n.get("name");
    55                         if (name == null) {
    56                                 name = n.id == 0 ? "" : ""+n.id;
    57                         }
    58                         name += " ("+latLonFormat.format(n.coor.lat())+", "+latLonFormat.format(n.coor.lon())+")";
    59                 }
     43                name = n.getName();
    6044                addId(n);
    6145                icon = ImageProvider.get("data", "node");
    62                 trn("node", "nodes", 0); // no marktrn available
    6346                className = "node";
     47                classNamePlural = trn("node", "nodes", 2);
    6448        }
    6549
     
    6953         */
    7054        public void visit(Way w) {
    71                 if (w.incomplete) {
    72                         name = tr("incomplete");
    73                 } else {
    74                         name = w.get("name");
    75                         if (name == null) name = w.get("ref");
    76                         if (name == null) {
    77                                 name =
    78                                         (w.get("highway") != null) ? "highway" :
    79                                         (w.get("railway") != null) ? "railway" :
    80                                         (w.get("waterway") != null) ? "waterway" : "";
    81                         }
    82 
    83                         int nodesNo = new HashSet<Node>(w.nodes).size();
    84                         name += trn(" ({0} node)", " ({0} nodes)", nodesNo, nodesNo);
    85                 }
     55                name = w.getName();
    8656                addId(w);
    8757                icon = ImageProvider.get("data", "way");
    88                 trn("way", "ways", 0); // no marktrn available
    8958                className = "way";
     59                classNamePlural = trn("way", "ways", 2);
    9060        }
    9161       
     
    9363         */
    9464        public void visit(Relation e) {
    95                 if (e.incomplete) {
    96                         name = tr("incomplete");
    97                 } else {
    98                         name = e.get("type");
    99                         // FIXME add names of members
    100                         if (name == null)
    101                                 name = "relation";
    102                        
    103                         name += " (";
    104                         String nameTag = e.get("name");
    105                         if (nameTag == null) nameTag = e.get("ref");
    106                         if (nameTag != null) name += "\"" + nameTag + "\", ";
    107                         int mbno = e.members.size();
    108                         name += trn("{0} member", "{0} members", mbno, mbno) + ")";
    109                 }
     65                name = e.getName();
    11066                addId(e);
    11167                icon = ImageProvider.get("data", "relation");
    112                 trn("relation", "relations", 0); // no marktrn available
    11368                className = "relation";
     69                classNamePlural = trn("relation", "relations", 2);
    11470        }
    11571       
     
    12177        private void addId(OsmPrimitive osm) {
    12278            if (Main.pref.getBoolean("osm-primitives.showid"))
    123                         name += " (id: "+osm.id+")";
     79                        name += tr(" (id: {0}))", osm.id);
    12480    }
    12581}
  • trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

    r744 r755  
    2121import org.openstreetmap.josm.Main;
    2222import org.openstreetmap.josm.command.DeleteCommand;
     23import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2324import org.openstreetmap.josm.data.osm.Relation;
    2425import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
     
    112113                list.setSize(Main.ds.relations.size());
    113114                int i = 0;
    114                 for (Relation e : Main.ds.relations) {
     115                for (OsmPrimitive e : Main.ds.sort(Main.ds.relations)) {
    115116                        if (!e.deleted && !e.incomplete)
    116117                                list.setElementAt(e, i++);
  • trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

    r751 r755  
    9696         */
    9797        public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    98                 if (list == null)
     98                if (list == null || !isVisible())
    9999                        return; // selection changed may be received in base class constructor before init
    100                 if (!isVisible())
    101                         return;
    102                 OsmPrimitive[] selArr = new OsmPrimitive[newSelection.size()];
    103                 selArr = newSelection.toArray(selArr);
    104                 Arrays.sort(selArr);
     100                OsmPrimitive selArr[] = Main.ds.sort(newSelection);
    105101                list.setSize(selArr.length);
    106102                int i = 0;
Note: See TracChangeset for help on using the changeset viewer.