Index: projects/projectui/src/org/netbeans/modules/project/ui/NewProjectWizard.java =================================================================== RCS file: projects/projectui/src/org/netbeans/modules/project/ui/NewProjectWizard.java diff -N projects/projectui/src/org/netbeans/modules/project/ui/NewProjectWizard.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ projects/projectui/src/org/netbeans/modules/project/ui/NewProjectWizard.java 9 May 2004 22:31:53 -0000 @@ -0,0 +1,60 @@ +/* + * 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; + +import java.awt.Component; +import java.io.IOException; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectUtils; +import org.netbeans.modules.project.uiapi.ProjectChooserFactory; +import org.netbeans.api.project.Sources; +import org.netbeans.api.project.SourceGroup; +//import org.netbeans.spi.project.ui.templates.support.InstantiatingIterator; +import org.netbeans.spi.project.ui.templates.support.Templates; +import org.openide.WizardDescriptor; +import org.openide.filesystems.FileObject; +import org.openide.loaders.DataFolder; +import org.openide.loaders.DataObject; +import org.openide.loaders.DataObjectNotFoundException; + +import org.openide.loaders.TemplateWizard; +import org.openide.util.HelpCtx; + +public final class NewProjectWizard extends TemplateWizard { + + private Project p; + // private String[] recommendedTypes; + private FileObject templatesFO; + + public NewProjectWizard (FileObject fo) { + this.templatesFO = fo; + // this.recommendedTypes = recommendedTypes; + setTitle( "New Project" ); + setTitleFormat( new MessageFormat( "{0}") ); + initWizard (); + } + + private void initWizard () { + DataFolder templates = DataFolder.findFolder( templatesFO ); + setTemplatesFolder( templates ); + } + +} \ No newline at end of file Index: projects/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java =================================================================== RCS file: /cvs/projects/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java,v retrieving revision 1.4 diff -u -r1.4 NewFile.java --- projects/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java 4 May 2004 14:00:12 -0000 1.4 +++ projects/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java 9 May 2004 22:31:53 -0000 @@ -13,17 +13,22 @@ package org.netbeans.modules.project.ui.actions; +import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; +import java.util.Iterator; +import java.util.Set; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; +import javax.swing.SwingUtilities; import org.netbeans.api.project.Project; import org.netbeans.modules.project.ui.NewFileWizard; import org.netbeans.modules.project.ui.OpenProjectList; import org.openide.loaders.DataFolder; import org.openide.loaders.DataObject; +import org.openide.nodes.Node; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.Utilities; @@ -63,7 +68,20 @@ } try { - wd.instantiate(); + Set result = wd.instantiate(); + Iterator it = result.iterator (); + Object obj = it.next (); + // Same what template wizard does - not vey nice + // run default action (hopefully should be here) + final Node node = ((DataObject)obj).getNodeDelegate (); + final Action a = node.getPreferredAction(); + if (a != null) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + a.actionPerformed(new ActionEvent(node, ActionEvent.ACTION_PERFORMED, "")); // NOI18N + } + }); + } } catch ( IOException e ) { // XXX Index: projects/projectui/src/org/netbeans/modules/project/ui/actions/NewProject.java =================================================================== RCS file: /cvs/projects/projectui/src/org/netbeans/modules/project/ui/actions/NewProject.java,v retrieving revision 1.3 diff -u -r1.3 NewProject.java --- projects/projectui/src/org/netbeans/modules/project/ui/actions/NewProject.java 4 May 2004 12:10:20 -0000 1.3 +++ projects/projectui/src/org/netbeans/modules/project/ui/actions/NewProject.java 9 May 2004 22:31:54 -0000 @@ -14,20 +14,24 @@ package org.netbeans.modules.project.ui.actions; import java.awt.event.ActionEvent; +import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Set; +import javax.swing.Action; 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.openide.ErrorManager; import org.openide.filesystems.FileObject; import org.openide.filesystems.Repository; import org.openide.loaders.DataFolder; import org.openide.loaders.DataObject; -import org.openide.loaders.TemplateWizard; +import org.openide.nodes.Node; import org.openide.util.NbBundle; import org.openide.util.Utilities; @@ -37,7 +41,7 @@ private static final String NAME = NbBundle.getMessage( NewProject.class, "LBL_NewProjectAction_Name" ); // NOI18N - private static TemplateWizard wizard; + private static NewProjectWizard wizard; public NewProject() { super( NAME, ICON ); @@ -46,15 +50,12 @@ public void actionPerformed( ActionEvent evt ) { if ( wizard == null ) { - wizard = new TemplateWizard(); // XXX Create NewProjectWizard instead of TemplateWizard FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource( "Templates/Project" ); //NOI18N - - DataFolder templates = DataFolder.findFolder( fo ); - wizard.setTemplatesFolder( templates ); + wizard = new NewProjectWizard(fo); } try { - Set dataObjects = wizard.instantiate(); + Set newObjects = wizard.instantiate(); Object mainProperty = wizard.getProperty( /* XXX Define somewhere */ "setAsMain" ); // NOI18N boolean main = true; @@ -62,15 +63,41 @@ main = ((Boolean)mainProperty).booleanValue(); } - if ( dataObjects != null && !dataObjects.isEmpty() ) { // Open all returned projects in the GUI - for( Iterator it = dataObjects.iterator(); it.hasNext(); ) { - DataObject prjDirDo = (DataObject)it.next(); - FileObject prjDirFo = prjDirDo.getPrimaryFile(); - Project p = ProjectManager.getDefault().findProject( prjDirFo ); - if ( p != null ) { - OpenProjectList.getDefault().open( p, true ); - if ( main ) { - OpenProjectList.getDefault().setMainProject( p ); + if ( newObjects != null && !newObjects.isEmpty() ) { // Open all returned projects in the GUI + for( Iterator it = newObjects.iterator(); it.hasNext(); ) { + Object obj = it.next (); + FileObject prjDirFo = null; + if (obj instanceof DataObject) { + // old style's way + DataObject prjDirDo = (DataObject)obj; + prjDirFo = prjDirDo.getPrimaryFile(); + } else if (obj instanceof FileObject) { + prjDirFo = (FileObject)obj; + } else { + assert false : obj; + } + if (prjDirFo.isFolder ()) { + Project p = ProjectManager.getDefault().findProject( prjDirFo ); + if ( p != null ) { + OpenProjectList.getDefault().open( p, true ); + if ( main ) { + OpenProjectList.getDefault().setMainProject( p ); + // open main class in editor + FileObject mainFO = getMainClassFO (getSourcesRoot (p), "com.myapp.Test"); + } + } + } else { + // propably main class + if (obj instanceof DataObject) { + final Node node = ((DataObject)obj).getNodeDelegate (); + final Action a = node.getPreferredAction(); + if (a != null) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + a.actionPerformed(new ActionEvent(node, ActionEvent.ACTION_PERFORMED, "")); // NOI18N + } + }); + } } } } @@ -79,7 +106,23 @@ catch ( IOException e ) { ErrorManager.getDefault().notify( ErrorManager.INFORMATIONAL, e ); } - + } + + // helper methods + private FileObject getMainClassFO (FileObject sourcesRoot, String mainClass) { + // replace '.' with '/' + mainClass = mainClass.replace ('.', File.separatorChar); // XXX // NOI18N + // find mainclass's FileObject + FileObject mainFO = sourcesRoot.getFileObject (mainClass, "java"); // XXX // NOI18N + // check MainClassChooser.hasMainMethod (mainFO); + // ignore unvalid mainClass + return mainFO; + } + + private FileObject getSourcesRoot (Project p) { + FileObject root = p.getProjectDirectory (); + String sourceRoot = "src"; //(String)j2seProperties.get (J2SEProjectProperties.SRC_DIR); + return root.getFileObject (sourceRoot); } } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/NewJ2SEProjectWizardIterator.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/NewJ2SEProjectWizardIterator.java,v retrieving revision 1.5 diff -u -r1.5 NewJ2SEProjectWizardIterator.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/NewJ2SEProjectWizardIterator.java 5 May 2004 08:33:24 -0000 1.5 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/NewJ2SEProjectWizardIterator.java 9 May 2004 22:31:57 -0000 @@ -17,6 +17,7 @@ import java.io.File; import java.io.IOException; import java.util.Collections; +import java.util.HashSet; import java.util.NoSuchElementException; import java.util.Set; import javax.swing.JComponent; @@ -25,6 +26,7 @@ import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.java.j2seproject.J2SEProjectGenerator; import org.netbeans.spi.project.support.ant.AntProjectHelper; +import org.netbeans.spi.project.support.ant.EditableProperties; import org.openide.WizardDescriptor; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; @@ -37,7 +39,7 @@ * Wizard to create a new J2SE project. * @author Jesse Glick */ -public class NewJ2SEProjectWizardIterator implements TemplateWizard.Iterator { +public class NewJ2SEProjectWizardIterator implements WizardDescriptor.InstantiatingIterator { static final int TYPE_APP = 0; static final int TYPE_LIB = 1; @@ -102,7 +104,8 @@ } - public Set/**/ instantiate(TemplateWizard wiz) throws IOException/*, IllegalStateException*/ { + public Set/**/ instantiate () throws IOException/*, IllegalStateException*/ { + Set resultSet = new HashSet (); File dirF = (File)wiz.getProperty("projdir"); String codename = (String)wiz.getProperty("codename"); String displayName = (String)wiz.getProperty("displayName"); @@ -116,22 +119,32 @@ J2SEProjectGenerator.createProject(dirF, codename, displayName, sourceFolder, testFolder ); } else { - J2SEProjectGenerator.createProject(dirF, codename, displayName, mainClass ); + AntProjectHelper h = J2SEProjectGenerator.createProject(dirF, codename, displayName, mainClass ); + try { + //String sourceRoot = "src"; //(String)j2seProperties.get (J2SEProjectProperties.SRC_DIR); + FileObject sourcesRoot = h.getProjectDirectory ().getFileObject ("src"); + FileObject mainClassFo = getMainClassFO (sourcesRoot, mainClass); + resultSet.add (mainClassFo); + } catch (Exception x) { + // XXX + x.printStackTrace(); + } } FileObject dir = FileUtil.toFileObject(dirF); Project p = ProjectManager.getDefault().findProject(dir); // Returning set of DataObject of project diretory. // Project will be open and set as main - return Collections.singleton(DataObject.find(dir)); + resultSet.add (dir); + return resultSet; } private transient int index; private transient WizardDescriptor.Panel[] panels; - private transient TemplateWizard wiz; + private transient WizardDescriptor wiz; - public void initialize(TemplateWizard wiz) { + public void initialize(WizardDescriptor wiz) { this.wiz = wiz; index = 0; panels = createPanels(); @@ -154,7 +167,7 @@ } } } - public void uninitialize(TemplateWizard wiz) { + public void uninitialize(WizardDescriptor wiz) { this.wiz = null; panels = null; } @@ -184,6 +197,17 @@ // If nothing unusual changes in the middle of the wizard, simply: public final void addChangeListener(ChangeListener l) {} public final void removeChangeListener(ChangeListener l) {} + + // helper methods + private FileObject getMainClassFO (FileObject sourcesRoot, String mainClass) { + // replace '.' with '/' + mainClass = mainClass.replace ('.', File.separatorChar); // XXX // NOI18N + // find mainclass's FileObject + FileObject mainFO = sourcesRoot.getFileObject (mainClass, "java"); // XXX // NOI18N + // check MainClassChooser.hasMainMethod (mainFO); + // ignore unvalid mainClass + return mainFO; + } // If something changes dynamically (besides moving between panels), // e.g. the number of panels changes in response to user input, then // uncomment the following and call when needed: