001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 2004-2005 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.jmx;
042:
043: import org.openide.WizardDescriptor;
044: import org.openide.util.HelpCtx;
045: import java.awt.Component;
046: import java.util.Set;
047: import java.util.Iterator;
048: import java.util.HashSet;
049: import javax.swing.event.ChangeListener;
050: import javax.swing.event.ChangeEvent;
051: import org.openide.WizardDescriptor.FinishablePanel;
052:
053: /**
054: *
055: * Class used to become non finishable wizard panel in finishable wizard panel
056: *
057: */
058: public class FinishableDelegatedWizardPanel implements
059: WizardDescriptor.Panel, FinishablePanel {
060:
061: /**
062: * The wrapped panel
063: */
064: protected final WizardDescriptor.Panel delegate;
065: /**
066: * The panel which allows Finish button enabled.
067: */
068: protected final WizardDescriptor.Panel finishDelegate;
069:
070: /**
071: * Construct a new instance.
072: * @param delegate <CODE>WizardDescriptor.Panel</CODE> Panel which wants to be finishable.
073: * @param finishDelegate <CODE>WizardDescriptor.Panel</CODE> Panel which realize the finish actions.
074: */
075: public FinishableDelegatedWizardPanel(
076: WizardDescriptor.Panel delegate,
077: GenericWizardPanel finishDelegate) {
078: super ();
079: this .delegate = delegate;
080: this .finishDelegate = finishDelegate;
081: }
082:
083: /**
084: * Returns if this panel is finishable.
085: * @return <CODE>boolean</CODE> true only if this panel is finishable.
086: */
087: public boolean isFinishPanel() {
088: return ((FinishablePanel) finishDelegate).isFinishPanel();
089: }
090:
091: /**
092: * Returns the panel component.
093: * @return <CODE>Component</CODE> the panel component.
094: */
095: public Component getComponent() {
096: return delegate.getComponent();
097: };
098:
099: /**
100: * Returns the corresponding help context.
101: * @return <CODE>HelpCtx</CODE> the corresponding help context.
102: */
103: public HelpCtx getHelp() {
104: return delegate.getHelp();
105: }
106:
107: /**
108: * Returns if the user is able to go to next step and to finish the wizard.
109: * @return <CODE>boolean</CODE> true only if the user can go to next step
110: * and finish the wizard.
111: */
112: public boolean isValid() {
113: return delegate.isValid();
114: }
115:
116: /**
117: * This method is called when a step is loaded.
118: * @param settings <CODE>Object</CODE> an object containing the wizard informations.
119: */
120: public void readSettings(Object settings) {
121: delegate.readSettings(settings);
122: finishDelegate.storeSettings(settings);
123: finishDelegate.readSettings(settings);
124: }
125:
126: /**
127: * This method is used to force the delegate panel to load wizard informations.
128: * @param settings <CODE>Object</CODE> an object containing the wizard informations.
129: */
130: public void readAllSettings(Object settings) {
131: delegate.readSettings(settings);
132: }
133:
134: /**
135: * This method is called when the user quit a step.
136: * @param settings <CODE>Object</CODE> an object containing the wizard informations.
137: */
138: public void storeSettings(Object settings) {
139: finishDelegate.storeSettings(settings);
140: }
141:
142: /**
143: * This method is used to force the delegate panel to store user informations
144: * into the wizard informations.
145: * @param settings <CODE>Object</CODE> an object containing the wizard informations.
146: */
147: public void storeAllSettings(Object settings) {
148: delegate.storeSettings(settings);
149: }
150:
151: /** Add a listener to changes of the panel's validity.
152: * @param l <CODE>ChangeListener</CODE> the listener to add
153: */
154: public final void addChangeListener(ChangeListener l) {
155: delegate.addChangeListener(l);
156: }
157:
158: /** Remove a listener to changes of the panel's validity.
159: * @param l <CODE>ChangeListener</CODE> the listener to remove
160: */
161: public final void removeChangeListener(ChangeListener l) {
162: delegate.removeChangeListener(l);
163: }
164: }
|