- Timestamp:
- 2009-12-12T21:25:10+01:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
r2622 r2623 203 203 allPrimitives.add(primitive); 204 204 primitive.setDataset(this); 205 firePrimitivesAdded(Collections.singletonList(primitive)); 205 firePrimitivesAdded(Collections.singletonList(primitive), false); 206 206 } 207 207 … … 246 246 primitive.setDataset(null); 247 247 errors.remove(primitive); 248 firePrimitivesRemoved(Collections.singletonList(primitive)); 248 firePrimitivesRemoved(Collections.singletonList(primitive), false); 249 249 } 250 250 … … 837 837 } 838 838 839 void firePrimitivesAdded(Collection<? extends OsmPrimitive> added) { 840 fireEvent(new PrimitivesAddedEvent(this, added)); 841 } 842 843 void firePrimitivesRemoved(Collection<? extends OsmPrimitive> removed) { 844 fireEvent(new PrimitivesRemovedEvent(this, removed)); 839 void firePrimitivesAdded(Collection<? extends OsmPrimitive> added, boolean wasIncomplete) { 840 fireEvent(new PrimitivesAddedEvent(this, added, wasIncomplete)); 841 } 842 843 void firePrimitivesRemoved(Collection<? extends OsmPrimitive> removed, boolean wasComplete) { 844 fireEvent(new PrimitivesRemovedEvent(this, removed, wasComplete)); 845 845 } 846 846 -
trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
r2620 r2623 564 564 if (dataSet != null) { 565 565 if (deleted) { 566 dataSet.firePrimitivesRemoved(Collections.singleton(this)); 566 dataSet.firePrimitivesRemoved(Collections.singleton(this), false); 567 567 } else { 568 dataSet.firePrimitivesAdded(Collections.singleton(this)); 568 dataSet.firePrimitivesAdded(Collections.singleton(this), false); 569 569 } 570 570 } … … 956 956 */ 957 957 public void cloneFrom(OsmPrimitive other) { 958 if (id != other.id && dataSet != null) 959 throw new DataIntegrityProblemException("Osm id cannot be changed after primitive was added to the dataset"); 958 960 setKeys(other.getKeys()); 959 961 id = other.id; … … 1210 1212 1211 1213 private void setIncomplete(boolean incomplete) { 1214 if (dataSet != null && incomplete != this.incomplete) { 1215 if (incomplete) { 1216 dataSet.firePrimitivesRemoved(Collections.singletonList(this), true); 1217 } else { 1218 dataSet.firePrimitivesAdded(Collections.singletonList(this), true); 1219 } 1220 } 1212 1221 this.incomplete = incomplete; 1213 1222 } -
trunk/src/org/openstreetmap/josm/data/osm/Relation.java
r2620 r2623 217 217 result.append(" version="); 218 218 result.append(getVersion()); 219 result.append(" "); 220 result.append(getFlagsAsString()); 219 221 result.append(" ["); 220 222 for (RelationMember rm:getMembers()) { -
trunk/src/org/openstreetmap/josm/data/osm/event/PrimitivesAddedEvent.java
r2622 r2623 13 13 14 14 private final List<? extends OsmPrimitive> primitives; 15 private final boolean wasIncomplete; 15 16 16 public PrimitivesAddedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives) { 17 public PrimitivesAddedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasIncomplete) { 17 18 super(dataSet); 18 19 this.primitives = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(primitives)); 20 this.wasIncomplete = wasIncomplete; 19 21 } 20 22 … … 24 26 } 25 27 28 @Override 26 29 public List<? extends OsmPrimitive> getPrimitives() { 27 30 return primitives; 28 31 } 29 32 33 /** 34 * 35 * @return True if primitive was in dataset before (so it's not really added), but it was incomplete 36 */ 37 public boolean wasIncomplete() { 38 return wasIncomplete; 39 } 40 30 41 } -
trunk/src/org/openstreetmap/josm/data/osm/event/PrimitivesRemovedEvent.java
r2622 r2623 13 13 14 14 private final List<? extends OsmPrimitive> primitives; 15 private final boolean wasComplete; 15 16 16 public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives) { 17 public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasComplete) { 17 18 super(dataSet); 18 19 this.primitives = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(primitives)); 20 this.wasComplete = wasComplete; 19 21 } 20 22 … … 24 26 } 25 27 28 @Override 26 29 public List<? extends OsmPrimitive> getPrimitives() { 27 30 return primitives; 28 31 } 29 32 33 /** 34 * 35 * @return True if primitive wasn't really removed from the dataset, it only become incomplete again 36 */ 37 public boolean wasComplete() { 38 return wasComplete; 39 } 40 30 41 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
r2622 r2623 52 52 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask; 53 53 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; 54 import org.openstreetmap.josm.gui.layer.DataChangeListener;55 54 import org.openstreetmap.josm.gui.layer.Layer; 56 55 import org.openstreetmap.josm.gui.layer.OsmDataLayer; … … 66 65 * objects are visible on the map and can be selected there. Relations are not. 67 66 */ 68 public class RelationListDialog extends ToggleDialog implements MapView.LayerChangeListener, DataSetListener, DataChangeListener {67 public class RelationListDialog extends ToggleDialog implements DataSetListener { 69 68 //private static final Logger logger = Logger.getLogger(RelationListDialog.class.getName()); 70 69 … … 143 142 144 143 @Override public void showNotify() { 145 MapView.addLayerChangeListener(this);146 144 MapView.addLayerChangeListener(newAction); 147 145 DatasetEventManager.getInstance().addDatasetListener(this, true); 148 dataChanged( Main.main.getEditLayer());146 dataChanged(null); 149 147 } 150 148 151 149 @Override public void hideNotify() { 152 MapView.removeLayerChangeListener(this);153 150 MapView.removeLayerChangeListener(newAction); 154 151 DatasetEventManager.getInstance().removeDatasetListener(this); … … 521 518 } 522 519 520 public synchronized void sort() { 521 Collections.sort( 522 relations, 523 new Comparator<Relation>() { 524 NameFormatter formatter = DefaultNameFormatter.getInstance(); 525 526 public int compare(Relation r1, Relation r2) { 527 return r1.getDisplayName(formatter).compareTo(r2.getDisplayName(formatter)); 528 } 529 } 530 ); 531 } 532 533 private boolean isValid(Relation r) { 534 return !r.isDeleted() && r.isVisible() && !r.isIncomplete(); 535 } 536 523 537 public synchronized void setRelations(Collection<Relation> relations) { 524 538 List<Relation> sel = getSelectedRelations(); … … 531 545 } 532 546 for (Relation r: relations) { 533 if ( ! r.isDeleted() && r.isVisible() && !r.isIncomplete()) {547 if (isValid(r)) { 534 548 this.relations.add(r); 535 549 } … … 538 552 fireIntervalAdded(this, 0, getSize()); 539 553 setSelectedRelations(sel); 540 }541 542 public synchronized void sort() {543 Collections.sort(544 relations,545 new Comparator<Relation>() {546 NameFormatter formatter = DefaultNameFormatter.getInstance();547 548 public int compare(Relation r1, Relation r2) {549 return r1.getDisplayName(formatter).compareTo(r2.getDisplayName(formatter));550 }551 }552 );553 554 } 554 555 … … 561 562 */ 562 563 public synchronized void addRelations(Collection<? extends OsmPrimitive> addedPrimitives) { 563 if (addedPrimitives == null || addedPrimitives.isEmpty()) return;564 564 boolean added = false; 565 565 for (OsmPrimitive p: addedPrimitives) { … … 567 567 continue; 568 568 } 569 if (relations.contains(p)) { 569 570 Relation r = (Relation)p; 571 if (relations.contains(r)) { 570 572 continue; 571 573 } 572 relations.add((Relation)p); 573 added = true; 574 if (isValid(r)) { 575 relations.add(r); 576 added = true; 577 } 574 578 } 575 579 if (added) { … … 695 699 696 700 /* ---------------------------------------------------------------------------------- */ 697 /* LayerChangeListener */698 /* ---------------------------------------------------------------------------------- */699 public void activeLayerChange(Layer a, Layer b) {700 if (a != null && a instanceof OsmDataLayer) {701 ((OsmDataLayer)a).listenerDataChanged.remove(this);702 }703 if (b != null && b instanceof OsmDataLayer) {704 ((OsmDataLayer)b).listenerDataChanged.add(this);705 }706 707 }708 public void layerRemoved(Layer a) {/* irrelevant in this context */}709 public void layerAdded(Layer a) {/* irrelevant in this context */}710 711 /* ---------------------------------------------------------------------------------- */712 701 /* DataSetListener */ 713 702 /* ---------------------------------------------------------------------------------- */ … … 751 740 } 752 741 } 753 754 /* ---------------------------------------------------------------------------------- */755 /* DataSetListener */756 /* ---------------------------------------------------------------------------------- */757 public void dataChanged(OsmDataLayer l) {758 if (l != null && l == Main.main.getEditLayer()) {759 initFromLayer(l);760 }761 }762 742 }
Note:
See TracChangeset
for help on using the changeset viewer.