From 7378388d45ea70e300ae037bd11893c9f257ddb2 Mon Sep 17 00:00:00 2001 From: Schuyler Erle Date: Mon, 22 May 2006 17:25:46 +0000 Subject: [PATCH] Added a position property to Control, which allows us to specify a default location for each Control class, and saves us from *having* to supply a pixel position to the map.addControl() method -- the sensible default will tend to be used instead. git-svn-id: http://svn.openlayers.org/trunk/openlayers@269 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Control.js | 8 +++++++- lib/OpenLayers/Control/PanZoom.js | 8 ++++++-- lib/OpenLayers/Map.js | 5 ++--- tests/test_Control_PanZoom.html | 10 +++++++--- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/OpenLayers/Control.js b/lib/OpenLayers/Control.js index f49febce34..19c31bf9cd 100644 --- a/lib/OpenLayers/Control.js +++ b/lib/OpenLayers/Control.js @@ -11,6 +11,9 @@ OpenLayers.Control.prototype = { /** @type DOMElement */ div: null, + /** @type OpenLayers.Pixel */ + position: null, + /** * @constructor */ @@ -27,7 +30,10 @@ OpenLayers.Control.prototype = { if (this.div == null) { this.div = OpenLayers.Util.createDiv(); } - this.moveTo(px); + if (px != null) { + this.position = px.copyOf(); + } + this.moveTo(this.position); return this.div; }, diff --git a/lib/OpenLayers/Control/PanZoom.js b/lib/OpenLayers/Control/PanZoom.js index 1bff9f484d..f4e575965e 100644 --- a/lib/OpenLayers/Control/PanZoom.js +++ b/lib/OpenLayers/Control/PanZoom.js @@ -4,7 +4,10 @@ OpenLayers.Control.PanZoom = Class.create(); OpenLayers.Control.PanZoom.prototype = Object.extend( new OpenLayers.Control(), { - // Array(...) + /** @type OpenLayers.Pixel */ + position: new OpenLayers.Pixel(4,4), + + /** @type Array(...) */ buttons: null, initialize: function() { @@ -16,7 +19,8 @@ OpenLayers.Control.PanZoom.prototype = */ draw: function(px) { // initialize our internal div - OpenLayers.Control.prototype.draw.apply(this); + OpenLayers.Control.prototype.draw.apply(this, arguments); + px = this.position; // place the controls this.buttons = new Array(); diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index dff25b6c54..708105fa69 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -93,9 +93,8 @@ OpenLayers.Map.prototype = { if (!this.controls) { this.controls = []; - this.addControl(new OpenLayers.Control.MouseDefaults(), null ); - this.addControl(new OpenLayers.Control.PanZoom(), - new OpenLayers.Pixel(4,4) ); + this.addControl(new OpenLayers.Control.MouseDefaults()); + this.addControl(new OpenLayers.Control.PanZoom()); } this.popups = new Array(); diff --git a/tests/test_Control_PanZoom.html b/tests/test_Control_PanZoom.html index e48190d69a..5bd2593592 100644 --- a/tests/test_Control_PanZoom.html +++ b/tests/test_Control_PanZoom.html @@ -10,17 +10,21 @@ t.ok( control instanceof OpenLayers.Control.PanZoom, "new OpenLayers.Control.PanZoom returns object" ); } function test_02_Control_PanZoom_addControl (t) { - t.plan( 6 ); + t.plan( 8 ); map = new OpenLayers.Map('map'); control = new OpenLayers.Control.PanZoom(); t.ok( control instanceof OpenLayers.Control.PanZoom, "new OpenLayers.Control.PanZoom returns object" ); t.ok( map instanceof OpenLayers.Map, "new OpenLayers.Map creates map" ); - map.addControl(control, - new OpenLayers.Pixel(10,10)); + map.addControl(control); t.ok( control.map === map, "Control.map is set to the map object" ); t.ok( map.controls[2] === control, "map.controls contains control" ); t.eq( control.div.style.zIndex, "253", "Control div zIndexed properly" ); t.eq( map.viewPortDiv.lastChild.style.zIndex, "253", "Viewport div contains control div" ); + t.eq( control.div.style.top, "4px", "Control div top located correctly by default"); + + var control2 = new OpenLayers.Control.PanZoom(); + map.addControl(control2, new OpenLayers.Pixel(100,100)); + t.eq( control2.div.style.top, "100px", "2nd control div is located correctly"); } function test_03_Control_PanZoom_control_events (t) { t.plan( 6 );