Apply patch from John Cole to make closeBox show up in AnchoredBubble

popups. (Thanks John!) I like this solution better than hacking Rico.
Closes #698.


git-svn-id: http://svn.openlayers.org/trunk/openlayers@3149 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-05-15 21:10:13 +00:00
parent 2101eec18b
commit e4599ea06f
6 changed files with 27 additions and 8 deletions
+1
View File
@@ -1,6 +1,7 @@
OpenLayers contributors: OpenLayers contributors:
Howard Butler Howard Butler
Bertil Chaupis Bertil Chaupis
John Cole
Jeff Dege Jeff Dege
Schuyler Erle Schuyler Erle
Christian López Espínola Christian López Espínola
+11 -2
View File
@@ -47,7 +47,7 @@
popup = new OpenLayers.Popup.Anchored("chicken", popup = new OpenLayers.Popup.Anchored("chicken",
new OpenLayers.LonLat(5,40), new OpenLayers.LonLat(5,40),
new OpenLayers.Size(200,200), new OpenLayers.Size(200,200),
"example popup"); "example popup", true);
map.addPopup(popup); map.addPopup(popup);
} }
@@ -69,8 +69,17 @@
} }
function mousedown(evt) { function mousedown(evt) {
// check to see if the popup was hidden by the close box
// if so, then destroy it before continuing
if (popup != null) {
if (!popup.visible()) {
markers.map.removePopup(popup);
popup.destroy();
popup = null;
}
}
if (popup == null) { if (popup == null) {
popup = feature.createPopup(); popup = feature.createPopup(true);
popup.setContentHTML("<a href='http://www.somethingconstructive.net' target='_blank'>click me</a>"); popup.setContentHTML("<a href='http://www.somethingconstructive.net' target='_blank'>click me</a>");
popup.setBackgroundColor("yellow"); popup.setBackgroundColor("yellow");
popup.setOpacity(0.7); popup.setOpacity(0.7);
+3 -2
View File
@@ -121,6 +121,7 @@ OpenLayers.Feature.prototype= {
}, },
/** /**
* @param {Boolean} closeBox create popup with closebox or not
* @returns A Popup Object created from the 'lonlat', 'popupSize', * @returns A Popup Object created from the 'lonlat', 'popupSize',
* and 'popupContentHTML' properties set in this.data. It uses * and 'popupContentHTML' properties set in this.data. It uses
* this.marker.icon as default anchor. * this.marker.icon as default anchor.
@@ -132,7 +133,7 @@ OpenLayers.Feature.prototype= {
* *
* @type OpenLayers.Popup.AnchoredBubble * @type OpenLayers.Popup.AnchoredBubble
*/ */
createPopup: function() { createPopup: function(closeBox) {
if (this.lonlat != null) { if (this.lonlat != null) {
@@ -143,7 +144,7 @@ OpenLayers.Feature.prototype= {
this.lonlat, this.lonlat,
this.data.popupSize, this.data.popupSize,
this.data.popupContentHTML, this.data.popupContentHTML,
anchor); anchor, closeBox);
} }
return this.popup; return this.popup;
}, },
+10 -2
View File
@@ -45,6 +45,9 @@ OpenLayers.Popup.prototype = {
/** @type DOMElement */ /** @type DOMElement */
contentDiv:null, contentDiv:null,
/** @type DOMElement */
groupDiv:null,
/** @type int */ /** @type int */
padding: 5, padding: 5,
@@ -84,13 +87,18 @@ OpenLayers.Popup.prototype = {
this.div = OpenLayers.Util.createDiv(this.id, null, null, this.div = OpenLayers.Util.createDiv(this.id, null, null,
null, null, null, "hidden"); null, null, null, "hidden");
this.div.className = 'olPopup'; this.div.className = 'olPopup';
this.groupDiv = OpenLayers.Util.createDiv(null, null, null,
null, "relative", null,
"hidden");
var id = this.div.id + "_contentDiv"; var id = this.div.id + "_contentDiv";
this.contentDiv = OpenLayers.Util.createDiv(id, null, this.size.clone(), this.contentDiv = OpenLayers.Util.createDiv(id, null, this.size.clone(),
null, "relative", null, null, "relative", null,
"hidden"); "hidden");
this.contentDiv.className = 'olPopupContent'; this.contentDiv.className = 'olPopupContent';
this.div.appendChild(this.contentDiv); this.groupDiv.appendChild(this.contentDiv);
this.div.appendChild(this.groupDiv);
if (closeBox == true) { if (closeBox == true) {
// close icon // close icon
@@ -102,7 +110,7 @@ OpenLayers.Popup.prototype = {
img); img);
closeImg.style.right = this.padding + "px"; closeImg.style.right = this.padding + "px";
closeImg.style.top = this.padding + "px"; closeImg.style.top = this.padding + "px";
this.div.appendChild(closeImg); this.groupDiv.appendChild(closeImg);
var closePopup = function(e) { var closePopup = function(e) {
this.hide(); this.hide();
+1 -1
View File
@@ -139,7 +139,7 @@ OpenLayers.Popup.AnchoredBubble.prototype =
if (firstTime) { if (firstTime) {
OpenLayers.Rico.Corner.round(this.div, options); OpenLayers.Rico.Corner.round(this.div, options);
} else { } else {
OpenLayers.Rico.Corner.reRound(this.contentDiv, options); OpenLayers.Rico.Corner.reRound(this.groupDiv, options);
//set the popup color and opacity //set the popup color and opacity
this.setBackgroundColor(); this.setBackgroundColor();
this.setOpacity(); this.setOpacity();
+1 -1
View File
@@ -80,7 +80,7 @@
t.eq(popup.div.style.width, w + "px", "width position of popup.div set correctly"); t.eq(popup.div.style.width, w + "px", "width position of popup.div set correctly");
t.eq(popup.div.style.height, h + "px", "heightposition of popup.div set correctly"); t.eq(popup.div.style.height, h + "px", "heightposition of popup.div set correctly");
var contentDiv = popup.div.childNodes[0]; var contentDiv = popup.div.childNodes[0].childNodes[0];
t.eq(contentDiv.className, "olPopupContent", "correct content div className"); t.eq(contentDiv.className, "olPopupContent", "correct content div className");
t.eq(contentDiv.id, "chicken_contentDiv", "correct content div id"); t.eq(contentDiv.id, "chicken_contentDiv", "correct content div id");