FileDocCategorySizeDatePackage
Demo.javaAPI DocExample3806Mon Jan 09 11:02:00 GMT 2006None

Demo.java

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

public class Demo extends JFrame {
    protected AnimatedPanel animated;
    protected InfiniteProgressPanel glassPane;
    protected CardLayout carder;
    protected JPanel cardPane;

    public Demo() {
        super("Infinite Progress Demo");

        build();

        pack();
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    protected void build() {
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(BorderLayout.CENTER, buildTabbedPane());
    }

    protected Container buildTabbedPane() {
        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.add("Animated", buildAnimatedPanel());
        tabbedPane.add("Infinite", buildInfinitePanel());
        return tabbedPane;
    }

    protected Container buildAnimatedPanel() {
        carder = new CardLayout();
        cardPane = new JPanel(carder);

        JPanel pane = new JPanel(new BorderLayout());
        JTable table = new JTable(new CountTableModel());
        JScrollPane scrollPane = new JScrollPane(table);
        pane.add(BorderLayout.CENTER, scrollPane);

        JPanel buttons = new JPanel();
        JButton button = new JButton("Start");
        buttons.add(button);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                carder.show(cardPane, "animation");
                animated.start();

                Thread performer = new Thread(new Runnable() {
	                public void run() {
	                    try {
	                       Thread.sleep(5000);
	                    } catch (InterruptedException ie) { }

	                    animated.stop();
	                    carder.show(cardPane, "form");
	                }
	            }, "Performer");
	            performer.start();
            }
        });
        pane.add(BorderLayout.SOUTH, buttons);

        animated = new AnimatedPanel("Waiting in vain...",
                                     UIHelper.readImageIcon("network.png"));
        animated.setFont(animated.getFont().deriveFont(Font.BOLD, 16));

        cardPane.add("form", pane);
        cardPane.add("animation", animated);
        return cardPane;
    }

    protected Container buildInfinitePanel() {
        JPanel pane = new JPanel(new BorderLayout());

        glassPane = new InfiniteProgressPanel();
        setGlassPane(glassPane);

        JTable table = new JTable(new CountTableModel());
        JScrollPane scrollPane = new JScrollPane(table);
        pane.add(BorderLayout.CENTER, scrollPane);

        JPanel buttons = new JPanel();
        JButton button = new JButton("Start");
        buttons.add(button);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                glassPane.start();
	            Thread performer = new Thread(new Runnable() {
	                public void run() {
	                    try {
	                       Thread.sleep(5000);
	                    } catch (InterruptedException ie) { }
	                    glassPane.stop();
	                }
	            }, "Performer");
	            performer.start();
            }
        });
        pane.add(BorderLayout.SOUTH, buttons);

        return pane;
    }

    private class CountTableModel extends AbstractTableModel {
        public int getColumnCount() { return 10; }
        public int getRowCount() { return 10; }
        public Object getValueAt(int row, int col) { return new Integer((row + 1) * (col + 1)); }
    }

    public static void main(String[] args) {
        Demo d = new Demo();
        d.setVisible(true);
    }
}