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.5 2007/11/02 17:50:36 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 import javax.swing.JPanel;
048
049 /**
050 * A panel that provides the user interface for a single step in a WizardDialog.
051 *
052 * @author David Gilbert
053 */
054 public abstract class WizardPanel extends JPanel {
055
056 /** The owner. */
057 private WizardDialog owner;
058
059 /**
060 * Creates a new panel.
061 *
062 * @param layout the layout manager.
063 */
064 protected WizardPanel(final LayoutManager layout) {
065 super(layout);
066 }
067
068 /**
069 * Returns a reference to the dialog that owns the panel.
070 *
071 * @return the owner.
072 */
073 public WizardDialog getOwner() {
074 return this.owner;
075 }
076
077 /**
078 * Sets the reference to the dialog that owns the panel (this is called automatically by
079 * the dialog when the panel is added to the dialog).
080 *
081 * @param owner the owner.
082 */
083 public void setOwner(final WizardDialog owner) {
084 this.owner = owner;
085 }
086
087 /**
088 * Returns the result.
089 *
090 * @return the result.
091 */
092 public Object getResult() {
093 return null;
094 }
095
096 /**
097 * This method is called when the dialog redisplays this panel as a result of the user clicking
098 * the "Previous" button. Inside this method, subclasses should make a note of their current
099 * state, so that they can decide what to do when the user hits "Next".
100 */
101 public abstract void returnFromLaterStep();
102
103 /**
104 * Returns true if it is OK to redisplay the last version of the next panel, or false if a new
105 * version is required.
106 *
107 * @return boolean.
108 */
109 public abstract boolean canRedisplayNextPanel();
110
111 /**
112 * Returns true if there is a next panel.
113 *
114 * @return boolean.
115 */
116 public abstract boolean hasNextPanel();
117
118 /**
119 * Returns true if it is possible to finish from this panel.
120 *
121 * @return boolean.
122 */
123 public abstract boolean canFinish();
124
125 /**
126 * Returns the next panel in the sequence, given the current user input. Returns null if this
127 * panel is the last one in the sequence.
128 *
129 * @return the next panel in the sequence.
130 */
131 public abstract WizardPanel getNextPanel();
132
133 }