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]