Package net.sf.jpluck.ui

Source Code of net.sf.jpluck.ui.Wizard

package net.sf.jpluck.ui;

import net.sf.jpluck.swing.GUIUtil;

import com.jgoodies.forms.builder.ButtonBarBuilder;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.HashMap;
import java.util.Map;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public abstract class Wizard extends JDialog {

    protected JButton backButton = new JButton("< Back");
    protected JButton nextButton = new JButton();
    protected JButton cancelButton = new JButton("Cancel");

    protected Map pageMap = new HashMap();
    protected WizardPage currentPage;
    private boolean cancelled;

    protected CardLayout cardLayout = new CardLayout();
    protected JPanel pagePanel = new JPanel();
    protected JPanel buttonPanel = new JPanel();

    protected Wizard(JFrame owner) {
        super(owner);
        setModal(true);
        setResizable(false);
        pagePanel.setLayout(cardLayout);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(pagePanel, BorderLayout.CENTER);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        ButtonBarBuilder buttonBarBuilder = new ButtonBarBuilder(buttonPanel);
        buttonBarBuilder.addGlue();
        buttonBarBuilder.addGridded(backButton);
        //buttonBarBuilder.addRelatedGap();
        buttonBarBuilder.addGridded(nextButton);
        buttonBarBuilder.addUnrelatedGap();
        buttonBarBuilder.addGridded(cancelButton);
        buttonBarBuilder.setDefaultDialogBorder();

        backButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                gotoPreviousPage();
            }
        });
        nextButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                gotoNextPage();
            }
        });

        getRootPane().setDefaultButton(nextButton);
        Action cancelAction = new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                cancel();
            }
        };
        cancelButton.addActionListener(cancelAction);
        GUIUtil.configureEscapeKey(getRootPane(), cancelAction);

        addComponentListener(new ComponentAdapter() {
            public void componentShown(ComponentEvent e) {
                cancelled = false;
            }
        });
    }

    public void addPage(WizardPage page) {
        pagePanel.add(page, page.getName());
        pageMap.put(page.getName(), page);
        page.initComponents();
    }

    protected WizardPage page(String name) {
        return (WizardPage) pageMap.get(name);
    }

    protected void setButtonStates() {
        if (isLastPageShowing()) {
            nextButton.setText("Finish");
        } else {
            nextButton.setText("Next >");
        }
        backButton.setEnabled(!isFirstPageShowing());
    }

    protected final void gotoPreviousPage() {
        exitPage();
        cardLayout.previous(pagePanel);
        setButtonStates();
        enterPage();
    }

    protected final void gotoNextPage() {
        if (!validatePage()) {
            return;
        }
        if (isLastPageShowing()) {
            finish();
            hide();
        }
        exitPage();
        cardLayout.next(pagePanel);
        setButtonStates();
        enterPage();
    }

    protected final void gotoPage(String name) {
        exitPage();
        cardLayout.show(pagePanel, name);
        setButtonStates();
        enterPage();
    }

    protected void showError(Component component, String title, String message) {
        component.requestFocus();
        JOptionPane.showMessageDialog(component, message, title, JOptionPane.ERROR_MESSAGE);
    }

    protected void start() {
    }

    protected void enterPage() {
    }

    protected void exitPage() {
    }

    protected void cancel() {
        cancelled = true;
        hide();
    }

    protected void finish() {
    }

    protected boolean validatePage() {
        return true;
    }

    public boolean isCancelled() {
        return cancelled;
    }

    protected abstract boolean isFirstPageShowing();

    protected abstract boolean isLastPageShowing();

}
TOP

Related Classes of net.sf.jpluck.ui.Wizard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.