Adding an autoActivate property for controls. If this is set to true, the control will be activated when it is added to a map. This is true for the Navigation, NavigationHistory, KeyboardDefaults, and Panel controls. False for others. r=elemoine (closes #2200)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9589 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2009-07-24 21:58:39 +00:00
parent 1afb016408
commit 8b741bc666
7 changed files with 60 additions and 10 deletions

View File

@@ -105,6 +105,13 @@ OpenLayers.Control = OpenLayers.Class({
*/ */
title: "", title: "",
/**
* APIProperty: autoActivate
* {Boolean} Activate the control when it is added to a map. Default is
* false.
*/
autoActivate: false,
/** /**
* Property: active * Property: active
* {Boolean} The control is active. * {Boolean} The control is active.

View File

@@ -21,6 +21,13 @@
*/ */
OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, { OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, {
/**
* APIProperty: autoActivate
* {Boolean} Activate the control when it is added to a map. Default is
* true.
*/
autoActivate: true,
/** /**
* APIProperty: slideFactor * APIProperty: slideFactor
* Pixels to slide by. * Pixels to slide by.
@@ -53,7 +60,6 @@ OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, {
draw: function() { draw: function() {
this.handler = new OpenLayers.Handler.Keyboard( this, { this.handler = new OpenLayers.Handler.Keyboard( this, {
"keydown": this.defaultKeyPress }); "keydown": this.defaultKeyPress });
this.activate();
}, },
/** /**

View File

@@ -65,6 +65,13 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
*/ */
zoomBoxKeyMask: OpenLayers.Handler.MOD_SHIFT, zoomBoxKeyMask: OpenLayers.Handler.MOD_SHIFT,
/**
* APIProperty: autoActivate
* {Boolean} Activate the control when it is added to a map. Default is
* true.
*/
autoActivate: true,
/** /**
* Constructor: OpenLayers.Control.Navigation * Constructor: OpenLayers.Control.Navigation
* Create a new navigation control * Create a new navigation control
@@ -153,7 +160,6 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
this.handlers.wheel = new OpenLayers.Handler.MouseWheel( this.handlers.wheel = new OpenLayers.Handler.MouseWheel(
this, {"up" : this.wheelUp, this, {"up" : this.wheelUp,
"down": this.wheelDown} ); "down": this.wheelDown} );
this.activate();
}, },
/** /**

View File

@@ -67,11 +67,11 @@ OpenLayers.Control.NavigationHistory = OpenLayers.Class(OpenLayers.Control, {
limit: 50, limit: 50,
/** /**
* Property: activateOnDraw * APIProperty: autoActivate
* {Boolean} Activate the control when it is first added to the map. * {Boolean} Activate the control when it is added to a map. Default is
* Default is true. * true.
*/ */
activateOnDraw: true, autoActivate: true,
/** /**
* Property: clearOnDeactivate * Property: clearOnDeactivate
@@ -224,9 +224,6 @@ OpenLayers.Control.NavigationHistory = OpenLayers.Class(OpenLayers.Control, {
OpenLayers.Control.prototype.draw.apply(this, arguments); OpenLayers.Control.prototype.draw.apply(this, arguments);
this.next.draw(); this.next.draw();
this.previous.draw(); this.previous.draw();
if(this.activateOnDraw) {
this.activate();
}
}, },
/** /**

View File

@@ -21,6 +21,13 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
*/ */
controls: null, controls: null,
/**
* APIProperty: autoActivate
* {Boolean} Activate the control when it is added to a map. Default is
* true.
*/
autoActivate: true,
/** /**
* APIProperty: defaultControl * APIProperty: defaultControl
* {<OpenLayers.Control>} The control which is activated when the control is * {<OpenLayers.Control>} The control which is activated when the control is
@@ -107,7 +114,6 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
scope: this scope: this
}); });
} }
this.activate();
return this.div; return this.div;
}, },

View File

@@ -1197,6 +1197,9 @@ OpenLayers.Map = OpenLayers.Class({
this.viewPortDiv.appendChild( div ); this.viewPortDiv.appendChild( div );
} }
} }
if(control.autoActivate) {
control.activate();
}
}, },
/** /**

View File

@@ -72,6 +72,31 @@
t.ok(control.map == null, "Control.map is null"); t.ok(control.map == null, "Control.map is null");
t.ok(control.handler == null, "Control.handler is null"); t.ok(control.handler == null, "Control.handler is null");
} }
function test_autoActivate(t) {
t.plan(3);
var control, map = new OpenLayers.Map("map");
// confirm that a control is not activated by default
control = new OpenLayers.Control();
map.addControl(control);
t.ok(!control.active, "control is not activated by default");
// confirm that control is activated with autoActivate true
control = new OpenLayers.Control({autoActivate: true});
map.addControl(control);
t.ok(control.active, "control is activated with autoActivate true");
// confirm that control is not activated with autoActivate false
control = new OpenLayers.Control({autoActivate: false});
map.addControl(control);
t.ok(!control.active, "control is not activated with autoActivate false");
map.destroy();
}
</script> </script>
</head> </head>