Try this code...it does compile...

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToggleButton;

import org.apache.batik.dom.events.DOMMouseEvent;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
import org.apache.batik.swing.svg.GVTTreeBuilderAdapter;
import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.svg.SVGElement;
import org.w3c.dom.svg.SVGLocatable;
import org.w3c.dom.svg.SVGMatrix;
import org.w3c.dom.svg.SVGPoint;


public class Test {

        public static JSVGCanvas svgCanvas;
        public static JFrame f, frame;
        public static Test app;
        public static String parser, uri;
        public static SAXSVGDocumentFactory factory;
        public static SVGDocument doc;
        final String svgNS = "http://www.w3.org/2000/svg";;
        JButton button = new JButton("Load...");
        JLabel label = new JLabel();
        JButton prova;
        JToggleButton muovi;
        JButton save;
        
        String SCALE = "scale";
    String DRAG = "drag";
    String action;
    EventTarget actionNode, actionTgt;
    SVGPoint startPt;
    boolean dragged = false;
    boolean move;
        
    
        public static void main(String[] args) {
        f = new JFrame("Batik");
        app = new Test(f);
        f.getContentPane().add(app.createComponents());
            
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        
        f.setSize(400, 400);
        f.setVisible(true);
    }
        
         public Test (JFrame f) {
                        svgCanvas = new JSVGCanvas();
                frame = f;
         }
         
         public JComponent createComponents() {
                 final JPanel panel = new JPanel(new BorderLayout());

                JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
                p.setSize(new Dimension(184, 91));
                p.add(button);
                p.add(label);

                p.add(getMuovi());
                p.add(getProva());
                p.add(getSave());
                panel.add("North", p);
                panel.add("Center", svgCanvas);
                
                //Set the button action.
                button.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.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
                                parser =
XMLResourceDescriptor.getXMLParserClassName();
                                factory = new SAXSVGDocumentFactory(parser);
                                svgCanvas.setURI(f.toURL().toString());
                                uri = svgCanvas.getURI();
                                doc = factory.createSVGDocument(uri);
                                svgCanvas.setSVGDocument(doc);
                            }catch(IOException ex){
                                 ex.printStackTrace();
                            }
                        }
                    }
                });
         
     // Set the JSVGCanvas listeners.
     svgCanvas.addSVGDocumentLoaderListener(new SVGDocumentLoaderAdapter() {
         public void documentLoadingStarted(SVGDocumentLoaderEvent e) {
             label.setText("Document Loading...");
         }
         public void documentLoadingCompleted(SVGDocumentLoaderEvent e) {
             label.setText("Document Loaded.");
         }
     });

     svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {
         public void gvtBuildStarted(GVTTreeBuilderEvent e) {
             label.setText("Build Started...");
         }
         public void gvtBuildCompleted(GVTTreeBuilderEvent e) {
             label.setText("Build Done.");
             frame.pack();
         }
     });

     svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
         public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
             label.setText("Rendering Started...");
         }
         public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
             label.setText("");
         }
     });

     return panel;
        }

         public JButton getProva() {
                prova = new JButton();
                prova.setText("rect");
                prova.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent 
e) {     
               
svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeLater(new
Runnable() {
                                        public void run() {
                                                        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", "150");
                                                        
elem.setAttributeNS(null, "height", "150");
                                                        
elem.setAttributeNS(null, "style", "fill:red;stroke:none"); 
                                                        
svgRoot.appendChild(elem);
                                        }
                });
                                //svgCanvas.repaint();
                        }

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


            private class OnDownAction implements EventListener {
                public void handleEvent(Event evt) {
                        if(move == true){
                    DOMMouseEvent elEvt = (DOMMouseEvent)evt;
                    actionNode = elEvt.getTarget();
                    action = DRAG;
                    Node n = ((Element)elEvt.getTarget());
                    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) {
                    doc = svgCanvas.getSVGDocument();
                    if (actionNode == null)return;
                    dragged = true;
                    DOMMouseEvent elEvt = (DOMMouseEvent)evt;
                    if (action == DRAG) {
                        Element ee = (Element)actionNode;           
                        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() {              
                                muovi = new JToggleButton();
                                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){
                                        move = true;
                                        SVGElement svgRoot = 
svgCanvas.getSVGDocument().getRootElement();
                                        EventTarget t = (EventTarget)svgRoot;
                                        t.addEventListener("mousemove", new 
OnMoveAction(), false);
                                        t.addEventListener("mousedown", new 
OnDownAction(), false);
                                        t.addEventListener("mouseup", new 
OnUpAction(), false);
                                }else move = false;
                        }
                }
        
                
                private JButton getSave(){
                        save = new JButton();
                        save.setText("Save");
                        save.addActionListener(new ActionListener() {
                                public void 
actionPerformed(java.awt.event.ActionEvent e) {     

                                        try {
                                                
org.apache.batik.dom.util.DOMUtilities.writeNode(doc.getFirstChild(),
                                                new 
FileWriter("c:\\prova.svg"));
                                        } catch (IOException e1) {

                                                e1.printStackTrace();
                                        }
                                }
                        });
                        return save;
                }
                
        
}
-- 
View this message in context: 
http://www.nabble.com/save-into-a-file-tf2612562.html#a7314035
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