Ignore:
Timestamp:
2009-12-19T10:47:49+01:00 (14 years ago)
Author:
jttt
Message:

Fixed #4161 Major slowdown in recent versions, used correct pattern for listeners realized using CopyOnWriteArrayList

File:
1 edited

Legend:

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

    r2616 r2655  
    99import java.util.List;
    1010import java.util.Set;
    11 import java.util.logging.Logger;
    1211
    1312import javax.swing.DefaultListModel;
     
    2019import org.openstreetmap.josm.data.osm.DataSet;
    2120import org.openstreetmap.josm.data.osm.OsmPrimitive;
     21import org.openstreetmap.josm.data.osm.Storage;
    2222
    2323public class ChangesetListModel extends DefaultListModel  implements ChangesetCacheListener{
    24     static private final Logger logger = Logger.getLogger(ChangesetListModel.class.getName());
     24    //static private final Logger logger = Logger.getLogger(ChangesetListModel.class.getName());
    2525
    2626    private final List<Changeset> data = new ArrayList<Changeset>();
     27    private final Storage<Changeset> shownChangesets = new Storage<Changeset>();
    2728    private DefaultListSelectionModel selectionModel;
    2829
     
    6364    }
    6465
     66    protected void addChangeset(Changeset changeset) {
     67        if (shownChangesets.add(changeset)) {
     68            setChangesets(shownChangesets);
     69            updateModel();
     70        }
     71    }
     72
     73    protected void removeChangeset(Changeset changeset) {
     74        if (shownChangesets.remove(changeset)) {
     75            setChangesets(shownChangesets);
     76            updateModel();
     77        }
     78    }
     79
    6580    protected void setChangesets(Collection<Changeset> changesets) {
     81        shownChangesets.clear();
     82        if (changesets != null) {
     83            shownChangesets.addAll(changesets);
     84        }
     85        updateModel();
     86    }
     87
     88    private void updateModel() {
    6689        Set<Changeset> sel = getSelectedChangesets();
    6790        data.clear();
    68         if (changesets == null) {
    69             fireContentsChanged(this, 0, getSize());
    70             return;
    71         }
    72         data.addAll(changesets);
     91        data.addAll(shownChangesets);
    7392        ChangesetCache cache = ChangesetCache.getInstance();
    7493        for (Changeset cs: data) {
Note: See TracChangeset for help on using the changeset viewer.