Ignore:
Timestamp:
2009-12-12T21:25:10+01:00 (14 years ago)
Author:
jttt
Message:

Fire primitivesAdded event after also after primitive was downloaded (incomplete set to false). Remove DataChangeListener from RelationListDialog (should not be necessary anymore, was there only for catching incomplete state changes)

Location:
trunk/src/org/openstreetmap/josm/data/osm
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r2622 r2623  
    203203        allPrimitives.add(primitive);
    204204        primitive.setDataset(this);
    205         firePrimitivesAdded(Collections.singletonList(primitive));
     205        firePrimitivesAdded(Collections.singletonList(primitive), false);
    206206    }
    207207
     
    246246        primitive.setDataset(null);
    247247        errors.remove(primitive);
    248         firePrimitivesRemoved(Collections.singletonList(primitive));
     248        firePrimitivesRemoved(Collections.singletonList(primitive), false);
    249249    }
    250250
     
    837837    }
    838838
    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));
    845845    }
    846846
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

    r2620 r2623  
    564564        if (dataSet != null) {
    565565            if (deleted) {
    566                 dataSet.firePrimitivesRemoved(Collections.singleton(this));
     566                dataSet.firePrimitivesRemoved(Collections.singleton(this), false);
    567567            } else {
    568                 dataSet.firePrimitivesAdded(Collections.singleton(this));
     568                dataSet.firePrimitivesAdded(Collections.singleton(this), false);
    569569            }
    570570        }
     
    956956     */
    957957    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");
    958960        setKeys(other.getKeys());
    959961        id = other.id;
     
    12101212
    12111213    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        }
    12121221        this.incomplete = incomplete;
    12131222    }
  • trunk/src/org/openstreetmap/josm/data/osm/Relation.java

    r2620 r2623  
    217217        result.append(" version=");
    218218        result.append(getVersion());
     219        result.append(" ");
     220        result.append(getFlagsAsString());
    219221        result.append(" [");
    220222        for (RelationMember rm:getMembers()) {
  • trunk/src/org/openstreetmap/josm/data/osm/event/PrimitivesAddedEvent.java

    r2622 r2623  
    1313
    1414    private final List<? extends OsmPrimitive> primitives;
     15    private final boolean wasIncomplete;
    1516
    16     public PrimitivesAddedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives) {
     17    public PrimitivesAddedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasIncomplete) {
    1718        super(dataSet);
    1819        this.primitives = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(primitives));
     20        this.wasIncomplete = wasIncomplete;
    1921    }
    2022
     
    2426    }
    2527
     28    @Override
    2629    public List<? extends OsmPrimitive> getPrimitives() {
    2730        return primitives;
    2831    }
    2932
     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
    3041}
  • trunk/src/org/openstreetmap/josm/data/osm/event/PrimitivesRemovedEvent.java

    r2622 r2623  
    1313
    1414    private final List<? extends OsmPrimitive> primitives;
     15    private final boolean wasComplete;
    1516
    16     public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives) {
     17    public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasComplete) {
    1718        super(dataSet);
    1819        this.primitives = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(primitives));
     20        this.wasComplete = wasComplete;
    1921    }
    2022
     
    2426    }
    2527
     28    @Override
    2629    public List<? extends OsmPrimitive> getPrimitives() {
    2730        return primitives;
    2831    }
    2932
     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
    3041}
Note: See TracChangeset for help on using the changeset viewer.