001 /* ========================================================================
002 * JCommon : a free general purpose class library for the Java(tm) platform
003 * ========================================================================
004 *
005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jcommon/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * ----------------
028 * WizardPanel.java
029 * ----------------
030 * (C) Copyright 2000-2004, by Object Refinery Limited.
031 *
032 * Original Author: David Gilbert (for Object Refinery Limited);
033 * Contributor(s): -;
034 *
035 * $Id: WizardPanel.java,v 1.4 2005/11/16 15:58:41 taqua Exp $
036 *
037 * Changes (from 26-Oct-2001)
038 * --------------------------
039 * 26-Oct-2001 : Changed package to com.jrefinery.ui.*;
040 * 14-Oct-2002 : Fixed errors reported by Checkstyle (DG);
041 *
042 */
043
044 package org.jfree.ui;
045
046 import java.awt.LayoutManager;
047
048 import javax.swing.JPanel;
049
050 /**
051 * A panel that provides the user interface for a single step in a WizardDialog.
052 *
053 * @author David Gilbert
054 */
055 public abstract class WizardPanel extends JPanel {
056
057 /** The owner. */
058 private WizardDialog owner;
059
060 /**
061 * Creates a new panel.
062 *
063 * @param layout the layout manager.
064 */
065 protected WizardPanel(final LayoutManager layout) {
066 super(layout);
067 }
068
069 /**
070 * Returns a reference to the dialog that owns the panel.
071 *
072 * @return the owner.
073 */
074 public WizardDialog getOwner() {
075 return this.owner;
076 }
077
078 /**
079 * Sets the reference to the dialog that owns the panel (this is called automatically by
080 * the dialog when the panel is added to the dialog).
081 *
082 * @param owner the owner.
083 */
084 public void setOwner(final WizardDialog owner) {
085 this.owner = owner;
086 }
087
088 /**
089 * Returns the result.
090 *
091 * @return the result.
092 */
093 public Object getResult() {
094 return null;
095 }
096
097 /**
098 * This method is called when the dialog redisplays this panel as a result of the user clicking
099 * the "Previous" button. Inside this method, subclasses should make a note of their current
100 * state, so that they can decide what to do when the user hits "Next".
101 */
102 public abstract void returnFromLaterStep();
103
104 /**
105 * Returns true if it is OK to redisplay the last version of the next panel, or false if a new
106 * version is required.
107 *
108 * @return boolean.
109 */
110 public abstract boolean canRedisplayNextPanel();
111
112 /**
113 * Returns true if there is a next panel.
114 *
115 * @return boolean.
116 */
117 public abstract boolean hasNextPanel();
118
119 /**
120 * Returns true if it is possible to finish from this panel.
121 *
122 * @return boolean.
123 */
124 public abstract boolean canFinish();
125
126 /**
127 * Returns the next panel in the sequence, given the current user input. Returns null if this
128 * panel is the last one in the sequence.
129 *
130 * @return the next panel in the sequence.
131 */
132 public abstract WizardPanel getNextPanel();
133
134 }