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 BadSVGApplication
{
    static JSVGComponent svgCanvas = null;

    public static class GVTListener implements GVTTreeBuilderListener
    {
            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);
            }
            public void gvtBuildCancelled(GVTTreeBuilderEvent e)
            {
            }
            public void gvtBuildFailed(GVTTreeBuilderEvent e)
            {
            }
    }

    public static void main(String[] args)
    {
        JFrame frame = new JFrame("Batik");
        frame.setSize(400, 400);
        
        frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });

        frame.setVisible(true);

        JPanel back = createBackPanel();
        frame.getContentPane().add(back);
        back.setSize(frame.getSize());
        frame.repaint();
        
        JPanel panel = createPanel();
        back.add(panel);
        panel.setLocation(0, 0);
        panel.setSize(200, 200);
        frame.repaint();
        
        JSVGComponent svg = createSVG();
        panel.add(svg);

        File f = new File("d:\\etoile.svg");
        try
        {
            svg.loadSVGDocument(f.toURI().toString());
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
    

    private static JPanel createPanel()
    {
        JPanel panel = new JPanel(null);    
        panel.setBackground(Color.GREEN);
        return panel;
    }
   
    private static JPanel createBackPanel()
    {
        JPanel back = new JPanel(null);    
        back.setLocation(0, 0);
        back.setBackground(Color.PINK);
        return back;
    }
   
    public static JSVGComponent createSVG()
    {
        svgCanvas = new JSVGComponent();
        svgCanvas.addGVTTreeBuilderListener(new GVTListener());
        return svgCanvas;
    }
}
