Changeset 792 in josm
- Timestamp:
- 2008-08-16T12:47:21+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java
r783 r792 1 1 package org.openstreetmap.josm.gui.dialogs; 2 2 3 import static org.openstreetmap.josm.tools.I18n.tr; 3 4 import static org.openstreetmap.josm.tools.I18n.marktr; 4 import static org.openstreetmap.josm.tools.I18n.tr;5 5 6 6 import java.awt.BorderLayout; … … 14 14 import java.beans.PropertyChangeListener; 15 15 import java.io.IOException; 16 import java.text.Collator;17 16 import java.util.ArrayList; 18 import java.util.Comparator;19 17 import java.util.Map.Entry; 20 18 21 19 import javax.swing.JButton; 20 import javax.swing.JDialog; 22 21 import javax.swing.JFrame; 23 22 import javax.swing.JLabel; … … 31 30 import javax.swing.event.TableModelListener; 32 31 import javax.swing.table.DefaultTableModel; 33 import javax.swing.table.TableRowSorter;34 32 35 33 import org.openstreetmap.josm.Main; … … 48 46 import org.xml.sax.SAXException; 49 47 50 51 48 /** 52 49 * This dialog is for editing relations. … … 62 59 public class RelationEditor extends JFrame { 63 60 64 65 66 61 /** 67 62 * The relation that this editor is working on, and the clone made for … … 101 96 private final JTable propertyTable = new JTable(propertyData); 102 97 private final JTable memberTable = new JTable(memberData); 103 104 /**105 * Collator for sorting the roles and entries of the member table.106 */107 private static final Collator collator;108 static {109 collator = Collator.getInstance();110 collator.setStrength(Collator.PRIMARY);111 }112 113 /**114 * Comparator for member roles. Tries to sort even roles like "stop_nn" correct.115 */116 private final Comparator<String> memberRoleComp = new Comparator<String>() {117 public int compare(String s1, String s2) {118 119 int last1 = s1.lastIndexOf('_');120 if (last1 > 0) {121 int last2 = s2.lastIndexOf('_');122 if (last2 == last1) {123 String prefix1 = s1.substring(0, last1);124 String prefix2 = s2.substring(0, last2);125 126 if (prefix1.equalsIgnoreCase(prefix2)) {127 // Both roles have the same prefix, now determine the suffix.128 String suffix1 = s1.substring(last1+1, s1.length());129 String suffix2 = s2.substring(last2+1, s2.length());130 131 if (suffix1.matches("\\d+") && suffix2.matches("\\d+")) {132 // Suffix is an number -> compare it.133 int i1 = Integer.parseInt(suffix1);134 int i2 = Integer.parseInt(suffix2);135 136 return i1 - i2;137 }138 }139 }140 }141 142 // Default handling if the role name is nothing like "stop_xx"143 return collator.compare(s1, s2);144 145 }146 };147 148 /**149 * Comparator for the member names.150 */151 private final Comparator<OsmPrimitive> memberValueComp = new Comparator<OsmPrimitive>() {152 public int compare(OsmPrimitive o1, OsmPrimitive o2) {153 return collator.compare(o1.getName(), o2.getName());154 }155 };156 157 private final TableRowSorter<DefaultTableModel> memberSorter = new TableRowSorter<DefaultTableModel>(memberData);158 98 159 99 /** … … 223 163 propertyData.setColumnIdentifiers(new String[]{tr("Key"),tr("Value")}); 224 164 propertyTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 225 226 165 propertyData.addTableModelListener(new TableModelListener() { 227 166 public void tableChanged(TableModelEvent tme) { … … 247 186 memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")}); 248 187 memberTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 249 250 188 memberTable.getColumnModel().getColumn(1).setCellRenderer(new OsmPrimitivRenderer()); 251 252 memberSorter.setComparator(0, memberRoleComp);253 memberSorter.setComparator(1, memberValueComp);254 memberTable.setRowSorter(memberSorter);255 256 189 /* 257 190 memberTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer() {
Note:
See TracChangeset
for help on using the changeset viewer.