Changeset 304 in josm for src/org/openstreetmap/josm/data


Ignore:
Timestamp:
2007-08-10T21:12:53+02:00 (18 years ago)
Author:
imi
Message:
  • fixed a bug that nodes were not created when no data layer was loaded
  • deprecated Main.map.mapView.addLayerChangeListener.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/data/UndoRedoHandler.java

    r301 r304  
    1 // License: GPL. Copyright 2007 by Immanuel Scholz and others
     1//License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.data;
    33
     4import java.util.Iterator;
    45import java.util.LinkedList;
    56import java.util.Stack;
     
    78import org.openstreetmap.josm.Main;
    89import org.openstreetmap.josm.command.Command;
     10import org.openstreetmap.josm.gui.layer.Layer;
    911import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     12import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
    1013import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
    1114
    12 public class UndoRedoHandler {
     15public class UndoRedoHandler implements LayerChangeListener {
    1316
    1417        /**
     
    2225
    2326        public final LinkedList<CommandQueueListener> listenerCommands = new LinkedList<CommandQueueListener>();
     27
     28
     29        public UndoRedoHandler() {
     30                Layer.listeners.add(this);
     31        }
    2432
    2533
     
    3745                fireCommandsChanged();
    3846        }
    39        
     47
    4048        /**
    4149         * Undoes the last added command.
     
    8189                commands.clear();
    8290                fireCommandsChanged();
    83     }
     91        }
     92
     93        public void layerRemoved(Layer oldLayer) {
     94                boolean changed = false;
     95                for (Iterator<Command> it = commands.iterator(); it.hasNext();) {
     96                        if (it.next().invalidBecauselayerRemoved(oldLayer)) {
     97                                it.remove();
     98                                changed = true;
     99                        }
     100                }
     101                for (Iterator<Command> it = redoCommands.iterator(); it.hasNext();) {
     102                        if (it.next().invalidBecauselayerRemoved(oldLayer)) {
     103                                it.remove();
     104                                changed = true;
     105                        }
     106                }
     107                if (changed)
     108                        fireCommandsChanged();
     109        }
     110
     111        public void layerAdded(Layer newLayer) {}
     112        public void activeLayerChange(Layer oldLayer, Layer newLayer) {}
    84113}
Note: See TracChangeset for help on using the changeset viewer.