Ignore:
Timestamp:
2009-11-11T21:34:54+01:00 (14 years ago)
Author:
jttt
Message:

Added DatasetListener, Dataset now fire events everytime one of its primitives is changed. Used new Dataset listener in RelationListDialog

File:
1 edited

Legend:

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

    r2438 r2439  
    4747    private Storage<OsmPrimitive> allPrimitives = new Storage<OsmPrimitive>(new IdHash());
    4848    private Map<PrimitiveId, OsmPrimitive> primitivesMap = allPrimitives.foreignKey(new IdHash());
     49    private List<DataSetListener> listeners = new ArrayList<DataSetListener>();
    4950
    5051    /**
     
    191192        allPrimitives.add(primitive);
    192193        primitive.setDataset(this);
     194        firePrimitivesAdded(Collections.singletonList(primitive));
    193195    }
    194196
     
    232234        allPrimitives.remove(primitive);
    233235        primitive.setDataset(null);
     236        firePrimitivesRemoved(Collections.singletonList(primitive));
    234237    }
    235238
     
    784787    }
    785788
     789
     790    public void addDataSetListener(DataSetListener dsl) {
     791        listeners.add(dsl);
     792    }
     793
     794    public void removeDataSetListener(DataSetListener dsl) {
     795        listeners.remove(dsl);
     796    }
     797
     798    void firePrimitivesAdded(Collection<? extends OsmPrimitive> added) {
     799        for (DataSetListener dsl : listeners) {
     800            dsl.primtivesAdded(added);
     801        }
     802    }
     803
     804    void firePrimitivesRemoved(Collection<? extends OsmPrimitive> removed) {
     805        for (DataSetListener dsl : listeners) {
     806            dsl.primtivesRemoved(removed);
     807        }
     808    }
     809
     810    void fireTagsChanged(OsmPrimitive prim) {
     811        for (DataSetListener dsl : listeners) {
     812            dsl.tagsChanged(prim);
     813        }
     814    }
     815
     816    void fireRelationMembersChanged(Relation r) {
     817        for (DataSetListener dsl : listeners) {
     818            dsl.relationMembersChanged(r);
     819        }
     820    }
     821
    786822    public void fireNodeMoved(Node node) {
    787         // TODO Fire event
    788823        reindexNode(node);
     824        for (DataSetListener dsl : listeners) {
     825            dsl.nodeMoved(node);
     826        }
    789827    }
    790828
    791829    public void fireWayNodesChanged(Way way) {
    792         // TODO Fire event
    793830        reindexWay(way);
     831        for (DataSetListener dsl : listeners) {
     832            dsl.wayNodesChanged(way);
     833        }
    794834    }
    795835
Note: See TracChangeset for help on using the changeset viewer.