[Mapbender-commits] r3473 - in trunk/mapbender: http/javascripts lib

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue Jan 20 10:40:13 EST 2009


Author: christoph
Date: 2009-01-20 10:40:13 -0500 (Tue, 20 Jan 2009)
New Revision: 3473

Modified:
   trunk/mapbender/http/javascripts/geometry.js
   trunk/mapbender/http/javascripts/mod_digitize_tab.php
   trunk/mapbender/lib/div.js
Log:
http://trac.osgeo.org/mapbender/ticket/360

Modified: trunk/mapbender/http/javascripts/geometry.js
===================================================================
--- trunk/mapbender/http/javascripts/geometry.js	2009-01-20 15:37:26 UTC (rev 3472)
+++ trunk/mapbender/http/javascripts/geometry.js	2009-01-20 15:40:13 UTC (rev 3473)
@@ -1627,15 +1627,21 @@
 	 * 
 	 * @type DivTag
 	 */
-	this.canvasDivTag = new DivTag(aTagName, aMapframe, aStyle);
+	var mapframe = aMapframe;
+	var mapObjInd = getMapObjIndexByName(mapframe);
 
+	if (mb_mapObj[mapObjInd].getDomElement().frameName) {
+		this.canvasDivTag = new DivTag(aTagName, mapName, aStyle);
+	}
+	else {
+		this.canvasDivTag = new DivTag(aTagName, "", aStyle, mb_mapObj[mapObjInd].getDomElement());
+	}
+
 	var that = this;
 
 	var diameter = 8;
 	var minWidth = 8;
 	var lineWidth = aLineWidth || 2;
-	var mapframe = aMapframe;
-	var mapObjInd = getMapObjIndexByName(mapframe);
 	var mapframeWidth = mb_mapObj[mapObjInd].width;
 	var mapframeHeight = mb_mapObj[mapObjInd].height;
 	eventResizeMap.register(function () {
@@ -1643,7 +1649,7 @@
 		mapframeHeight = mb_mapObj[mapObjInd].height;
 	});
 	var style = aStyle;
-	var canvas = new jsGraphics(aTagName, mb_mapObj[mapObjInd].getDomElement().frameName?window.frames[mapframe]:window);
+	var canvas = new jsGraphics(aTagName, mb_mapObj[mapObjInd].getDomElement().frameName ? window.frames[mapframe] : window);
 	canvas.setStroke(lineWidth);
 	mb_registerPanSubElement(aTagName);
 }
@@ -1773,7 +1779,7 @@
 		}
 		for (var i=0; i<targets.length; i++){
 			if (typeof(canvas[i]) == 'undefined') {
-				canvas[i] = new Canvas(targets[i], tagname, style, lineWidth);
+				canvas[i] = new Canvas(targets[i], tagname + i, style, lineWidth);
 			}
 			canvas[i].paint(gA);
 		}

Modified: trunk/mapbender/http/javascripts/mod_digitize_tab.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_digitize_tab.php	2009-01-20 15:37:26 UTC (rev 3472)
+++ trunk/mapbender/http/javascripts/mod_digitize_tab.php	2009-01-20 15:40:13 UTC (rev 3473)
@@ -69,6 +69,26 @@
 var buttonDig_x = [];
 var buttonDig_y = [];	
 
+var mapWindow;
+var mapDomElement;
+var mapType = "";
+
+parent.eventInit.register(function () {
+	var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
+	mapDomElement = parent.mb_mapObj[mapIndex].getDomElement();
+	mapType = mapDomElement.tagName.toUpperCase();
+	if (mapType == "DIV") {
+		mapWindow = parent.window;
+	}
+	else if (mapType == "IFRAME") {
+		mapWindow = mapDomElement.window;
+	}
+	else {
+		new parent.Mb_warning("Could not set CSS for map in digitizing module.");
+	}
+});
+
+
 <?php
 echo "var mod_digitize_target = '".$e_target."';";
 $digitizeConfFilenameAndPath = dirname(__FILE__) . "/../../conf/" . $digitize_conf_filename;
@@ -110,6 +130,25 @@
 try {if(mod_digitize_elName){}}catch(e) {mod_digitize_elName = "digitize";}
 try {if(nonTransactionalEditable){}}catch(e) {nonTransactionalEditable = false;}
 
