Files
openlayers/lib/OpenLayers/Control.js
crschmidt 07d333cc79 Tag RC4 release.
git-svn-id: http://svn.openlayers.org/tags/openlayers/release-2.4-rc4@3178 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
2007-05-24 14:55:48 +00:00

147 lines
3.4 KiB
JavaScript

/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
* See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
* @class
*/
OpenLayers.Control = OpenLayers.Class.create();
OpenLayers.Control.TYPE_BUTTON = 1;
OpenLayers.Control.TYPE_TOGGLE = 2;
OpenLayers.Control.TYPE_TOOL = 3;
OpenLayers.Control.prototype = {
/** @type String */
id: null,
/** this gets set in the addControl() function in OpenLayers.Map
* @type OpenLayers.Map */
map: null,
/** @type DOMElement */
div: null,
/**
* Controls can have a 'type'. The type determines the type of interactions
* which are possible with them when they are placed into a toolbar.
* @type OpenLayers.Control.TYPES
*/
type: null,
/** This property is used for CSS related to the drawing of the Control.
* @type string
*/
displayClass: "",
/**
* @type boolean
*/
active: null,
/**
* @type OpenLayers.Handler
*/
handler: null,
/**
* @constructor
*
* @param {Object} options
*/
initialize: function (options) {
// We do this before the extend so that instances can override
// className in options.
this.displayClass = this.CLASS_NAME.replace("OpenLayers.", "ol").replace(".","");
OpenLayers.Util.extend(this, options);
this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
},
/**
*
*/
destroy: function () {
// eliminate circular references
if (this.handler) {
this.handler.destroy();
}
this.map = null;
},
/** Set the map property for the control. This is done through an accessor
* so that subclasses can override this and take special action once
* they have their map variable set.
*
* @param {OpenLayers.Map} map
*/
setMap: function(map) {
this.map = map;
if (this.handler) {
this.handler.setMap(map);
}
},
/**
* @param {OpenLayers.Pixel} px
*
* @returns A reference to the DIV DOMElement containing the control
* @type DOMElement
*/
draw: function (px) {
if (this.div == null) {
this.div = OpenLayers.Util.createDiv();
this.div.id = this.id;
this.div.className = this.displayClass;
}
if (px != null) {
this.position = px.clone();
}
this.moveTo(this.position);
return this.div;
},
/**
* @param {OpenLayers.Pixel} px
*/
moveTo: function (px) {
if ((px != null) && (this.div != null)) {
this.div.style.left = px.x + "px";
this.div.style.top = px.y + "px";
}
},
/**
* @type boolean
*/
activate: function () {
if (this.active) {
return false;
}
if (this.handler) {
this.handler.activate();
}
this.active = true;
return true;
},
/**
* @type boolean
*/
deactivate: function () {
if (this.active) {
if (this.handler) {
this.handler.deactivate();
}
this.active = false;
return true;
}
return false;
},
/** @final @type String */
CLASS_NAME: "OpenLayers.Control"
};