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 1997-2006 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:
042: package org.netbeans.modules.form.palette;
043:
044: import javax.swing.*;
045: import javax.swing.border.*;
046: import javax.swing.event.*;
047: import java.awt.Component;
048: import java.awt.event.*;
049: import java.beans.*;
050: import java.util.*;
051:
052: import org.openide.WizardDescriptor;
053: import org.openide.filesystems.*;
054: import org.netbeans.api.project.libraries.*;
055: import org.netbeans.modules.form.project.ClassSource;
056: import org.openide.util.ChangeSupport;
057:
058: /**
059: * The first panel in the wizard for adding new components to the palette from
060: * a library. In this panel the user chooses a library from available libraries
061: * installed in the IDE.
062: *
063: * @author Tomas Pavek, Jesse Glick
064: */
065: class ChooseLibraryWizardPanel implements
066: WizardDescriptor.Panel<AddToPaletteWizard> {
067:
068: private LibraryChooser.Panel librarySelector;
069: private Component librarySelectorComponent;
070:
071: // private AddToPaletteWizard wizard;
072:
073: private final ChangeSupport cs = new ChangeSupport(this );
074:
075: // ----------
076: // WizardDescriptor.Panel implementation
077:
078: public java.awt.Component getComponent() {
079: if (librarySelectorComponent == null) {
080: librarySelector = LibraryChooser.createPanel(null, null);
081: librarySelectorComponent = librarySelector
082: .getVisualComponent();
083:
084: // wizard API: set the caption and index of this panel
085: librarySelectorComponent.setName(PaletteUtils
086: .getBundleString("CTL_SelectLibrary_Caption")); // NOI18N
087: ((JComponent) librarySelectorComponent).putClientProperty(
088: "WizardPanel_contentSelectedIndex", // NOI18N
089: new Integer(0));
090:
091: librarySelector
092: .addPropertyChangeListener(new PropertyChangeListener() {
093: public void propertyChange(
094: PropertyChangeEvent evt) {
095: cs.fireChange();
096: }
097: });
098: }
099:
100: return librarySelectorComponent;
101: }
102:
103: public org.openide.util.HelpCtx getHelp() {
104: // PENDING
105: return new org.openide.util.HelpCtx("beans.adding"); // NOI18N
106: }
107:
108: public boolean isValid() {
109: return librarySelector != null
110: && !librarySelector.getSelectedLibraries().isEmpty();
111: }
112:
113: public void readSettings(AddToPaletteWizard settings) {
114: // wizard = settings;
115: }
116:
117: public void storeSettings(AddToPaletteWizard settings) {
118: if (librarySelector != null) { // create the UI component for the wizard step
119: List<ClassSource.LibraryEntry> entries = new ArrayList<ClassSource.LibraryEntry>();
120: for (Library lib : librarySelector.getSelectedLibraries()) {
121: entries.add(new ClassSource.LibraryEntry(lib));
122: }
123: settings.setJARFiles(entries);
124: }
125: }
126:
127: public void addChangeListener(ChangeListener listener) {
128: cs.addChangeListener(listener);
129: }
130:
131: public void removeChangeListener(ChangeListener listener) {
132: cs.removeChangeListener(listener);
133: }
134:
135: }
|