Might be better to use something like pastebin to share code samples:
http://pastebin.com/

<http://pastebin.com/>Jake

On Thu, Nov 25, 2010 at 1:28 PM, Chris Peto <svg...@resource-solutions.de>wrote:

>
>
> Hi,
>
> Ok, last example, this one allows you to move a single object by mouse down
> and move or "lasso" objects, plus the selection rect resizes down to the
> selected objects. I have already sent this file to you, since Yahoo screws
> up the formatting, but I make it available to everyone here.
>
>
> <?xml version="1.0" standalone="no"?>
> <svg width="100%" height="100%" version="1.1" xml:space="preserve"
> xmlns="http://www.w3.org/2000/svg";
> xmlns:ev="http://www.w3.org/2001/xml-events";
> xmlns:xlink="http://www.w3.org/1999/xlink";
> onload="ecmascript:_onload(evt)"
> onmousedown="ecmascript:MouseDown(evt)"
> onmousemove="ecmascript:MouseMove(evt)"
> onmouseup="ecmascript:MouseUp(evt)">
> <script type="text/ecmascript">
> <![CDATA[
> var svgDoc=document;
> var svgRoot=svgDoc.documentElement;
> var ObjArray = new Array();
> var GroupArray = new Array();
> var SelectRect = null;
> var OrigX = 0;
> var OrigY = 0;
> var bInDrawRect = false;
> var bMoveObjects = false;
> var MyGroupObjectsObj = null;
>
> function _onload(evt)
> {
> MyGroupObjectsObj = svgDoc.getElementById("SelectGroup");
>
> var create_bar=svgDoc.createElementNS("http://www.w3.org/2000/svg";,
> "rect");
> create_bar.setAttribute("id", "r_bar");
> create_bar.setAttribute("fill", "green");
>
> create_bar.setAttribute("x", "300");
> create_bar.setAttribute("y", "50");
> create_bar.setAttribute("width", "100");
> create_bar.setAttribute("height", "30");
> create_bar.setAttribute("pointer-events", "inherit");
> create_bar.setAttribute("onmousedown","ecmascript: Obj_MouseDown(evt)");
>
> svgRoot.insertBefore(create_bar, MyGroupObjectsObj);
> ObjArray[ObjArray.length] = create_bar;
>
> var cir = svgDoc.createElementNS("http://www.w3.org/2000/svg";, "circle");
> cir.setAttribute( "id","cir");
> cir.setAttribute( "cx","420");
> cir.setAttribute( "cy","165");
>
> cir.setAttribute( "r","10");
> cir.setAttribute('fill', 'red');
> cir.setAttribute('pointer-events', 'inherit');
> cir.setAttribute("onmousedown","ecmascript: Obj_MouseDown(evt)");
>
> svgRoot.insertBefore(cir, MyGroupObjectsObj);
>
> ObjArray[ObjArray.length] = cir;
> }
> function Obj_MouseDown(evt)
> {
> if(SelectRect == null)
> {
> evt.stopPropagation();
> var bFound = false;
>
> for(var pos = 0; pos < ObjArray.length;pos++)
> {
> if(ObjArray[pos] == evt.target)
>
> {
> var obj = ObjArray[pos];
> GroupArray[GroupArray.length] = obj;
> ObjArray.splice(pos,1);
> svgRoot.removeChild(obj);
> MyGroupObjectsObj.appendChild(obj);
>
> //testing
> obj.setAttribute("stroke","black");
> bFound = true;
> break;
> }
> }//for
>
> if(bFound)
>
> {
> OrigX = evt.clientX;
> OrigY = evt.clientY;
> SelectRect=svgDoc.createElementNS("http://www.w3.org/2000/svg";,
> "rect");
> SelectRect.setAttribute("id", "SelectRect");
> SelectRect.setAttribute("fill", "white");
> SelectRect.setAttribute("stroke", "blue");
> var gbbox = evt.target.getBBox();
> SelectRect.setAttribute("x", gbbox.x);
> SelectRect.setAttribute("y", gbbox.y);
> SelectRect.setAttribute("width", gbbox.width);
> SelectRect.setAttribute("height", gbbox.height);
> SelectRect.setAttribute("fill-opacity", 0.000001);
>
> SelectRect.setAttribute("pointer-events", "inherit");
>
>
> //svgRoot.insertBefore(SelectRect,svgDoc.getElementById("Main_BKG").nextSibl
> ing);
> svgRoot.appendChild(SelectRect);
> bMoveObjects = true;
> }
>
>
> }
> }
> function MouseDown(evt)
> {
> evt.stopPropagation();
>
> if(!bInDrawRect && SelectRect == null)
> {
> OrigX = evt.clientX;
> OrigY = evt.clientY;
> SelectRect=svgDoc.createElementNS("http://www.w3.org/2000/svg";, "rect");
> SelectRect.setAttribute("id", "SelectRect");
> SelectRect.setAttribute("fill", "white");
> SelectRect.setAttribute("stroke", "blue");
>
> SelectRect.setAttribute("x", evt.clientX);
> SelectRect.setAttribute("y", evt.clientY);
> SelectRect.setAttribute("fill-opacity", 0.000001);
>
> SelectRect.setAttribute("width", "1");
> SelectRect.setAttribute("height", "1");
> SelectRect.setAttribute("pointer-events", "inherit");
>
>
> //svgRoot.insertBefore(SelectRect,svgDoc.getElementById("Main_BKG").nextSibl
> ing);
> svgRoot.appendChild(SelectRect);
>
>
> bInDrawRect = true;
> }
> else if(SelectRect != null)
> {
> var selbbox = SelectRect.getBBox();
> if((evt.clientX > selbbox.x) && (evt.clientX <
> (selbbox.x+selbbox.width)) &&
> (evt.clientY > selbbox.y) && (evt.clientY <
> (selbbox.y+selbbox.height)))
> {
> //in SelectRect
> bMoveObjects = true;
> OrigX = evt.clientX;
> OrigY = evt.clientY;
> }//if
> else
> {
> //ouside of SelectRect, so now we
> //remove all items and put them back and our rect
> for(var pos = 0; pos < GroupArray.length;pos++)
> {
> var obj = GroupArray[pos];
> ObjArray[ObjArray.length] = obj;
> GroupArray.splice(pos,1);
> pos--;
> MyGroupObjectsObj.removeChild(obj);
> svgRoot.insertBefore(obj, MyGroupObjectsObj);
>
> //testing
> obj.setAttribute("stroke","none");
> }//for
>
> svgRoot.removeChild(SelectRect);
> SelectRect = null;
> }//else
> }
> }
> function MouseMove(evt)
> {
> evt.stopPropagation();
>
> if(bInDrawRect)
> {
> var dx = Math.abs(evt.clientX - OrigX);
> var dy = Math.abs(evt.clientY - OrigY);
>
> SelectRect.setAttribute("width", dx);
> SelectRect.setAttribute("height", dy);
> }
> else if(bMoveObjects)
> {
> var dx = evt.clientX - OrigX;
> var dy = evt.clientY - OrigY;
>
> OrigX = evt.clientX;
> OrigY = evt.clientY;
>
> for(var pos = 0; pos < GroupArray.length;pos++)
> {
> var obj = GroupArray[pos];
> switch(obj.tagName)
> {
> case "rect":
> var xpos = Number(obj.getAttribute("x"));
> var ypos = Number(obj.getAttribute("y"));
> xpos += dx;
> ypos += dy;
>
> obj.setAttribute("x", xpos);
> obj.setAttribute("y", ypos);
> break;
> case "circle":
> var xpos = Number(obj.getAttribute("cx"));
> var ypos = Number(obj.getAttribute("cy"));
> xpos += dx;
> ypos += dy;
>
> obj.setAttribute("cx", xpos);
> obj.setAttribute("cy", ypos);
> break;
> }//switch
> }
>
> var xpos = Number(SelectRect.getAttribute("x"));
> var ypos = Number(SelectRect.getAttribute("y"));
> xpos += dx;
> ypos += dy;
>
> SelectRect.setAttribute("x", xpos);
> SelectRect.setAttribute("y", ypos);
> }
> }
> function MouseUp(evt)
> {
> evt.stopPropagation();
>
> if(bInDrawRect)
> {
> bInDrawRect = false;
>
> var selbbox = SelectRect.getBBox();
> for(var pos = 0; pos < ObjArray.length;pos++)
> {
> var objbbox = ObjArray[pos].getBBox();
> if((objbbox.x > selbbox.x) && ((objbbox.x+objbbox.width) <
> (selbbox.x+selbbox.width)) &&
> (objbbox.y > selbbox.y) && ((objbbox.y+objbbox.height) <
> (selbbox.y+selbbox.height)))
> {
> var obj = ObjArray[pos];
> GroupArray[GroupArray.length] = obj;
> ObjArray.splice(pos,1);
> pos--;
> svgRoot.removeChild(obj);
> MyGroupObjectsObj.appendChild(obj);
>
> //testing
> obj.setAttribute("stroke","black");
> }
> }//for
> var gbbox = MyGroupObjectsObj.getBBox();
> SelectRect.setAttribute("x", gbbox.x);
> SelectRect.setAttribute("y", gbbox.y);
> SelectRect.setAttribute("width", gbbox.width);
> SelectRect.setAttribute("height", gbbox.height);
>
>
> }
> bMoveObjects = false;
> }
>
> ]]>
> </script>
> <rect id="Main_BKG" x="0" y="0" width="100%" height="100%" stroke="none"
> fill="rgb(255,255,255)" />
> <g id="SelectGroup" ></g>
> </svg>
>
>  
>


[Non-text portions of this message have been removed]



------------------------------------

-----
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-or-
visit http://groups.yahoo.com/group/svg-developers and click "edit my 
membership"
----Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/svg-developers/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/svg-developers/join
    (Yahoo! ID required)

<*> To change settings via email:
    svg-developers-dig...@yahoogroups.com 
    svg-developers-fullfeatu...@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    svg-developers-unsubscr...@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Reply via email to