Changeset 1886 in josm
- Timestamp:
- 2009-08-02T20:59:26+02:00 (16 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/dialogs
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
r1868 r1886 9 9 import java.awt.event.MouseAdapter; 10 10 import java.awt.event.MouseEvent; 11 import java.util.Collection; 12 import java.util.HashSet; 11 13 12 14 import javax.swing.AbstractAction; … … 23 25 import org.openstreetmap.josm.data.osm.OsmPrimitive; 24 26 import org.openstreetmap.josm.data.osm.Relation; 27 import org.openstreetmap.josm.data.osm.RelationMember; 25 28 import org.openstreetmap.josm.gui.OsmPrimitivRenderer; 26 29 import org.openstreetmap.josm.gui.PrimitiveNameFormatter; … … 35 38 import org.openstreetmap.josm.tools.Shortcut; 36 39 40 import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException; 41 37 42 /** 38 43 * A dialog showing all known relations, with buttons to add, edit, and … … 245 250 setEnabled(false); 246 251 } 252 protected Collection<RelationMember> getMembersForCurrentSelection(Relation r) { 253 Collection<RelationMember> members = new HashSet<RelationMember>(); 254 Collection<OsmPrimitive> selection = Main.map.mapView.getEditLayer().data.getSelected(); 255 for (RelationMember member: r.members) { 256 if (selection.contains(member.member)) { 257 members.add(member); 258 } 259 } 260 return members; 261 } 247 262 248 263 public void run() { … … 251 266 if (toEdit == null) 252 267 return; 253 RelationEditor.getEditor(Main.map.mapView.getEditLayer(),toEdit, null).setVisible(true);268 RelationEditor.getEditor(Main.map.mapView.getEditLayer(),toEdit, getMembersForCurrentSelection(toEdit)).setVisible(true); 254 269 } 255 270 -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
r1878 r1886 24 24 import java.util.Collection; 25 25 import java.util.Collections; 26 import java.util.HashSet; 26 27 import java.util.Iterator; 27 28 import java.util.List; … … 83 84 * This dialog is for editing relations. 84 85 * 85 * In the basic form, it provides two tables, one with the relation tags and one with the relation86 * members. (Relation tags can be edited through the normal properties dialog as well, if you manage87 * to get a relation selected!)88 *89 * @author Frederik Ramm <frederik@remote.org>90 *91 86 */ 92 87 public class GenericRelationEditor extends RelationEditor { … … 146 141 this.memberTableModel.populate(null); 147 142 } 148 memberTableModel.setSelectedMembers(selectedMembers);149 143 tagEditorModel.ensureOneTag(); 150 144 … … 196 190 ); 197 191 192 memberTableModel.setSelectedMembers(selectedMembers); 198 193 } 199 194 … … 331 326 memberTable.getSelectionModel().addListSelectionListener(new SelectionSynchronizer()); 332 327 memberTable.addMouseListener(new MemberTableDblClickAdapter()); 328 memberTableModel.addMemberModelListener(memberTable); 333 329 334 330 final JScrollPane scrollPane = new JScrollPane(memberTable); … … 1389 1385 } 1390 1386 1387 protected Collection<RelationMember> getMembersForCurrentSelection(Relation r) { 1388 Collection<RelationMember> members = new HashSet<RelationMember>(); 1389 Collection<OsmPrimitive> selection = getLayer().data.getSelected(); 1390 for (RelationMember member: r.members) { 1391 if (selection.contains(member.member)) { 1392 members.add(member); 1393 } 1394 } 1395 return members; 1396 } 1397 1391 1398 public void run() { 1392 1399 int idx = memberTable.getSelectedRow(); … … 1399 1406 if (r.incomplete) 1400 1407 return; 1401 RelationEditor editor = RelationEditor.getEditor(getLayer(), r, null); 1408 1409 RelationEditor editor = RelationEditor.getEditor(getLayer(), r, getMembersForCurrentSelection(r)); 1402 1410 editor.setVisible(true); 1403 1411 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
r1857 r1886 374 374 ArrayList<Integer> selectedIndices = new ArrayList<Integer>(); 375 375 for (RelationMember member : selectedMembers) { 376 int idx = members.indexOf(member); 377 if (idx >= 0 && !selectedIndices.contains(idx)) { 378 selectedIndices.add(idx); 376 for (int idx = 0; idx < members.size(); idx ++) { 377 if (members.get(idx).equals(member)) { 378 if (!selectedIndices.contains(idx)) { 379 selectedIndices.add(idx); 380 } 381 } 379 382 } 380 383 } … … 487 490 */ 488 491 489 if (map.isEmpty()) {492 if (map.isEmpty()) 490 493 // empty relation or incomplete members 491 494 return; 492 }493 495 segments = new Vector<LinkedList<Integer>>(); 494 496
Note:
See TracChangeset
for help on using the changeset viewer.