+function getMousePosition(e) {
+	parent.mb_getMousePos(e, mod_digitize_target);
+	var currentPos = null;
+	if (mapType == "DIV") {
+		currentPos = new parent.Point(
+			parent.clickX - parseInt(mapDomElement.style.left), 
+			parent.clickY - parseInt(mapDomElement.style.top)
+		);
+	}
+	else {
+		currentPos = new parent.Point(
+			parent.clickX, 
+			parent.clickY
+		);
+	}
+	return currentPos;
+}
+
+
 function initializeDigitize () {
 	d = new parent.GeometryArray();
 	GeometryArray = parent.GeometryArray;
@@ -150,24 +189,24 @@
 function mod_digitize_go(e){
 	// ie workaround
 	if (e == undefined) {
-		e = parent.frames[mod_digitize_target].event;
+		e = mapWindow.event;
 	}
 	if (e) {
 		// track mouse position
-		parent.mb_getMousePos(e, mod_digitize_target);
-		var currentPos = new parent.Point(parent.clickX, parent.clickY);
+		var currentPos = getMousePosition(e);
+		
 		s.check(currentPos);
 	}
 	else {
 //		s.clean();
 	}
 
-	var el = parent.frames[mod_digitize_target].document;
+	var el = mapWindow.document;
 	el.onmousedown = mod_digitize_start;
 }
 
 function mod_digitize_timeout(){
-	var el = parent.frames[mod_digitize_target].document;
+	var el = mapWindow.document;
 	el.onmousedown = null;
 	el.onmouseup = null;
 	el.onmousemove = null;
@@ -189,8 +228,8 @@
 		s.clean();
 	}
 	else {
-		parent.mb_getMousePos(e,mod_digitize_target);
-		realWorldPos = parent.mapToReal(mod_digitize_target,new parent.Point(parent.clickX,parent.clickY));
+		var currentPos = getMousePosition(e);
+		realWorldPos = parent.mapToReal(mod_digitize_target,currentPos);
 	}
 	
 	if (d.get(-1).geomType == parent.geomType.polygon && d.getGeometry(-1,-1).count() > 1 && d.getGeometry(-1,-1).get(0).equals(realWorldPos)) {
@@ -270,13 +309,13 @@
 	if(mod_digitizeEvent == button_move){
 		mod_digitize_timeout();
 		basepointObject.style.cursor = 'move';
-		basepointObject.onmousedown = parent.window.frames[mod_digitize_elName].selectBasepoint;
+		basepointObject.onmousedown = parent.frames[mod_digitize_elName].selectBasepoint;
 	}
 
 	if(mod_digitizeEvent == button_delete){
 		mod_digitize_timeout();
 		basepointObject.style.cursor = 'crosshair';
-		basepointObject.onmousedown = parent.window.frames[mod_digitize_elName].deleteBasepoint;
+		basepointObject.onmousedown = parent.frames[mod_digitize_elName].deleteBasepoint;
 	}
 }
 
@@ -302,8 +341,9 @@
 	var k = basepointRingIndex;
 	var l = basepointPointIndex;
 	
-	parent.mb_getMousePos(e, mod_digitize_target);
-	var pos = parent.makeClickPos2RealWorldPos(mod_digitize_target,parent.clickX, parent.clickY);
+	var currentPos = getMousePosition(e);
+
+	var pos = parent.makeClickPos2RealWorldPos(mod_digitize_target,currentPos.x, currentPos.y);
 	var p = new parent.Point(pos[0], pos[1]);
 	if (k == undefined) {
 		d.getGeometry(i,j).addPointAtIndex(p, l);
@@ -356,8 +396,7 @@
 
 function dragBasepoint(e){
 	if(basepointDragActive){
-		parent.mb_getMousePos(e, mod_digitize_target);
-		var currentPos = new parent.Point(parent.clickX, parent.clickY);
+		var currentPos = getMousePosition(e);
 		var res = s.check(currentPos);
 
 	}
@@ -380,8 +419,8 @@
 	var l = basepointPointIndex;
 	basepointDragActive = false;
 	
-	parent.mb_getMousePos(e, mod_digitize_target);
-	var basepointDragEnd = new parent.Point(parent.clickX, parent.clickY);
+	var currentPos = getMousePosition(e);
+	var basepointDragEnd = currentPos;
 	basepointObject.onmousedown = null;
 	var p = parent.makeClickPos2RealWorldPos(mod_digitize_target, basepointDragEnd.x, basepointDragEnd.y);
 
@@ -452,18 +491,25 @@
 	registerDigitizePreFunctions("drawDashedLine()");
 	registerDigitizeSubFunctions("updateListOfGeometries()");
 	registerDigitizeSubFunctions("drawDashedLine()");
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].initializeDigitize()");
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].setStyleForTargetFrame()");
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].checkDigitizeTag()");
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].initialiseSnapping()");
-	parent.mb_registerL10nFunctions("window.frames['"+ mod_digitize_elName + "'].getMessages()");
-//	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].appendGeometryArrayFromKML()");
-	if (!nonTransactionalEditable) {
-		parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].initialiseHighlight()");
-	}
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].initialiseMeasure()");
-	parent.mb_registerInitFunctions("window.frames['"+ mod_digitize_elName + "'].getMessages()");
-	parent.mb_registerSubFunctions("window.frames['" + mod_digitize_elName + "'].updateExtent()");
+	parent.eventInit.register(function () {
+		initializeDigitize();
+		setStyleForTargetFrame();
+		checkDigitizeTag();
+		initialiseSnapping();
+//		appendGeometryArrayFromKML();
+		if (!nonTransactionalEditable) {
+			initialiseHighlight();
+		}
+		initialiseMeasure();
+		getMessages();
+	});
+	parent.eventLocalize.register(function() {
+		getMessages();
+	});
+
+	parent.eventAfterMapRequest.register(function () {
+		updateExtent();
+	});
 	try {if(spatialRequestResultToDigitize){}}catch(e) {spatialRequestResultToDigitize = 1;}
 	if(spatialRequestResultToDigitize==1){
 		parent.mb_registerWfsReadSubFunctions(function(geom){parent.tab_open(mod_digitize_elName);parent.window.frames[mod_digitize_elName].appendGeometryArray(geom);});
@@ -472,32 +518,46 @@
 }
 
 function checkDigitizeTag(){
-	var digitizeTagName = "digitize";
-	var digitizeTagStyle = {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeTransactionalZIndex, "font-size":"10px"};
-	 
-	digitizeDivTag = new parent.DivTag(digitizeTagName, mod_digitize_target, digitizeTagStyle);
+	var digitizeTagName = "digitizeDiv";
+	var digitizeTagStyle;
+	
+
+	if (mapType == "DIV") {
+		
+		digitizeTagStyle = {"z-index":digitizeTransactionalZIndex, "font-size":"10px"};
+		digitizeDivTag = new parent.DivTag(digitizeTagName, "", digitizeTagStyle, mapDomElement);
+	}	 
+	else {
+		digitizeTagStyle = {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeTransactionalZIndex, "font-size":"10px"};
+		digitizeDivTag = new parent.DivTag(digitizeTagName, mod_digitize_target, digitizeTagStyle);
+	}
 	parent.mb_registerPanSubElement(digitizeTagName);
 	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].drawDashedLine()");
 }
 
 
 function setStyleForTargetFrame(){
-	var cssLink = parent.window.frames[mod_digitize_target].document.createElement("link");
+	var cssLink = mapWindow.document.createElement("link");
+	var cssHead = mapWindow.document.getElementsByTagName("head")[0]; 
 	cssLink.setAttribute("href", cssUrl); 
 	cssLink.setAttribute("type", "text/css"); 
 	cssLink.setAttribute("rel", "stylesheet"); 
-	var cssTmp = parent.window.frames[mod_digitize_target].document.getElementsByTagName("head")[0];
-	cssTmp.appendChild(cssLink);
+	cssHead.appendChild(cssLink);
 }
 
 function initialiseSnapping(){
 	s = new parent.Snapping(mod_digitize_target, snappingTolerance, snappingColor, snappingHighlightZIndex);
 }
 function initialiseHighlight(){
-	nonTransactionalHighlight = new parent.Highlight(new Array(mod_digitize_target), "nonTransactional", {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeNonTransactionalZIndex}, nonTransactionalLineWidth);
+	nonTransactionalHighlight = new parent.Highlight([mod_digitize_target], "nonTransactional", {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeNonTransactionalZIndex}, nonTransactionalLineWidth);
 }
 function initialiseMeasure(){
-	measureDivTag = new parent.DivTag(measureTagName, measureTagTarget, measureTagStyle);
+	if (mapType == "DIV") {
+		measureDivTag = new parent.DivTag(measureTagName, "", measureTagStyle);
+	}
+	else {
+		measureDivTag = new parent.DivTag(measureTagName, measureTagTarget, measureTagStyle);
+	}
 	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].updateMeasureTag()");
 }
 // --- registered functions (end) -----------------------------------------------------------------------------------------
