001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.wizard;
017
018 import java.awt.Image;
019
020 import javax.swing.JComponent;
021
022 import org.springframework.core.style.ToStringCreator;
023 import org.springframework.richclient.dialog.AbstractDialogPage;
024
025 public abstract class AbstractWizardPage extends AbstractDialogPage implements WizardPage {
026 private Wizard wizard;
027
028 private WizardPage previousPage;
029
030 /**
031 * Creates a wizard page. This titles of this dialog page will be configured
032 * using the default ObjectConfigurer.
033 *
034 * @param pageId
035 * the id of this wizard page. This will be used to configure the
036 * page.
037 */
038 protected AbstractWizardPage(String pageId) {
039 this(pageId, false);
040 }
041
042 /**
043 * Creates a new wizard page.
044 *
045 * @param pageId
046 * the id of this wizard page
047 * @param autoConfigure
048 * whether or not to use an ObjectConfigurer to configure the
049 * titles of this dialog page using the given pageId
050 */
051 protected AbstractWizardPage(String pageId, boolean autoConfigure) {
052 super(pageId, autoConfigure);
053 }
054
055 /**
056 * Creates a new wizard page with the given title.
057 *
058 * @param pageId
059 * the id of this wizard page
060 * @param autoConfigure
061 * whether or not to use an ObjectConfigurer to configure the
062 * titles of this dialog page using the given pageId
063 * @param title
064 * the title of this wizard page, or <code>null</code> if none
065 */
066 protected AbstractWizardPage(String pageId, boolean autoConfigure, String title) {
067 super(pageId, autoConfigure, title);
068 }
069
070 /**
071 * Creates a new wizard page with the given title and image.
072 *
073 * @param pageId
074 * the id of this wizard page
075 * @param autoConfigure
076 * whether or not to use an ObjectConfigurer to configure the
077 * titles of this wizard page using the given pageId
078 * @param title
079 * the title of this wizard page, or <code>null</code> if none
080 * @param image
081 * the image for this wizard page, or <code>null</code> if none
082 */
083 protected AbstractWizardPage(String pageId, boolean autoConfigure, String title, Image icon) {
084 super(pageId, autoConfigure, title, icon);
085 }
086
087 public String getKey() {
088 return getWizard().getId() + "." + getId();
089 }
090
091 public Image getImage() {
092 Image image = super.getImage();
093 if (image != null) {
094 return image;
095 }
096 return wizard.getDefaultPageImage();
097 }
098
099 public WizardPage getNextPage() {
100 if (wizard == null) {
101 return null;
102 }
103 return wizard.getNextPage(this);
104 }
105
106 public WizardPage getPreviousPage() {
107 if (previousPage != null) {
108 return previousPage;
109 }
110 if (wizard == null) {
111 return null;
112 }
113 return wizard.getPreviousPage(this);
114 }
115
116 public boolean canFlipToNextPage() {
117 return isPageComplete() && getNextPage() != null;
118 }
119
120 protected boolean isCurrentPage() {
121 return (getContainer() != null && this == getContainer().getCurrentPage());
122 }
123
124 protected WizardContainer getContainer() {
125 if (wizard == null) {
126 return null;
127 }
128 return wizard.getContainer();
129 }
130
131 public Wizard getWizard() {
132 return wizard;
133 }
134
135 public void setPreviousPage(WizardPage page) {
136 previousPage = page;
137 }
138
139 public void setVisible(boolean visible) {
140 JComponent control = getControl();
141 if (control != null) {
142 super.setVisible(visible);
143 control.requestFocusInWindow();
144 }
145 }
146
147 public void setEnabled(boolean enabled) {
148 setPageComplete(enabled);
149 }
150
151 public void setWizard(Wizard newWizard) {
152 Wizard oldValue = this.wizard;
153 this.wizard = newWizard;
154 firePropertyChange("wizard", oldValue, newWizard);
155 }
156
157 public void onAboutToShow() {
158 }
159
160 public String toString() {
161 return new ToStringCreator(this).append("id", getId()).toString();
162 }
163 }