[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