]> git.openstreetmap.org Git - rails.git/blobdiff - public/lib/OpenLayers/Popup.js
openlayers madness
[rails.git] / public / lib / OpenLayers / Popup.js
diff --git a/public/lib/OpenLayers/Popup.js b/public/lib/OpenLayers/Popup.js
new file mode 100644 (file)
index 0000000..1491109
--- /dev/null
@@ -0,0 +1,232 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the full
+ * text of the license. */
+/**\r
+* @class\r
+*/\r
+OpenLayers.Popup = Class.create();\r
+\r
+OpenLayers.Popup.count = 0;\r
+OpenLayers.Popup.WIDTH = 200;\r
+OpenLayers.Popup.HEIGHT = 200;\r
+OpenLayers.Popup.COLOR = "white";\r
+OpenLayers.Popup.OPACITY = 1;\r
+OpenLayers.Popup.BORDER = "0px";\r
+\r
+OpenLayers.Popup.prototype = {\r
+\r
+    /** @type OpenLayers.Events*/\r
+    events: null,\r
+    \r
+    /** @type String */\r
+    id: "",\r
+\r
+    /** @type OpenLayers.LonLat */\r
+    lonlat: null,\r
+\r
+    /** @type DOMElement */\r
+    div: null,\r
+\r
+    /** @type OpenLayers.Size*/\r
+    size: null,    \r
+\r
+    /** @type String */\r
+    contentHTML: "",\r
+    \r
+    /** @type String */\r
+    backgroundColor: "",\r
+    \r
+    /** @type float */\r
+    opacity: "",\r
+\r
+    /** @type String */\r
+    border: "",\r
+\r
+    /** this gets set in Map.js when the popup is added to the map\r
+     * @type OpenLayers.Map */\r
+    map: null,\r
+\r
+    /** \r
+    * @constructor\r
+    * \r
+    * @param {String} id\r
+    * @param {OpenLayers.LonLat} lonlat\r
+    * @param {OpenLayers.Size} size\r
+    * @param {String} contentHTML\r
+    */\r
+    initialize:function(id, lonlat, size, contentHTML) {\r
+        OpenLayers.Popup.count += 1;\r
+        this.id = (id != null) ? id : "Popup" + OpenLayers.Popup.count;\r
+        this.lonlat = lonlat;\r
+        this.size = (size != null) ? size \r
+                                  : new OpenLayers.Size(\r
+                                                   OpenLayers.Popup.WIDTH,\r
+                                                   OpenLayers.Popup.HEIGHT);\r
+        if (contentHTML != null) { \r
+             this.contentHTML = contentHTML;\r
+        }\r
+        this.backgroundColor = OpenLayers.Popup.COLOR;\r
+        this.opacity = OpenLayers.Popup.OPACITY;\r
+        this.border = OpenLayers.Popup.BORDER;\r
+\r
+        this.div = OpenLayers.Util.createDiv(this.id + "_div", null, null, \r
+                                             null, null, null, "hidden");\r
+\r
+        this.events = new OpenLayers.Events(this, this.div, null);\r
+    },\r
+\r
+    /** \r
+    */\r
+    destroy: function() {\r
+        if (this.map != null) {\r
+            this.map.removePopup(this);\r
+        }\r
+        this.div = null;\r
+        this.map = null;\r
+    },\r
+\r
+    /** \r
+    * @param {OpenLayers.Pixel} px\r
+    * \r
+    * @returns Reference to a div that contains the drawn popup\r
+    * @type DOMElement\r
+    */\r
+    draw: function(px) {\r
+        if (px == null) {\r
+            if ((this.lonlat != null) && (this.map != null)) {\r
+                px = this.map.getLayerPxFromLonLat(this.lonlat);\r
+            }\r
+        }\r
+        \r
+        this.setSize();\r
+        this.setBackgroundColor();\r
+        this.setOpacity();\r
+        this.setBorder();\r
+        this.setContentHTML();\r
+        this.moveTo(px);\r
+\r
+        return this.div;\r
+    },\r
+\r
+    /** \r
+     * if the popup has a lonlat and its map members set, \r
+     *  then have it move itself to its proper position\r
+     */\r
+    updatePosition: function() {\r
+        if ((this.lonlat) && (this.map)) {\r
+                var px = this.map.getLayerPxFromLonLat(this.lonlat);\r
+                this.moveTo(px);            \r
+        }\r
+    },\r
+\r
+    /**\r
+    * @param {OpenLayers.Pixel} px\r
+    */\r
+    moveTo: function(px) {\r
+        if ((px != null) && (this.div != null)) {\r
+            this.div.style.left = px.x + "px";\r
+            this.div.style.top = px.y + "px";\r
+        }\r
+    },\r
+\r
+    /**\r
+     * @returns Boolean indicating whether or not the popup is visible\r
+     * @type Boolean\r
+     */\r
+    visible: function() {\r
+        return Element.visible(this.div);\r
+    },\r
+\r
+    /**\r
+     * \r
+     */\r
+    toggle: function() {\r
+        Element.toggle(this.div);\r
+    },\r
+\r
+    /**\r
+     *\r
+     */\r
+    show: function() {\r
+        Element.show(this.div);\r
+    },\r
+\r
+    /**\r
+     *\r
+     */\r
+    hide: function() {\r
+        Element.hide(this.div);\r
+    },\r
+\r
+    /**\r
+    * @param {OpenLayers.Size} size\r
+    */\r
+    setSize:function(size) { \r
+        if (size != undefined) {\r
+            this.size = size; \r
+        }\r
+        \r
+        if (this.div != null) {\r
+            this.div.style.width = this.size.w;\r
+            this.div.style.height = this.size.h;\r
+        }\r
+    },  \r
+\r
+    /**\r
+    * @param {String} color\r
+    */\r
+    setBackgroundColor:function(color) { \r
+        if (color != undefined) {\r
+            this.backgroundColor = color; \r
+        }\r
+        \r
+        if (this.div != null) {\r
+            this.div.style.backgroundColor = this.backgroundColor;\r
+        }\r
+    },  \r
+    \r
+    /**\r
+    * @param {float} opacity\r
+    */\r
+    setOpacity:function(opacity) { \r
+        if (opacity != undefined) {\r
+            this.opacity = opacity; \r
+        }\r
+        \r
+        if (this.div != null) {\r
+            // for Mozilla and Safari\r
+            this.div.style.opacity = this.opacity;\r
+\r
+            // for IE\r
+            this.div.style.filter = 'alpha(opacity=' + this.opacity*100 + ')';\r
+        }\r
+    },  \r
+    \r
+    /**\r
+    * @param {int} border\r
+    */\r
+    setBorder:function(border) { \r
+        if (border != undefined) {\r
+            this.border = border;\r
+        }\r
+        \r
+        if (this.div != null) {\r
+            this.div.style.border = this.border;\r
+        }\r
+    },      \r
+    \r
+    /**\r
+    * @param {String} contentHTML\r
+    */\r
+    setContentHTML:function(contentHTML) {\r
+        if (contentHTML != null) {\r
+            this.contentHTML = contentHTML;\r
+        }\r
+        \r
+        if (this.div != null) {\r
+            this.div.innerHTML = this.contentHTML;\r
+        }    \r
+    },\r
+\r
+    CLASS_NAME: "OpenLayers.Popup"\r
+};\r