Changeset 7120 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
- Timestamp:
- 2014-05-14T02:16:44+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
r7021 r7120 15 15 import java.util.Collection; 16 16 import java.util.Collections; 17 import java.util.Comparator;18 17 import java.util.HashSet; 19 18 import java.util.Iterator; … … 44 43 import org.openstreetmap.josm.data.osm.OsmPrimitive; 45 44 import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator; 46 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;47 45 import org.openstreetmap.josm.data.osm.Relation; 48 46 import org.openstreetmap.josm.data.osm.Way; … … 585 583 */ 586 584 public void sort() { 587 if (this.selection.size()>Main.pref.getInteger("selection.no_sort_above",100000)) return; 588 if (this.selection.size()>Main.pref.getInteger("selection.fast_sort_above",10000)) { 589 Collections.sort(this.selection, new OsmPrimitiveQuickComparator()); 590 } else { 591 Collections.sort(this.selection, new OsmPrimitiveComparator()); 585 if (this.selection.size() <= Main.pref.getInteger("selection.no_sort_above", 100000)) { 586 boolean quick = this.selection.size() > Main.pref.getInteger("selection.fast_sort_above", 10000); 587 Collections.sort(this.selection, new OsmPrimitiveComparator(quick, false)); 592 588 } 593 589 } … … 778 774 } 779 775 } 780 781 /** Quicker comparator, comparing just by type and ID's */782 private static class OsmPrimitiveQuickComparator implements Comparator<OsmPrimitive> {783 784 private int compareId(OsmPrimitive a, OsmPrimitive b) {785 long id_a=a.getUniqueId();786 long id_b=b.getUniqueId();787 if (id_a<id_b) return -1;788 if (id_a>id_b) return 1;789 return 0;790 }791 792 private int compareType(OsmPrimitive a, OsmPrimitive b) {793 // show ways before relations, then nodes794 if (a.getType().equals(OsmPrimitiveType.WAY)) return -1;795 if (a.getType().equals(OsmPrimitiveType.NODE)) return 1;796 // a is a relation797 if (b.getType().equals(OsmPrimitiveType.WAY)) return 1;798 // b is a node799 return -1;800 }801 802 @Override803 public int compare(OsmPrimitive a, OsmPrimitive b) {804 if (a.getType().equals(b.getType()))805 return compareId(a, b);806 return compareType(a, b);807 }808 }809 810 776 }
Note:
See TracChangeset
for help on using the changeset viewer.