|
@@ -1,199 +0,0 @@
|
|
|
-/*
|
|
|
- * Copyright (c) 2009-2010 jMonkeyEngine
|
|
|
- * All rights reserved.
|
|
|
- *
|
|
|
- * Redistribution and use in source and binary forms, with or without
|
|
|
- * modification, are permitted provided that the following conditions are
|
|
|
- * met:
|
|
|
- *
|
|
|
- * * Redistributions of source code must retain the above copyright
|
|
|
- * notice, this list of conditions and the following disclaimer.
|
|
|
- *
|
|
|
- * * Redistributions in binary form must reproduce the above copyright
|
|
|
- * notice, this list of conditions and the following disclaimer in the
|
|
|
- * documentation and/or other materials provided with the distribution.
|
|
|
- *
|
|
|
- * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
|
|
|
- * may be used to endorse or promote products derived from this software
|
|
|
- * without specific prior written permission.
|
|
|
- *
|
|
|
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
|
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
|
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
|
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
|
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
|
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
|
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
|
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
|
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
|
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
- */
|
|
|
-package com.jme3.gde.materialdefinition.wizard;
|
|
|
-
|
|
|
-import java.awt.Component;
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.NoSuchElementException;
|
|
|
-import java.util.Set;
|
|
|
-import javax.swing.JComponent;
|
|
|
-import javax.swing.event.ChangeListener;
|
|
|
-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.api.templates.TemplateRegistration;
|
|
|
-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.util.NbBundle.Messages;
|
|
|
-
|
|
|
-@TemplateRegistration(
|
|
|
- folder = "Material",
|
|
|
- content = "../CodeBasedMatDef.j3md",
|
|
|
- displayName = "Material Definition Template (Code Based with Shaders)",
|
|
|
- description = "Creates a material definition file with corresponding vertex and fragment shader files",
|
|
|
- position = 100,
|
|
|
- scriptEngine = "freemarker"
|
|
|
-)
|
|
|
-@Messages("CodeBasedMatDefWizardIterator_displayName=Code Based Material Definition with Shaders")
|
|
|
-public final class CodeBasedMatDefWizardIterator implements WizardDescriptor.InstantiatingIterator<WizardDescriptor> {
|
|
|
-
|
|
|
- private int index;
|
|
|
- private WizardDescriptor wizard;
|
|
|
- private List<WizardDescriptor.Panel<WizardDescriptor>> panels;
|
|
|
-
|
|
|
- @Override
|
|
|
- public Set<FileObject> instantiate() throws IOException {
|
|
|
- // Get the target name and directory
|
|
|
- String targetName = Templates.getTargetName(wizard);
|
|
|
- FileObject dir = Templates.getTargetFolder(wizard);
|
|
|
- DataFolder df = DataFolder.findFolder(dir);
|
|
|
-
|
|
|
- // Prepare template variables
|
|
|
- Map<String, Object> args = new HashMap<>();
|
|
|
- args.put("name", targetName);
|
|
|
-
|
|
|
- // Get template files
|
|
|
- FileObject j3mdTemplate = Templates.getTemplate(wizard);
|
|
|
- FileObject templateDir = j3mdTemplate.getParent();
|
|
|
- FileObject vertTemplate = templateDir.getFileObject("BasicShader.vert");
|
|
|
- FileObject fragTemplate = templateDir.getFileObject("BasicShader.frag");
|
|
|
-
|
|
|
- // Create DataObjects for templates
|
|
|
- DataObject j3mdTemplateData = DataObject.find(j3mdTemplate);
|
|
|
- DataObject vertTemplateData = DataObject.find(vertTemplate);
|
|
|
- DataObject fragTemplateData = DataObject.find(fragTemplate);
|
|
|
-
|
|
|
- // Create the files
|
|
|
- DataObject j3mdFile = j3mdTemplateData.createFromTemplate(df, targetName, args);
|
|
|
- vertTemplateData.createFromTemplate(df, targetName + ".vert", args);
|
|
|
- fragTemplateData.createFromTemplate(df, targetName + ".frag", args);
|
|
|
-
|
|
|
- // Return the main j3md file as the primary created file
|
|
|
- return Collections.singleton(j3mdFile.getPrimaryFile());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void initialize(WizardDescriptor wizard) {
|
|
|
- this.wizard = wizard;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void uninitialize(WizardDescriptor wizard) {
|
|
|
- panels = null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public WizardDescriptor.Panel<WizardDescriptor> current() {
|
|
|
- return getPanels().get(index);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String name() {
|
|
|
- return index + 1 + ". from " + getPanels().size();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean hasNext() {
|
|
|
- return index < getPanels().size() - 1;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean hasPrevious() {
|
|
|
- return index > 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void nextPanel() {
|
|
|
- if (!hasNext()) {
|
|
|
- throw new NoSuchElementException();
|
|
|
- }
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void previousPanel() {
|
|
|
- if (!hasPrevious()) {
|
|
|
- throw new NoSuchElementException();
|
|
|
- }
|
|
|
- index--;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void addChangeListener(ChangeListener l) {
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void removeChangeListener(ChangeListener l) {
|
|
|
- }
|
|
|
-
|
|
|
- private List<WizardDescriptor.Panel<WizardDescriptor>> getPanels() {
|
|
|
- if (panels == null) {
|
|
|
- panels = new ArrayList<>();
|
|
|
- // Use the standard target chooser
|
|
|
- Project p = Templates.getProject(wizard);
|
|
|
- SourceGroup[] groups = ProjectUtils.getSources(p).getSourceGroups(Sources.TYPE_GENERIC);
|
|
|
- WizardDescriptor.Panel<WizardDescriptor> targetChooser = Templates.buildSimpleTargetChooser(p, groups).create();
|
|
|
- panels.add(targetChooser);
|
|
|
-
|
|
|
- String[] steps = createSteps();
|
|
|
- for (int i = 0; i < panels.size(); i++) {
|
|
|
- Component c = panels.get(i).getComponent();
|
|
|
- if (steps[i] == null) {
|
|
|
- // Default step name to component name of panel.
|
|
|
- steps[i] = c.getName();
|
|
|
- }
|
|
|
- if (c instanceof JComponent) { // assume Swing components
|
|
|
- JComponent jc = (JComponent) c;
|
|
|
- jc.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i);
|
|
|
- jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, steps);
|
|
|
- jc.putClientProperty(WizardDescriptor.PROP_AUTO_WIZARD_STYLE, true);
|
|
|
- jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DISPLAYED, true);
|
|
|
- jc.putClientProperty(WizardDescriptor.PROP_CONTENT_NUMBERED, true);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return panels;
|
|
|
- }
|
|
|
-
|
|
|
- private String[] createSteps() {
|
|
|
- String[] beforeSteps = (String[]) wizard.getProperty(WizardDescriptor.PROP_CONTENT_DATA);
|
|
|
- assert beforeSteps != null : "This wizard may only be used embedded in the template wizard";
|
|
|
- String[] res = new String[(beforeSteps.length - 1) + panels.size()];
|
|
|
- for (int i = 0; i < res.length; i++) {
|
|
|
- if (i < (beforeSteps.length - 1)) {
|
|
|
- res[i] = beforeSteps[i];
|
|
|
- } else {
|
|
|
- res[i] = panels.get(i - beforeSteps.length + 1).getComponent().getName();
|
|
|
- }
|
|
|
- }
|
|
|
- return res;
|
|
|
- }
|
|
|
-}
|