Hi all,
my problem is that i modifiy the svg document after i loaded it and
although i am using the updateManager. i looks like all things works but
however the changes aren't displayed at all.
Enclosed the java programm.
link to the svg file: http://michael.nanihil.com/02.svg
best regards, michael
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.apache.batik.bridge.UpdateManager;
import org.apache.batik.bridge.UpdateManagerEvent;
import org.apache.batik.bridge.UpdateManagerListener;
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.util.XMLResourceDescriptor;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class Apps {
public static void main(String[] args) {
JFrame apps = new JFrame();
Apps myapps = new Apps(apps);
apps.getContentPane().add(myapps.createComponents());
apps.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
apps.setSize(1000, 700);
apps.setVisible(true);
}
JSVGCanvas canvas;
Document doc;
Element svg;
JButton button = new JButton("Load...");
JLabel label = new JLabel();
JPanel panel;
UpdateManager um;
public JComponent createComponents() {
panel = new JPanel(new BorderLayout());
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
p.add(button);
p.add(label);
panel.add("North", p);
panel.add("Center", canvas);
canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
label.setText("Rendering Started...");
}
public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
um=canvas.getUpdateManager();
}
});
canvas.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("fsafda");
updateBar("a1", 0);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
canvas.addUpdateManagerListener(new UpdateManagerListener() {
@Override
public void managerResumed(UpdateManagerEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void managerStarted(UpdateManagerEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void managerStopped(UpdateManagerEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void managerSuspended(UpdateManagerEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void updateCompleted(UpdateManagerEvent arg0) {
System.out.println("updateComp");
}
@Override
public void updateFailed(UpdateManagerEvent arg0) {
System.out.println("updateFail");
}
@Override
public void updateStarted(UpdateManagerEvent arg0) {
System.out.println("updateStart");
}
});
return panel;
}
JFrame frame;
public Apps(JFrame jf) {
frame = jf;
// Create a new JSVGCanvas.
canvas = new JSVGCanvas();
canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
try {
// Parse the barChart.svg file into a Document.
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
doc = f.createDocument(new File("/home/mh/UNI/UUI/ue2/02.svg")
.toURI().toString());
svg = doc.getDocumentElement();
canvas.setDocument(doc);
} catch (Exception ex) {
System.out.println("failed");
ex.printStackTrace();
}
}
public void updateBar(final String name, final float value) {
um.getUpdateRunnableQueue().invokeLater(
new Runnable() {
public void run() {
Element bar = doc.getElementById(name);
if (bar == null) {
return;
}
//Node par = bar.getParentNode();
System.out.println(bar.getFirstChild().getNodeValue());
bar.getFirstChild().setNodeValue("F");
System.out.println(bar.getFirstChild().getNodeValue());
//par.replaceChild(par.getFirstChild(), bar);
canvas.repaint();
//panel.repaint();
//frame.repaint();
}
});
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]