diff -r 33230518a44f templatesui/nbproject/project.xml --- a/templatesui/nbproject/project.xml Tue Jan 13 14:01:59 2015 +0000 +++ b/templatesui/nbproject/project.xml Mon Jan 19 08:26:41 2015 +0100 @@ -62,6 +62,24 @@ + org.netbeans.modules.java.project.ui + + + + 1 + 1.64 + + + + org.netbeans.modules.projectapi + + + + 1 + 1.63 + + + org.openide.dialogs diff -r 33230518a44f templatesui/src/org/netbeans/modules/templatesui/AbstractWizard.java --- a/templatesui/src/org/netbeans/modules/templatesui/AbstractWizard.java Tue Jan 13 14:01:59 2015 +0000 +++ b/templatesui/src/org/netbeans/modules/templatesui/AbstractWizard.java Mon Jan 19 08:26:41 2015 +0100 @@ -47,6 +47,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; @@ -69,11 +70,15 @@ import net.java.html.boot.fx.FXBrowsers; import net.java.html.js.JavaScriptBody; import net.java.html.json.Models; +import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectUtils; +import org.netbeans.api.project.SourceGroup; +import org.netbeans.api.project.Sources; +import org.netbeans.spi.java.project.support.ui.templates.JavaTemplates; import org.openide.WizardDescriptor; import org.openide.WizardValidationException; import org.openide.loaders.DataObject; import org.openide.loaders.TemplateWizard; -import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.util.NbBundle; @@ -154,9 +159,19 @@ cnt = 1; } for (int i = 0; i < cnt; i++) { - if (steps.size() > i && "targetChooser".equals(steps.get(i))) { // NOI18N - panels.add(wizard.targetChooser()); - continue; + if (steps.size() > i) { + final String panelName = steps.get(i); + if ("targetChooser".equals(panelName)) { // NOI18N + panels.add(wizard.targetChooser()); + continue; + } + final String tcPrefix = "targetChooser:"; // NOI18N + if (panelName != null && panelName.startsWith(tcPrefix)) { + Project p = (Project) wizard.getProperty("project"); // NOI18N + WizardDescriptor.Panel panel = aw.getChooser(p, panelName.substring(tcPrefix.length())); + panels.add(panel); + continue; + } } final HTMLPanel p = new HTMLPanel(i, aw); panels.add(p); @@ -549,4 +564,20 @@ @JavaScriptBody(args = { "raw" }, body = "ko.applyBindings(raw);") static native void applyBindings(Object raw); + + Map> choosers; + WizardDescriptor.Panel getChooser(Project p, String type) { + if (choosers == null) { + choosers = new HashMap<>(); + } + WizardDescriptor.Panel panel = choosers.get(type); + + if (panel == null) { + Sources src = ProjectUtils.getSources(p); + SourceGroup[] groups = src.getSourceGroups(type); + panel = JavaTemplates.createPackageChooser(p, groups); + choosers.put(type, panel); + } + return panel; + } }