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)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

    r2622 r2623  
    5252import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
    5353import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    54 import org.openstreetmap.josm.gui.layer.DataChangeListener;
    5554import org.openstreetmap.josm.gui.layer.Layer;
    5655import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    6665 * objects are visible on the map and can be selected there. Relations are not.
    6766 */
    68 public class RelationListDialog extends ToggleDialog implements MapView.LayerChangeListener, DataSetListener, DataChangeListener {
     67public class RelationListDialog extends ToggleDialog implements DataSetListener {
    6968    //private static final Logger logger = Logger.getLogger(RelationListDialog.class.getName());
    7069
     
    143142
    144143    @Override public void showNotify() {
    145         MapView.addLayerChangeListener(this);
    146144        MapView.addLayerChangeListener(newAction);
    147145        DatasetEventManager.getInstance().addDatasetListener(this, true);
    148         dataChanged(Main.main.getEditLayer());
     146        dataChanged(null);
    149147    }
    150148
    151149    @Override public void hideNotify() {
    152         MapView.removeLayerChangeListener(this);
    153150        MapView.removeLayerChangeListener(newAction);
    154151        DatasetEventManager.getInstance().removeDatasetListener(this);
     
    521518        }
    522519
     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
    523537        public synchronized void setRelations(Collection<Relation> relations) {
    524538            List<Relation> sel =  getSelectedRelations();
     
    531545            }
    532546            for (Relation r: relations) {
    533                 if (! r.isDeleted() && r.isVisible() && !r.isIncomplete()) {
     547                if (isValid(r)) {
    534548                    this.relations.add(r);
    535549                }
     
    538552            fireIntervalAdded(this, 0, getSize());
    539553            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             );
    553554        }
    554555
     
    561562         */
    562563        public synchronized void addRelations(Collection<? extends OsmPrimitive> addedPrimitives) {
    563             if (addedPrimitives == null || addedPrimitives.isEmpty()) return;
    564564            boolean added = false;
    565565            for (OsmPrimitive p: addedPrimitives) {
     
    567567                    continue;
    568568                }
    569                 if (relations.contains(p)) {
     569
     570                Relation r = (Relation)p;
     571                if (relations.contains(r)) {
    570572                    continue;
    571573                }
    572                 relations.add((Relation)p);
    573                 added = true;
     574                if (isValid(r)) {
     575                    relations.add(r);
     576                    added = true;
     577                }
    574578            }
    575579            if (added) {
     
    695699
    696700    /* ---------------------------------------------------------------------------------- */
    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     /* ---------------------------------------------------------------------------------- */
    712701    /* DataSetListener                                                                    */
    713702    /* ---------------------------------------------------------------------------------- */
     
    751740        }
    752741    }
    753 
    754     /* ---------------------------------------------------------------------------------- */
    755     /* DataSetListener                                                                    */
    756     /* ---------------------------------------------------------------------------------- */
    757     public void dataChanged(OsmDataLayer l) {
    758         if (l != null && l == Main.main.getEditLayer()) {
    759             initFromLayer(l);
    760         }
    761     }
    762742}
Note: See TracChangeset for help on using the changeset viewer.