Changeset 1831 in josm
- Timestamp:
- 2009-07-25T12:02:51+02:00 (16 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/dialogs/relation
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
r1830 r1831 723 723 KeyEvent.VK_S, Shortcut.GROUP_MNEMONIC); 724 724 725 updateEnabledState(); 726 } 727 728 protected void updateEnabledState() { 725 729 DataSet ds = getLayer().data; 726 setEnabled(ds != null && !ds.getSelected().isEmpty()); 730 if (ds == null || ds.getSelected().isEmpty()) { 731 setEnabled(false); 732 return; 733 } 734 // only enable the action if we have members referring to the 735 // selected primitives 736 // 737 setEnabled(memberTableModel.hasMembersReferringTo(ds.getSelected())); 727 738 } 728 739 … … 732 743 733 744 public void tableChanged(TableModelEvent e) { 734 setEnabled(selectionTableModel.getRowCount() > 0);745 updateEnabledState(); 735 746 } 736 747 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
r1830 r1831 6 6 import java.util.Collection; 7 7 import java.util.Collections; 8 import java.util.HashSet; 8 9 import java.util.Iterator; 9 10 import java.util.LinkedList; … … 403 404 return !r.incomplete; 404 405 } 406 407 /** 408 * Replies true if there is at least one relation member in this model 409 * which refers to at least on the primitives in <code>primitives</code>. 410 * 411 * @param primitives the collection of primitives 412 * @return true if there is at least one relation member in this model 413 * which refers to at least on the primitives in <code>primitives</code>; false 414 * otherwise 415 */ 416 public boolean hasMembersReferringTo(Collection<OsmPrimitive> primitives) { 417 if (primitives == null || primitives.isEmpty()) 418 return false; 419 HashSet<OsmPrimitive> referrers = new HashSet<OsmPrimitive>(); 420 for(RelationMember member : members) { 421 referrers.add(member.member); 422 } 423 Iterator<OsmPrimitive> it = primitives.iterator(); 424 while(it.hasNext()) { 425 OsmPrimitive referred = it.next(); 426 if (referrers.contains(referred)) 427 return true; 428 } 429 return false; 430 } 431 405 432 406 433 void sort() {
Note:
See TracChangeset
for help on using the changeset viewer.