|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.project.ui.actions; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.SwingUtilities; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.project.ui.NewProjectWizard; import org.netbeans.modules.project.ui.OpenProjectList; import org.netbeans.modules.project.ui.ProjectUtilities; import org.openide.ErrorManager; import org.openide.filesystems.FileObject; import org.openide.filesystems.Repository; import org.openide.loaders.DataObject; import org.openide.util.NbBundle; import org.openide.util.RequestProcessor; import org.openide.util.Utilities; public class NewProject extends BasicAction implements Runnable { private static final Icon ICON = new ImageIcon( Utilities.loadImage( "org/netbeans/modules/project/ui/resources/newProject.gif" ) ); //NOI18N private static final String NAME = NbBundle.getMessage( NewProject.class, "LBL_NewProjectAction_Name" ); // NOI18N private boolean isWelcome = false; private static NewProjectWizard wizard; private RequestProcessor.Task bodyTask; public NewProject() { super( NAME, ICON ); putValue("iconBase","org/netbeans/modules/project/ui/resources/newProject.gif"); //NOI18N bodyTask = new RequestProcessor( "NewProjectBody" ).create( this ); // NOI18N } public static NewProject newSample() { NewProject np = new NewProject(); np.setDisplayName( "New Sample" ); np.isWelcome = true; return np; } public void actionPerformed( ActionEvent evt ) { bodyTask.schedule( 0 ); if ( "waitFinished".equals( evt.getActionCommand() ) ) { bodyTask.waitFinished(); } } public void run() { if ( wizard == null ) { FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource( "Templates/Project" ); //NOI18N wizard = new NewProjectWizard(fo); } else { //Reset the inline message wizard.putProperty( "WizardPanel_errorMessage", ""); //NOI18N } if ( isWelcome ) { wizard.putProperty( "PRESELECT_CATEGORY", "Samples/Standard"); } else { wizard.putProperty( "PRESELECT_CATEGORY", null ); } try { final Set newObjects = wizard.instantiate (); Object mainProperty = wizard.getProperty( /* XXX Define somewhere */ "setAsMain" ); // NOI18N boolean setFirstMain = true; if ( mainProperty instanceof Boolean ) { setFirstMain = ((Boolean)mainProperty).booleanValue(); } final boolean setFirstMainFinal = setFirstMain; SwingUtilities.invokeLater( new Runnable() { public void run() { ProjectUtilities.WaitCursor.show(); if ( newObjects != null && !newObjects.isEmpty() ) { // First. Open all returned projects in the GUI. LinkedList filesToOpen = new LinkedList(); for( Iterator it = newObjects.iterator(); it.hasNext(); ) { Object obj = it.next (); FileObject newFo = null; if (obj instanceof DataObject) { // old style way with Set/*DataObject*/ final DataObject newDo = (DataObject)obj; boolean mainProjectSet = false; // check if it's project's directory if (newDo.getPrimaryFile ().isFolder ()) { try { Project p = ProjectManager.getDefault().findProject( newDo.getPrimaryFile () ); if ( p != null ) { // It is a project open it OpenProjectList.getDefault().open( p, true ); if ( setFirstMainFinal && !mainProjectSet ) { OpenProjectList.getDefault().setMainProject( p ); mainProjectSet = true; } } else { // Just a folder to expand filesToOpen.add( newDo ); } } catch ( IOException e ) { continue; } } else { filesToOpen.add( newDo ); } } else { assert false : obj; } } // Second open the files for( Iterator it = filesToOpen.iterator(); it.hasNext(); ) { ProjectUtilities.openAndSelectNewObject( (DataObject)it.next() ); } } ProjectUtilities.WaitCursor.hide(); } } ); } catch ( IOException e ) { ErrorManager.getDefault().notify( ErrorManager.INFORMATIONAL, e ); } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.