import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

import org.apache.batik.swing.*;
import org.apache.batik.swing.gvt.*;
import org.apache.batik.swing.svg.*;

public class GoodSVGApplication
{
    JFrame frame;
    JSVGComponent svgCanvas = new JSVGComponent();
    JLabel label = new JLabel();

    public static void main(String[] args)
    {
        JFrame frame = new JFrame("Batik");
        
        GoodSVGApplication app = new GoodSVGApplication(frame);
        frame.getContentPane().add(app.createComponents());

        frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });

        frame.setSize(400, 400);
        frame.setVisible(true);
    }
    

    public GoodSVGApplication(JFrame f)
    {
        frame = f;
    }

    public JComponent createComponents()
    {
        final JPanel panel = new JPanel();
        panel.add(svgCanvas);


        svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter()
        {
            public void gvtBuildStarted(GVTTreeBuilderEvent e)
            {
                System.out.println("Build Started...");
            }
            public void gvtBuildCompleted(GVTTreeBuilderEvent e)
            {
                System.out.println("Build Done.");
                svgCanvas.setVisible(true);
                svgCanvas.setLocation(10, 10);
                svgCanvas.setSize(150, 150);
            }
        });

        svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter()
        {
            public void gvtRenderingPrepare(GVTTreeRendererEvent e)
            {
            }
            public void gvtRenderingCompleted(GVTTreeRendererEvent e)
            {
                System.out.println("gvtRenderingCompleted");
            }
        });
        
        File f = new File("d:\\etoile.svg");
        try
        {
            svgCanvas.loadSVGDocument(f.toURI().toString());
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }

        return panel;
    }
}