@@ -658,7 +718,7 @@
 				obj.id == button_split || obj.id == button_merge ||
 				obj.id == button_difference){
 					
-		var el = parent.frames[mod_digitize_target].document;
+		var el = mapWindow.document;
 		el.onmousemove = mod_digitize_go;
 
 		mod_digitizeEvent = obj.id;

Modified: trunk/mapbender/lib/div.js
===================================================================
--- trunk/mapbender/lib/div.js	2009-01-20 15:37:26 UTC (rev 3472)
+++ trunk/mapbender/lib/div.js	2009-01-20 15:40:13 UTC (rev 3473)
@@ -13,7 +13,7 @@
  * @param aStyle {Object} an object containing a set of name value pairs, like
  *                        {position:absolute,top:30,z-Index:30}
  */
-function DivTag (aTagName, aFrameName, aStyle) {
+function DivTag (aTagName, aFrameName, aStyle, appendToThisDomElement) {
 	/**
 	 * @ignore
 	 */
@@ -80,8 +80,14 @@
 	var create = function () {
 		if (!that.exists()) {
 			var divTag = rootNode.createElement("div");
-			var divTagAppended = rootNode.getElementsByTagName("body")[0].appendChild(divTag);
-			divTagAppended.id = tagName;
+			var divTagAppended;
+			if (targetDomElement !== null) {
+				divTagAppended = targetDomElement.appendChild(divTag);
+			}
+			else {
+				divTagAppended = rootNode.getElementsByTagName("body")[0].appendChild(divTag);
+			}
+			divTag.id = tagName;
 		}
 		else {
 			that.clean();
@@ -103,6 +109,7 @@
 	var tagName = aTagName;
 	var frameName = aFrameName;
 	var rootNode = determineRootNode();
+	var targetDomElement = appendToThisDomElement ? appendToThisDomElement : null;
 	var tagStyle = aStyle;
 
 	create();



More information about the Mapbender_commits mailing list