SimpleApp3.java Source code

Java tutorial

Introduction

Here is the source code for SimpleApp3.java

Source

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;

import com.sun.org.apache.xerces.internal.parsers.SAXParser;

public class SimpleApp3 implements ActionListener {

    public static void main(String args[]) {
        JFrame frame = new JFrame("SimpleApp Demo");
        frame.setSize(400, 400);

        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        new SimpleApp3(frame);
    }

    public SimpleApp3(JFrame frame) {
        frame.getContentPane().setLayout(new BorderLayout());
        XMLComponent xmlComponent = new XMLComponent();
        frame.getContentPane().add("Center", xmlComponent.build("ui.xml"));
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent ev) {
        System.out.println("You clicked " + ev.getActionCommand());
    }
}

class XMLComponent extends DefaultHandler {

    private boolean containerActive = false;

    private JPanel primaryContainer = new JPanel();

    private SAXParser parser = new SAXParser();

    public XMLComponent() {
        super();
    }

    public JComponent build(String xmlDocument) {
        parser.setContentHandler(this);
        try {
            parser.parse(new InputSource(new FileInputStream(xmlDocument)));
        } catch (Exception ex) {
            System.out.println(ex);
        }

        return primaryContainer;
    }

    public void startElement(String namespaceURI, String name, String qName, Attributes atts) {
        if (name.equals("button"))
            primaryContainer.add(new JButton(atts.getValue("label")));

    }
}

// ui.xml
/*
 * <?xml version="1.0"?> <ui> <button label="XML"/> <button label="is"/> <button
 * label="great"/> </ui>
 * 
 * 
 */