OpenLayers OpenLayers

Changeset 2838

Show
Ignore:
Timestamp:
03/21/07 16:02:01 (2 years ago)
Author:
elemoine
Message:

Extending undo/redo to most (if not all) extent operations

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control.js

    r2803 r2838  
    139139    }, 
    140140     
     141    /** 
     142     * 
     143     */ 
     144    recordMapExtent: function () { 
     145        if (this.map) { 
     146            var memento = this.map.createMemento(); 
     147            OpenLayers.History.getInstance().addMemento(memento); 
     148        } 
     149    }, 
     150     
    141151    /** @final @type String */ 
    142152    CLASS_NAME: "OpenLayers.Control" 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/DragPan.js

    r2803 r2838  
    3232        var newXY = new OpenLayers.Pixel(size.w / 2 + deltaX, 
    3333                                         size.h / 2 + deltaY); 
    34         var newCenter = this.map.getLonLatFromViewPortPx( newXY );  
     34        var newCenter = this.map.getLonLatFromViewPortPx( newXY ); 
     35        // create and record a memento before panning            
     36        var memento = this.map.createMemento(); 
     37        OpenLayers.History.getInstance().addMemento(memento); 
    3538        this.map.setCenter(newCenter, null, true); 
    3639        // this assumes xy won't be changed inside Handler.Drag 
     
    4851        var newXY = new OpenLayers.Pixel(size.w / 2 + deltaX, 
    4952                                         size.h / 2 + deltaY); 
    50         var newCenter = this.map.getLonLatFromViewPortPx( newXY );  
     53        var newCenter = this.map.getLonLatFromViewPortPx( newXY ); 
     54         
     55 
     56         
    5157        this.map.setCenter(newCenter, null, false); 
    5258        // this assumes xy won't be changed inside Handler.Drag 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js

    r2803 r2838  
    3737    */ 
    3838    defaultKeyPress: function (code) { 
     39        this.recordMapExtent(); 
    3940        switch(code) { 
    4041            case OpenLayers.Event.KEY_LEFT: 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/MouseDefaults.js

    r2803 r2838  
    7272    */ 
    7373    defaultDblClick: function (evt) { 
    74         var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );  
     74        var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); 
     75        this.recordMapExtent(); 
    7576        this.map.setCenter(newCenter, this.map.zoom + 1); 
    7677        OpenLayers.Event.stop(evt); 
     
    129130                var newXY = new OpenLayers.Pixel(size.w / 2 + deltaX, 
    130131                                                 size.h / 2 + deltaY); 
    131                 var newCenter = this.map.getLonLatFromViewPortPx( newXY );  
     132                var newCenter = this.map.getLonLatFromViewPortPx( newXY ); 
     133                this.recordMapExtent();  
    132134                this.map.setCenter(newCenter, null, true); 
    133135                this.mouseDragStart = evt.xy.clone(); 
     
    147149        } else { 
    148150            if (this.performedDrag) { 
     151                this.recordMapExtent(); 
    149152                this.map.setCenter(this.map.center); 
    150153            } 
     
    174177    defaultWheelUp: function(evt) { 
    175178        if (this.map.getZoom() <= this.map.getNumZoomLevels()) { 
     179            this.recordMapExtent(); 
    176180            this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), 
    177181                               this.map.getZoom() + 1); 
     
    184188    defaultWheelDown: function(evt) { 
    185189        if (this.map.getZoom() > 0) { 
     190            this.recordMapExtent(); 
    186191            this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), 
    187192                               this.map.getZoom() - 1); 
     
    206211            } else { 
    207212                var end = this.map.getLonLatFromViewPortPx( evt.xy ); 
     213                this.recordMapExtent(); 
    208214                this.map.setCenter(new OpenLayers.LonLat( 
    209215                  (end.lon), 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/MouseToolbar.js

    r2803 r2838  
    115115        this.switchModeTo("pan"); 
    116116        this.performedDrag = false; 
    117         var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );  
     117        var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); 
     118        this.recordMapExtent(); 
    118119        this.map.setCenter(newCenter, this.map.zoom + 1); 
    119120        OpenLayers.Event.stop(evt); 
     
    264265                    var newXY = new OpenLayers.Pixel(size.w / 2 + deltaX, 
    265266                                                     size.h / 2 + deltaY); 
    266                     var newCenter = this.map.getLonLatFromViewPortPx( newXY );  
     267                    var newCenter = this.map.getLonLatFromViewPortPx( newXY ); 
     268                    this.recordMapExtent(); 
    267269                    this.map.setCenter(newCenter, null, true); 
    268270                    this.mouseDragStart = evt.xy.clone(); 
     
    284286            case "pan": 
    285287                if (this.performedDrag) { 
     288                    this.recordMapExtent(); 
    286289                    this.map.setCenter(this.map.center); 
    287290                }         
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/Navigation.js

    r2803 r2838  
    5454    */ 
    5555    defaultDblClick: function (evt) { 
    56         var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );  
     56        var newCenter = this.map.getLonLatFromViewPortPx( evt.xy ); 
     57        this.recordMapExtent(); 
    5758        this.map.setCenter(newCenter, this.map.zoom + 1); 
    5859        OpenLayers.Event.stop(evt); 
     
    6465     */ 
    6566    wheelUp: function(evt) { 
     67        this.recordMapExtent(); 
    6668        this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), 
    6769                           this.map.getZoom() + 1); 
     
    7274     */ 
    7375    wheelDown: function(evt) { 
     76        this.recordMapExtent(); 
    7477        this.map.setCenter(this.map.getLonLatFromPixel(evt.xy), 
    7578                           this.map.getZoom() - 1); 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/PanZoom.js

    r2810 r2838  
    112112    buttonDown: function (evt) { 
    113113        if (!OpenLayers.Event.isLeftClick(evt)) return; 
    114  
    115         var memento = this.map.createMemento(); 
    116         OpenLayers.History.getInstance().addMemento(memento); 
     114         
     115        this.recordMapExtent(); 
    117116 
    118117        switch (this.action) { 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/ZoomBox.js

    r2803 r2838  
    2424 
    2525    zoomBox: function (position) { 
     26        this.recordMapExtent(); 
    2627        if (position instanceof OpenLayers.Bounds) { 
    2728            var minXY = this.map.getLonLatFromPixel( 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js

    r2803 r2838  
    1717    trigger: function() { 
    1818        if (this.map) { 
     19            this.recordMapExtent(); 
    1920            this.map.zoomToMaxExtent(); 
    2021        }     
  • sandbox/elemoine/openlayers/lib/OpenLayers/History.js

    r2814 r2838  
    99 
    1010OpenLayers.History._instance = null; 
    11 OpenLayers.History.HISTSIZE = 30; 
     11OpenLayers.History.HISTSIZE = 100; 
    1212 
    1313OpenLayers.History.getInstance = function() { 
     
    6262        this.mementos = null; 
    6363    }, 
     64     
     65    _addMemento: function(memento) { 
     66        if (this.mementos.length > OpenLayers.History.HISTSIZE - 1) 
     67            this.mementos.shift(); 
     68        this.mementos.push(memento); 
     69    }, 
    6470 
    6571    /** 
     
    7076            return; 
    7177 
    72         // TODO use HISTSIZE 
    73  
    7478        this.mementos.splice(this.pos); 
    75         this.mementos.push(memento); 
     79        this._addMemento(memento); 
    7680        this.pos = this.mementos.length; 
    7781    }, 
     
    8791        var obj = memento.getObject(); 
    8892             
    89         if (this.pos == this.mementos.length) { 
    90             var m = obj.createMemento(); 
    91             this.mementos.push(m); 
    92         }  
     93        if (this.pos == this.mementos.length) 
     94            this._addMemento(obj.createMemento()); 
    9395 
    9496        obj.setMemento(memento); 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Map.js

    r2810 r2838  
    267267 
    268268    setMemento: function(memento) { 
    269         var bounds = memento.bounds; // TODO 
     269        var bounds = memento.bounds; 
    270270        this.zoomToExtent(bounds); 
    271271    }, 
  • sandbox/elemoine/openlayers/lib/OpenLayers/Memento/Map.js

    r2813 r2838  
    2222     */ 
    2323    initialize: function(map, bounds) { 
    24         var args = new Array(); 
    25         args.push(map); 
    26         OpenLayers.Memento.prototype.initialize.apply(this, args); 
     24        OpenLayers.Memento.prototype.initialize.apply(this, [ map ]); 
    2725        this.bounds = bounds; 
    2826    },