Hi, i have inserted a rect in my svgCanvas where, before, i load a file svg.
when i want to move an element i can move elements contained in loaded svg
file, instead the rect that i inserted no...why?

For my application i use a Japplet:

public class tesi extends JApplet {

        final JPanel panel = new JPanel(new BorderLayout());
        final String svgNS = "http://www.w3.org/2000/svg";;  //  
@jve:decl-index=0:
        public JPanel jContentPane = null;
        public JButton jButton = null;
        JSVGCanvas svgCanvas = new JSVGCanvas();

       private JToggleButton muovi = null;
        private JButton Circle = null;


       String SCALE = "scale";
       String DRAG = "drag";
       String action;
       EventTarget actionNode, actionTgt;
       SVGPoint startPt;
       boolean dragged = false;
  
        public tesi() {
                super();
        }

       public void init() {
                this.setSize(600, 400);
                this.setContentPane(getJContentPane());
        }


       public JPanel getJContentPane() {
                if (jContentPane == null) {
                        label.setBounds(new Rectangle(78, 4, 137, 31));
                        jContentPane = new JPanel();
                        jContentPane.setLayout(null);
                        jContentPane.add(getJButton(), null);
                        jContentPane.add(getJSVGCanvas(), null);
                        jContentPane.add(label, null);
                        jContentPane.add(getZoomIN(), null);
                        jContentPane.add(getZoomOUT(), null);
                        jContentPane.add(getProva(), null);
                        jContentPane.add(getMuovi(), null);
                        jContentPane.add(getCircle(), null);
                }       
              return jContentPane;
        }

       //in this method i load the svg file
        public JButton getJButton() {
                
                if (jButton == null) {
                        jButton = new JButton();
                        jButton.setBounds(new Rectangle(10, 5, 59, 28));
                        jButton.setText("load");
                        jButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent ae) {
                        JFileChooser fc = new JFileChooser(".");
                        int choice = fc.showOpenDialog(panel);
                        if (choice == JFileChooser.APPROVE_OPTION) {
                            File f = fc.getSelectedFile();
                            try{
                                svgCanvas.setURI(f.toURL().toString());  
//carica
l'immagine dal file all'interno del canvas   
                            }catch(IOException error){
                                error.printStackTrace();
                            }

                        }
                        }
                    });
                }
                return jButton;
        }


       //this method initializes JSVGCanvas

       public JSVGCanvas getJSVGCanvas() {
                        svgCanvas.setBounds(new Rectangle(114, 54, 476, 333));
                        svgCanvas.getInteractors().add(rotateInteractor);
                        svgCanvas.getInteractors().add(zoomInteractor);
                        
svgCanvas.setDocumentState(JSVGComponent.ALWAYS_DYNAMIC);
                return svgCanvas;
        }


       //this method initializes circle
       private JButton getCircle() {
        if (Circle == null) {
                Circle = new JButton();
                Circle.setBounds(new Rectangle(5, 173, 92, 32));
                Circle.setText("circle");
                Circle.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent 
e) {
                                
svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeLater(new
Runnable() {
                                        public void run() {
                                                        SVGDocument doc = 
svgCanvas.getSVGDocument();
                                        //svgCanvas.setDocument(doc);
                                                        SVGElement svgRoot = 
doc.getRootElement();
                                                        Element elem = 
doc.createElementNS(svgNS, "circle");
                                                        
elem.setAttributeNS(null, "id", "bgcircle");
                                                        
elem.setAttributeNS(null, "cx","50");
                                                        
elem.setAttributeNS(null, "cy","100");
                                                        
elem.setAttributeNS(null, "r", "10");
                                                        
elem.setAttributeNS(null, "style", "fill:green;"); 
                                                        
svgRoot.appendChild(elem);
                                        }
                });
                        }
                });
        }
        return Circle;
}
           
           
        
   private SVGPoint localPt(Element elem, int x, int y) {
        SVGDocument svgDocument = svgCanvas.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 = svgCanvas.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
+ ")");
                }
            }
        }
    }

}


        
-- 
View this message in context: 
http://www.nabble.com/appendchild%2C-error--tf2594737.html#a7237004
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