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.apisupport.project.ui.wizard.librarydescriptor;
043:
044: import java.io.IOException;
045: import java.util.Set;
046: import org.netbeans.api.project.libraries.Library;
047: import org.netbeans.modules.apisupport.project.CreatedModifiedFiles;
048: import org.netbeans.modules.apisupport.project.layers.LayerUtils;
049: import org.netbeans.modules.apisupport.project.ui.wizard.BasicWizardIterator;
050: import org.openide.WizardDescriptor;
051: import org.openide.filesystems.FileSystem;
052:
053: /**
054: * Wizard <em>J2SE Library Descriptor</em> for registering
055: * libraries for end users.
056: *
057: * @author Radek Matous
058: */
059: final class NewLibraryDescriptor extends BasicWizardIterator {
060:
061: NewLibraryDescriptor.DataModel data;
062:
063: public static NewLibraryDescriptor createIterator() {
064: return new NewLibraryDescriptor();
065: }
066:
067: public Set instantiate() throws IOException {
068: CreatedModifiedFiles cmf = data.getCreatedModifiedFiles();
069: cmf.run();
070: return getCreatedFiles(cmf, data.getProject());
071: }
072:
073: protected BasicWizardIterator.Panel[] createPanels(
074: WizardDescriptor wiz) {
075: data = new NewLibraryDescriptor.DataModel(wiz);
076: return new BasicWizardIterator.Panel[] {
077: new SelectLibraryPanel(wiz, data),
078: new NameAndLocationPanel(wiz, data) };
079: }
080:
081: public void uninitialize(WizardDescriptor wiz) {
082: super .uninitialize(wiz);
083: data = null;
084: }
085:
086: static final class DataModel extends
087: BasicWizardIterator.BasicDataModel {
088:
089: private Library library;
090: private String libraryName;
091: private String libraryDisplayName;
092:
093: private CreatedModifiedFiles files;
094:
095: /** Creates a new instance of NewLibraryDescriptorData */
096: DataModel(WizardDescriptor wiz) {
097: super (wiz);
098: }
099:
100: public Library getLibrary() {
101: return library;
102: }
103:
104: public void setLibrary(Library library) {
105: this .library = library;
106: }
107:
108: public CreatedModifiedFiles getCreatedModifiedFiles() {
109: return files;
110: }
111:
112: public void setCreatedModifiedFiles(CreatedModifiedFiles files) {
113: this .files = files;
114: }
115:
116: public String getLibraryName() {
117: return libraryName;
118: }
119:
120: public void setLibraryName(String libraryName) {
121: this .libraryName = libraryName;
122: }
123:
124: public boolean isValidLibraryName() {
125: // XXX may need additional conditions, TBD (would need new message in that case)
126: return getLibraryName() != null
127: && getLibraryName().trim().length() != 0;
128: }
129:
130: public String getLibraryDisplayName() {
131: return libraryDisplayName;
132: }
133:
134: public void setLibraryDisplayName(String libraryDisplayName) {
135: this .libraryDisplayName = libraryDisplayName;
136: }
137:
138: public boolean isValidLibraryDisplayName() {
139: return getLibraryDisplayName() != null
140: && getLibraryDisplayName().trim().length() != 0;
141: }
142:
143: boolean libraryAlreadyExists() {
144: FileSystem layerFs = null;
145: LayerUtils.LayerHandle handle = LayerUtils
146: .layerForProject(getProject());
147: layerFs = handle.layer(false);
148: return (layerFs != null) ? (layerFs
149: .findResource(CreatedModifiedFilesProvider
150: .getLibraryDescriptorEntryPath(getLibraryName())) != null)
151: : false;
152: }
153:
154: public NewLibraryDescriptor.DataModel cloneMe(
155: WizardDescriptor wiz) {
156: NewLibraryDescriptor.DataModel d = new NewLibraryDescriptor.DataModel(
157: wiz);
158: d.setLibrary(this.getLibrary());
159: d.setPackageName(this.getPackageName());
160: d.setCreatedModifiedFiles(this.getCreatedModifiedFiles());
161: d.setLibraryDisplayName(this.getLibraryDisplayName());
162: d.setLibraryName(this.getLibraryName());
163: return d;
164: }
165: }
166:
167: }
|