Thank you for answer. I use this code, wrote by another user to move my rect,
but there is a problem: rect create in my JSVGCanvas don't move but the
elements in svg file loaded yes...why? in my code i do
svgRoot.appendChild(elem)....:

public JButton getProva() {
                if (prova == null) {
                        prova = new JButton();
                        prova.setBounds(new Rectangle(6, 139, 92, 31));
                        prova.setText("rect");
                        prova.addActionListener(new 
java.awt.event.ActionListener() {
                                public void 
actionPerformed(java.awt.event.ActionEvent e) {     
                   
JSVGCanvas.getUpdateManager().getUpdateRunnableQueue().invokeLater(new
Runnable() {
                                                public void run() {
                                                                SVGDocument doc 
= JSVGCanvas.getSVGDocument();
                                                JSVGCanvas.setDocument(doc);
                                                                SVGElement 
svgRoot = doc.getRootElement();
                                                                Element elem = 
doc.createElementNS(svgNS, "rect");
                                                                
elem.setAttributeNS(null, "id", "bgrectangle");
                                                                
elem.setAttributeNS(null, "x","200");
                                                                
elem.setAttributeNS(null, "y","100");
                                                                
elem.setAttributeNS(null, "width", "50");
                                                                
elem.setAttributeNS(null, "height", "50");
                                                                
elem.setAttributeNS(null, "pointer-events", "fill");
                                                                
elem.setAttributeNS(null, "style", "fill:red;stroke:none"); 
                                                                
svgRoot.appendChild(elem);
                                                }
                    });
                                        JSVGCanvas.repaint();
                                }

                        });
                }
                return prova;
        }
        
        private SVGPoint localPt(Element elem, int x, int y) {
        SVGDocument svgDocument = JSVGCanvas.getSVGDocument();
        SVGMatrix mat = ((SVGLocatable)elem).getScreenCTM();
        SVGMatrix imat = mat.inverse();
        SVGPoint cPt = svgDocument.getRootElement().createSVGPoint();
        cPt.setX(x);
        cPt.setY(y);
        cPt = cPt.matrixTransform(imat);
        return cPt;
    }


    private class OnDownAction implements EventListener {
        public void handleEvent(Event evt) {
            DOMMouseEvent elEvt = (DOMMouseEvent)evt;
            actionNode = elEvt.getTarget();
            action = DRAG;
            Node n = ((Element)elEvt.getTarget()).getParentNode();
            startPt = localPt((Element)n, elEvt.getClientX(),
elEvt.getClientY
());
            dragged = false;
        }
    }

    private class OnUpAction implements EventListener {
        public void handleEvent(Event evt) {
            if (actionNode != null) {
                actionNode = null;
            }
        }
    }

    private class OnMoveAction implements EventListener {
        public void handleEvent(Event evt) {
            SVGDocument svgDocument = JSVGCanvas.getSVGDocument();
            if (actionNode == null)return;
            dragged = true;
            DOMMouseEvent elEvt = (DOMMouseEvent)evt;
            if (action == DRAG) {
                Element ee = (Element)((Element)actionNode).getParentNode();
                if (ee.getParentNode() != null && ee.getParentNode()
instanceof Element) {
                    SVGPoint pt = localPt((Element)ee.getParentNode(),
elEvt.getClientX(), elEvt.getClientY());
                    float dx = pt.getX() - startPt.getX();
                    float dy = pt.getY() - startPt.getY();
                    ee.setAttribute("transform", "translate(" + dx + ", " +
dy
+ ")");
                }
            }
        }
    }

        /**
         * This method initializes muovi        
         *      
         * @return javax.swing.JToggleButton    
         */
        private JToggleButton getMuovi() {
                if (muovi == null) {
                        muovi = new JToggleButton();
                        muovi.setBounds(new Rectangle(6, 178, 94, 30));
                        muovi.setText("muovi");
                        muovi.addItemListener(new MuoviItemListener());
                }
                return muovi;
        }

public class MuoviItemListener implements ItemListener { 
        public void itemStateChanged(ItemEvent e) {
                int status = e.getStateChange(); 
                if(status == ItemEvent.SELECTED){
                        SVGElement svgRoot = 
JSVGCanvas.getSVGDocument().getRootElement();
                        EventTarget t = (EventTarget)svgRoot;
                        t.addEventListener("mousemove", new OnMoveAction(), 
false);
                        t.addEventListener("mousedown", new OnDownAction(), 
false);
                        t.addEventListener("mouseup", new OnUpAction(), false);
                }
        }
} 


-- 
View this message in context: 
http://www.nabble.com/insert-a-rect-into-JSVGCanvas-tf2578737.html#a7234967
Sent from the Batik - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to