Created a ShaderNodeDefinition creation wizard
This commit is contained in:
		
							parent
							
								
									1a59cf5318
								
							
						
					
					
						commit
						f36cdfe0b9
					
				| @ -0,0 +1,115 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import org.netbeans.core.spi.multiview.MultiViewElement; | ||||
| import org.netbeans.core.spi.multiview.text.MultiViewEditorElement; | ||||
| import org.openide.awt.ActionID; | ||||
| import org.openide.awt.ActionReference; | ||||
| import org.openide.awt.ActionReferences; | ||||
| import org.openide.filesystems.FileObject; | ||||
| import org.openide.filesystems.MIMEResolver; | ||||
| import org.openide.loaders.DataObject; | ||||
| import org.openide.loaders.DataObjectExistsException; | ||||
| import org.openide.loaders.MultiDataObject; | ||||
| import org.openide.loaders.MultiFileLoader; | ||||
| import org.openide.util.Lookup; | ||||
| import org.openide.util.NbBundle.Messages; | ||||
| import org.openide.windows.TopComponent; | ||||
| 
 | ||||
| @Messages({ | ||||
|     "LBL_SNDef_LOADER=Files of SNDef" | ||||
| }) | ||||
| @MIMEResolver.ExtensionRegistration( | ||||
|         displayName = "#LBL_SNDef_LOADER", | ||||
|         mimeType = "text/x-j3sn", | ||||
|         extension = {"j3sn", "J3SN"} | ||||
| ) | ||||
| @DataObject.Registration( | ||||
|         mimeType = "text/x-j3sn", | ||||
|         iconBase = "com/jme3/gde/materialdefinition/icons/node.png", | ||||
|         displayName = "#LBL_SNDef_LOADER", | ||||
|         position = 300 | ||||
| ) | ||||
| @ActionReferences({ | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.OpenAction"), | ||||
|             position = 100, | ||||
|             separatorAfter = 200 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "Edit", id = "org.openide.actions.CutAction"), | ||||
|             position = 300 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "Edit", id = "org.openide.actions.CopyAction"), | ||||
|             position = 400, | ||||
|             separatorAfter = 500 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "Edit", id = "org.openide.actions.DeleteAction"), | ||||
|             position = 600 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.RenameAction"), | ||||
|             position = 700, | ||||
|             separatorAfter = 800 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.SaveAsTemplateAction"), | ||||
|             position = 900, | ||||
|             separatorAfter = 1000 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.FileSystemAction"), | ||||
|             position = 1100, | ||||
|             separatorAfter = 1200 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.ToolsAction"), | ||||
|             position = 1300 | ||||
|     ), | ||||
|     @ActionReference( | ||||
|             path = "Loaders/text/x-j3sn/Actions", | ||||
|             id = @ActionID(category = "System", id = "org.openide.actions.PropertiesAction"), | ||||
|             position = 1400 | ||||
|     ) | ||||
| }) | ||||
| public class SNDefDataObject extends MultiDataObject { | ||||
| 
 | ||||
|     public SNDefDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException { | ||||
|         super(pf, loader); | ||||
|         registerEditor("text/x-j3sn", true); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected int associateLookup() { | ||||
|         return 1; | ||||
|     } | ||||
| 
 | ||||
|     @MultiViewElement.Registration( | ||||
|             displayName = "#LBL_SNDef_EDITOR", | ||||
|             iconBase = "com/jme3/gde/materialdefinition/icons/node.png", | ||||
|             mimeType = "text/x-j3sn", | ||||
|             persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED, | ||||
|             preferredID = "SNDef", | ||||
|             position = 1000 | ||||
|     ) | ||||
|     @Messages("LBL_SNDef_EDITOR=Source") | ||||
|     public static MultiViewEditorElement createEditor(Lookup lkp) { | ||||
|         return new MultiViewEditorElement(lkp); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| ShaderNodeDefinitions{  | ||||
|     ShaderNodeDefinition ${defName} {       | ||||
|         Type: ${defType} | ||||
|         Shader GLSL100: ${shaderSnippet} | ||||
|         Documentation{ | ||||
|             ${description}             | ||||
|             <#list inputParams as param>                 | ||||
|             @input ${param[0]} ${param[1]} ${param[2]} | ||||
|             </#list> | ||||
|             <#list outputParams as param>                 | ||||
|             @output ${param[0]} ${param[1]} ${param[2]} | ||||
|             </#list>             | ||||
|         } | ||||
|         Input { | ||||
|             <#list inputParams as param>                 | ||||
|             ${param[0]} ${param[1]} | ||||
|             </#list>             | ||||
|         } | ||||
|         Output { | ||||
|             <#list outputParams as param>                 | ||||
|              ${param[0]} ${param[1]} | ||||
|             </#list>                         | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| 
 | ||||
| <Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | ||||
|   <AuxValues> | ||||
|     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | ||||
|     <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | ||||
|   </AuxValues> | ||||
| 
 | ||||
|   <Layout> | ||||
|     <DimensionLayout dim="0"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <EmptySpace min="0" pref="400" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|     <DimensionLayout dim="1"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <EmptySpace min="0" pref="300" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|   </Layout> | ||||
| </Form> | ||||
| @ -0,0 +1,127 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition; | ||||
| 
 | ||||
| import javax.swing.Action; | ||||
| import javax.swing.JComponent; | ||||
| import javax.swing.JPanel; | ||||
| import javax.swing.JToolBar; | ||||
| import org.netbeans.core.spi.multiview.CloseOperationState; | ||||
| import org.netbeans.core.spi.multiview.MultiViewElement; | ||||
| import org.netbeans.core.spi.multiview.MultiViewElementCallback; | ||||
| import org.openide.awt.UndoRedo; | ||||
| import org.openide.util.Lookup; | ||||
| import org.openide.util.NbBundle.Messages; | ||||
| import org.openide.windows.TopComponent; | ||||
| 
 | ||||
| @MultiViewElement.Registration( | ||||
|         displayName = "#LBL_SNDef_VISUAL", | ||||
|         iconBase = "com/jme3/gde/materialdefinition/icons/node.png", | ||||
|         mimeType = "text/x-j3sn", | ||||
|         persistenceType = TopComponent.PERSISTENCE_NEVER, | ||||
|         preferredID = "SNDefVisual", | ||||
|         position = 2000 | ||||
| ) | ||||
| @Messages("LBL_SNDef_VISUAL=Visual") | ||||
| public final class SNDefVisualElement extends JPanel implements MultiViewElement { | ||||
| 
 | ||||
|     private SNDefDataObject obj; | ||||
|     private JToolBar toolbar = new JToolBar(); | ||||
|     private transient MultiViewElementCallback callback; | ||||
| 
 | ||||
|     public SNDefVisualElement(Lookup lkp) { | ||||
|         obj = lkp.lookup(SNDefDataObject.class); | ||||
|         assert obj != null; | ||||
|         initComponents(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return "SNDefVisualElement"; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This method is called from within the constructor to initialize the form. | ||||
|      * WARNING: Do NOT modify this code. The content of this method is always | ||||
|      * regenerated by the Form Editor. | ||||
|      */ | ||||
|     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | ||||
|     private void initComponents() { | ||||
| 
 | ||||
|         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); | ||||
|         this.setLayout(layout); | ||||
|         layout.setHorizontalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGap(0, 400, Short.MAX_VALUE) | ||||
|         ); | ||||
|         layout.setVerticalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGap(0, 300, Short.MAX_VALUE) | ||||
|         ); | ||||
|     }// </editor-fold>//GEN-END:initComponents | ||||
| 
 | ||||
|     // Variables declaration - do not modify//GEN-BEGIN:variables | ||||
|     // End of variables declaration//GEN-END:variables | ||||
|     @Override | ||||
|     public JComponent getVisualRepresentation() { | ||||
|         return this; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public JComponent getToolbarRepresentation() { | ||||
|         return toolbar; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Action[] getActions() { | ||||
|         return new Action[0]; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Lookup getLookup() { | ||||
|         return obj.getLookup(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentOpened() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentClosed() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentShowing() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentHidden() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentActivated() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void componentDeactivated() { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UndoRedo getUndoRedo() { | ||||
|         return UndoRedo.NONE; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void setMultiViewCallback(MultiViewElementCallback callback) { | ||||
|         this.callback = callback; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public CloseOperationState canCloseElement() { | ||||
|         return CloseOperationState.STATE_OK; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,9 @@ | ||||
| <#list inputParams as param>                 | ||||
| //@input ${param[0]} ${param[1]} ${param[2]} | ||||
| </#list> | ||||
| <#list outputParams as param>                 | ||||
| //@output ${param[0]} ${param[1]} ${param[2]} | ||||
| </#list>             | ||||
| void main(){ | ||||
|     //insert glsl code here | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| <!-- | ||||
| To change this license header, choose License Headers in Project Properties. | ||||
| To change this template file, choose Tools | Templates | ||||
| and open the template in the editor. | ||||
| --> | ||||
| <html> | ||||
|     <head> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||||
|     </head> | ||||
|     <body>         | ||||
|         A new Shader Node Definition file that can be instantiated as a Shader Node in the Shader Node editor | ||||
|     </body> | ||||
| </html> | ||||
| @ -0,0 +1,10 @@ | ||||
| SNDefVisualPanel1.jLabel1.text=Definition Name | ||||
| SNDefVisualPanel1.defNameTextField.toolTipText= | ||||
| SNDefVisualPanel1.defNameTextField.text= | ||||
| SNDefVisualPanel1.jLabel2.text=Shader type | ||||
| SNDefVisualPanel1.jPanel2.border.title=Description | ||||
| SNDefVisualPanel2.addButton.text= | ||||
| SNDefVisualPanel2.titleLabel.text=Inputs | ||||
| SNDefVisualPanel2.addButton.toolTipText=Add an entry | ||||
| SNDefVisualPanel2.delButton.toolTipText=Delete an entry | ||||
| SNDefVisualPanel2.delButton.text= | ||||
| @ -0,0 +1,158 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| 
 | ||||
| <Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | ||||
|   <AuxValues> | ||||
|     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | ||||
|     <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | ||||
|   </AuxValues> | ||||
| 
 | ||||
|   <Layout> | ||||
|     <DimensionLayout dim="0"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <Component id="jPanel1" alignment="0" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|     <DimensionLayout dim="1"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <Component id="jPanel1" alignment="0" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|   </Layout> | ||||
|   <SubComponents> | ||||
|     <Container class="javax.swing.JPanel" name="jPanel1"> | ||||
| 
 | ||||
|       <Layout> | ||||
|         <DimensionLayout dim="0"> | ||||
|           <Group type="103" groupAlignment="0" attributes="0"> | ||||
|               <Group type="102" alignment="1" attributes="0"> | ||||
|                   <Group type="103" groupAlignment="1" attributes="0"> | ||||
|                       <Group type="102" attributes="0"> | ||||
|                           <EmptySpace max="-2" attributes="0"/> | ||||
|                           <Component id="jPanel2" max="32767" attributes="0"/> | ||||
|                       </Group> | ||||
|                       <Group type="102" attributes="0"> | ||||
|                           <EmptySpace min="-2" pref="14" max="-2" attributes="0"/> | ||||
|                           <Group type="103" groupAlignment="1" attributes="0"> | ||||
|                               <Component id="jLabel2" min="-2" max="-2" attributes="0"/> | ||||
|                               <Component id="jLabel1" min="-2" max="-2" attributes="0"/> | ||||
|                           </Group> | ||||
|                           <EmptySpace max="-2" attributes="0"/> | ||||
|                           <Group type="103" groupAlignment="0" attributes="0"> | ||||
|                               <Component id="defNameTextField" max="32767" attributes="0"/> | ||||
|                               <Component id="shaderTypeCB" max="32767" attributes="0"/> | ||||
|                           </Group> | ||||
|                       </Group> | ||||
|                   </Group> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|               </Group> | ||||
|           </Group> | ||||
|         </DimensionLayout> | ||||
|         <DimensionLayout dim="1"> | ||||
|           <Group type="103" groupAlignment="0" attributes="0"> | ||||
|               <Group type="102" alignment="0" attributes="0"> | ||||
|                   <EmptySpace min="-2" pref="40" max="-2" attributes="0"/> | ||||
|                   <Group type="103" groupAlignment="3" attributes="0"> | ||||
|                       <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/> | ||||
|                       <Component id="defNameTextField" alignment="3" min="-2" max="-2" attributes="0"/> | ||||
|                   </Group> | ||||
|                   <EmptySpace type="unrelated" max="-2" attributes="0"/> | ||||
|                   <Group type="103" groupAlignment="3" attributes="0"> | ||||
|                       <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/> | ||||
|                       <Component id="shaderTypeCB" alignment="3" min="-2" max="-2" attributes="0"/> | ||||
|                   </Group> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|                   <Component id="jPanel2" max="32767" attributes="0"/> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|               </Group> | ||||
|           </Group> | ||||
|         </DimensionLayout> | ||||
|       </Layout> | ||||
|       <SubComponents> | ||||
|         <Component class="javax.swing.JLabel" name="jLabel1"> | ||||
|           <Properties> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel1.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|           </Properties> | ||||
|         </Component> | ||||
|         <Component class="javax.swing.JTextField" name="defNameTextField"> | ||||
|           <Properties> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel1.defNameTextField.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|             <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel1.defNameTextField.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|           </Properties> | ||||
|         </Component> | ||||
|         <Component class="javax.swing.JLabel" name="jLabel2"> | ||||
|           <Properties> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel1.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|           </Properties> | ||||
|         </Component> | ||||
|         <Component class="javax.swing.JComboBox" name="shaderTypeCB"> | ||||
|           <Properties> | ||||
|             <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> | ||||
|               <StringArray count="4"> | ||||
|                 <StringItem index="0" value="Item 1"/> | ||||
|                 <StringItem index="1" value="Item 2"/> | ||||
|                 <StringItem index="2" value="Item 3"/> | ||||
|                 <StringItem index="3" value="Item 4"/> | ||||
|               </StringArray> | ||||
|             </Property> | ||||
|           </Properties> | ||||
|         </Component> | ||||
|         <Container class="javax.swing.JPanel" name="jPanel2"> | ||||
|           <Properties> | ||||
|             <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | ||||
|               <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> | ||||
|                 <TitledBorder title="Description"> | ||||
|                   <ResourceString PropertyName="titleX" bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel1.jPanel2.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|                 </TitledBorder> | ||||
|               </Border> | ||||
|             </Property> | ||||
|           </Properties> | ||||
| 
 | ||||
|           <Layout> | ||||
|             <DimensionLayout dim="0"> | ||||
|               <Group type="103" groupAlignment="0" attributes="0"> | ||||
|                   <Component id="jScrollPane1" alignment="0" pref="376" max="32767" attributes="0"/> | ||||
|               </Group> | ||||
|             </DimensionLayout> | ||||
|             <DimensionLayout dim="1"> | ||||
|               <Group type="103" groupAlignment="0" attributes="0"> | ||||
|                   <Component id="jScrollPane1" alignment="0" pref="157" max="32767" attributes="0"/> | ||||
|               </Group> | ||||
|             </DimensionLayout> | ||||
|           </Layout> | ||||
|           <SubComponents> | ||||
|             <Container class="javax.swing.JScrollPane" name="jScrollPane1"> | ||||
|               <AuxValues> | ||||
|                 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> | ||||
|               </AuxValues> | ||||
| 
 | ||||
|               <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> | ||||
|               <SubComponents> | ||||
|                 <Component class="javax.swing.JTextArea" name="descriptionTextArea"> | ||||
|                   <Properties> | ||||
|                     <Property name="columns" type="int" value="20"/> | ||||
|                     <Property name="rows" type="int" value="5"/> | ||||
|                   </Properties> | ||||
|                 </Component> | ||||
|               </SubComponents> | ||||
|             </Container> | ||||
|           </SubComponents> | ||||
|         </Container> | ||||
|       </SubComponents> | ||||
|     </Container> | ||||
|   </SubComponents> | ||||
| </Form> | ||||
| @ -0,0 +1,146 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition.wizard; | ||||
| 
 | ||||
| import com.jme3.shader.Shader; | ||||
| import javax.swing.DefaultComboBoxModel; | ||||
| import javax.swing.JPanel; | ||||
| 
 | ||||
| public final class SNDefVisualPanel1 extends JPanel { | ||||
| 
 | ||||
|     | ||||
|     /** | ||||
|      * Creates new form SNDefVisualPanel1 | ||||
|      */ | ||||
|     public SNDefVisualPanel1() { | ||||
|         initComponents(); | ||||
|         DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(); | ||||
|         for (Shader.ShaderType shaderType : Shader.ShaderType.values()) { | ||||
|             model.addElement(shaderType.name()); | ||||
|         } | ||||
|         shaderTypeCB.setModel(model); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return "Shader node informations"; | ||||
|     } | ||||
| 
 | ||||
|     public String getDefName(){ | ||||
|         return defNameTextField.getText(); | ||||
|     } | ||||
|      | ||||
|     public String getDefType(){ | ||||
|         return (String)shaderTypeCB.getModel().getSelectedItem(); | ||||
|     } | ||||
|      | ||||
|     public String getDefDescription(){ | ||||
|         return descriptionTextArea.getText(); | ||||
|     } | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * This method is called from within the constructor to initialize the form. | ||||
|      * WARNING: Do NOT modify this code. The content of this method is always | ||||
|      * regenerated by the Form Editor. | ||||
|      */ | ||||
|     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | ||||
|     private void initComponents() { | ||||
| 
 | ||||
|         jPanel1 = new javax.swing.JPanel(); | ||||
|         jLabel1 = new javax.swing.JLabel(); | ||||
|         defNameTextField = new javax.swing.JTextField(); | ||||
|         jLabel2 = new javax.swing.JLabel(); | ||||
|         shaderTypeCB = new javax.swing.JComboBox(); | ||||
|         jPanel2 = new javax.swing.JPanel(); | ||||
|         jScrollPane1 = new javax.swing.JScrollPane(); | ||||
|         descriptionTextArea = new javax.swing.JTextArea(); | ||||
| 
 | ||||
|         org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.jLabel1.text")); // NOI18N | ||||
| 
 | ||||
|         defNameTextField.setText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.defNameTextField.text")); // NOI18N | ||||
|         defNameTextField.setToolTipText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.defNameTextField.toolTipText")); // NOI18N | ||||
| 
 | ||||
|         org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.jLabel2.text")); // NOI18N | ||||
| 
 | ||||
|         shaderTypeCB.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); | ||||
| 
 | ||||
|         jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.jPanel2.border.title"))); // NOI18N | ||||
| 
 | ||||
|         descriptionTextArea.setColumns(20); | ||||
|         descriptionTextArea.setRows(5); | ||||
|         jScrollPane1.setViewportView(descriptionTextArea); | ||||
| 
 | ||||
|         javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); | ||||
|         jPanel2.setLayout(jPanel2Layout); | ||||
|         jPanel2Layout.setHorizontalGroup( | ||||
|             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE) | ||||
|         ); | ||||
|         jPanel2Layout.setVerticalGroup( | ||||
|             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE) | ||||
|         ); | ||||
| 
 | ||||
|         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); | ||||
|         jPanel1.setLayout(jPanel1Layout); | ||||
|         jPanel1Layout.setHorizontalGroup( | ||||
|             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() | ||||
|                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) | ||||
|                     .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                         .addContainerGap() | ||||
|                         .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | ||||
|                     .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                         .addGap(14, 14, 14) | ||||
|                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) | ||||
|                             .addComponent(jLabel2) | ||||
|                             .addComponent(jLabel1)) | ||||
|                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||
|                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|                             .addComponent(defNameTextField) | ||||
|                             .addComponent(shaderTypeCB, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) | ||||
|                 .addContainerGap()) | ||||
|         ); | ||||
|         jPanel1Layout.setVerticalGroup( | ||||
|             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                 .addGap(40, 40, 40) | ||||
|                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | ||||
|                     .addComponent(jLabel1) | ||||
|                     .addComponent(defNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | ||||
|                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | ||||
|                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | ||||
|                     .addComponent(jLabel2) | ||||
|                     .addComponent(shaderTypeCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | ||||
|                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||
|                 .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|                 .addContainerGap()) | ||||
|         ); | ||||
| 
 | ||||
|         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); | ||||
|         this.setLayout(layout); | ||||
|         layout.setHorizontalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|         ); | ||||
|         layout.setVerticalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|         ); | ||||
|     }// </editor-fold>//GEN-END:initComponents | ||||
| 
 | ||||
|     // Variables declaration - do not modify//GEN-BEGIN:variables | ||||
|     private javax.swing.JTextField defNameTextField; | ||||
|     private javax.swing.JTextArea descriptionTextArea; | ||||
|     private javax.swing.JLabel jLabel1; | ||||
|     private javax.swing.JLabel jLabel2; | ||||
|     private javax.swing.JPanel jPanel1; | ||||
|     private javax.swing.JPanel jPanel2; | ||||
|     private javax.swing.JScrollPane jScrollPane1; | ||||
|     private javax.swing.JComboBox shaderTypeCB; | ||||
|     // End of variables declaration//GEN-END:variables | ||||
| } | ||||
| @ -0,0 +1,141 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| 
 | ||||
| <Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | ||||
|   <AuxValues> | ||||
|     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> | ||||
|     <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | ||||
|     <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | ||||
|     <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | ||||
|     <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | ||||
|   </AuxValues> | ||||
| 
 | ||||
|   <Layout> | ||||
|     <DimensionLayout dim="0"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <Component id="jPanel1" alignment="0" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|     <DimensionLayout dim="1"> | ||||
|       <Group type="103" groupAlignment="0" attributes="0"> | ||||
|           <Component id="jPanel1" alignment="0" max="32767" attributes="0"/> | ||||
|       </Group> | ||||
|     </DimensionLayout> | ||||
|   </Layout> | ||||
|   <SubComponents> | ||||
|     <Container class="javax.swing.JPanel" name="jPanel1"> | ||||
| 
 | ||||
|       <Layout> | ||||
|         <DimensionLayout dim="0"> | ||||
|           <Group type="103" groupAlignment="0" attributes="0"> | ||||
|               <Group type="102" attributes="0"> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|                   <Group type="103" groupAlignment="0" attributes="0"> | ||||
|                       <Component id="jScrollPane1" pref="388" max="32767" attributes="0"/> | ||||
|                       <Group type="102" attributes="0"> | ||||
|                           <Component id="titleLabel" min="-2" max="-2" attributes="0"/> | ||||
|                           <EmptySpace max="32767" attributes="0"/> | ||||
|                           <Component id="addButton" min="-2" max="-2" attributes="0"/> | ||||
|                           <EmptySpace max="-2" attributes="0"/> | ||||
|                           <Component id="delButton" min="-2" max="-2" attributes="0"/> | ||||
|                       </Group> | ||||
|                   </Group> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|               </Group> | ||||
|           </Group> | ||||
|         </DimensionLayout> | ||||
|         <DimensionLayout dim="1"> | ||||
|           <Group type="103" groupAlignment="0" attributes="0"> | ||||
|               <Group type="102" alignment="1" attributes="0"> | ||||
|                   <Group type="103" groupAlignment="0" attributes="0"> | ||||
|                       <Group type="102" attributes="0"> | ||||
|                           <EmptySpace max="32767" attributes="0"/> | ||||
|                           <Component id="titleLabel" min="-2" max="-2" attributes="0"/> | ||||
|                       </Group> | ||||
|                       <Group type="102" alignment="1" attributes="0"> | ||||
|                           <Component id="delButton" min="-2" max="-2" attributes="0"/> | ||||
|                           <EmptySpace min="0" pref="0" max="32767" attributes="0"/> | ||||
|                       </Group> | ||||
|                       <Group type="102" alignment="0" attributes="0"> | ||||
|                           <EmptySpace min="0" pref="0" max="32767" attributes="0"/> | ||||
|                           <Component id="addButton" min="-2" max="-2" attributes="0"/> | ||||
|                       </Group> | ||||
|                   </Group> | ||||
|                   <EmptySpace max="-2" attributes="0"/> | ||||
|                   <Component id="jScrollPane1" min="-2" pref="278" max="-2" attributes="0"/> | ||||
|               </Group> | ||||
|           </Group> | ||||
|         </DimensionLayout> | ||||
|       </Layout> | ||||
|       <SubComponents> | ||||
|         <Container class="javax.swing.JScrollPane" name="jScrollPane1"> | ||||
|           <AuxValues> | ||||
|             <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> | ||||
|           </AuxValues> | ||||
| 
 | ||||
|           <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> | ||||
|           <SubComponents> | ||||
|             <Component class="javax.swing.JTable" name="varTable"> | ||||
|               <Properties> | ||||
|                 <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> | ||||
|                   <Color blue="ee" green="ee" id="Label.background" palette="3" red="ee" type="palette"/> | ||||
|                 </Property> | ||||
|                 <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> | ||||
|                   <Table columnCount="3" rowCount="0"> | ||||
|                     <Column editable="true" title="Type" type="java.lang.String"/> | ||||
|                     <Column editable="true" title="Name" type="java.lang.String"/> | ||||
|                     <Column editable="true" title="Description" type="java.lang.String"/> | ||||
|                   </Table> | ||||
|                 </Property> | ||||
|               </Properties> | ||||
|             </Component> | ||||
|           </SubComponents> | ||||
|         </Container> | ||||
|         <Component class="javax.swing.JLabel" name="titleLabel"> | ||||
|           <Properties> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel2.titleLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|           </Properties> | ||||
|         </Component> | ||||
|         <Component class="javax.swing.JButton" name="addButton"> | ||||
|           <Properties> | ||||
|             <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> | ||||
|               <Image iconType="3" name="/com/jme3/gde/materials/multiview/widgets/icons/picture_add.png"/> | ||||
|             </Property> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel2.addButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|             <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel2.addButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|             <Property name="alignmentX" type="float" value="0.5"/> | ||||
|           </Properties> | ||||
|           <Events> | ||||
|             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="addButtonActionPerformed"/> | ||||
|           </Events> | ||||
|         </Component> | ||||
|         <Component class="javax.swing.JButton" name="delButton"> | ||||
|           <Properties> | ||||
|             <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> | ||||
|               <Image iconType="3" name="/com/jme3/gde/materials/multiview/widgets/icons/picture_delete.png"/> | ||||
|             </Property> | ||||
|             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel2.delButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|             <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||
|               <ResourceString bundle="com/jme3/gde/shadernodedefinition/wizard/Bundle.properties" key="SNDefVisualPanel2.delButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||
|             </Property> | ||||
|             <Property name="alignmentX" type="float" value="0.5"/> | ||||
|           </Properties> | ||||
|           <Events> | ||||
|             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="delButtonActionPerformed"/> | ||||
|           </Events> | ||||
|         </Component> | ||||
|       </SubComponents> | ||||
|     </Container> | ||||
|   </SubComponents> | ||||
| </Form> | ||||
| @ -0,0 +1,209 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition.wizard; | ||||
| 
 | ||||
| import java.awt.EventQueue; | ||||
| import javax.swing.JPanel; | ||||
| import javax.swing.JTextField; | ||||
| import javax.swing.event.ListSelectionEvent; | ||||
| import javax.swing.event.ListSelectionListener; | ||||
| import javax.swing.table.DefaultTableModel; | ||||
| 
 | ||||
| public final class SNDefVisualPanel2 extends JPanel { | ||||
| 
 | ||||
|     private final Object[] emptyObj = {"", "", ""}; | ||||
|     private final String type; | ||||
| 
 | ||||
|     /** | ||||
|      * Creates new form SNDefVisualPanel2 | ||||
|      */ | ||||
|     public SNDefVisualPanel2(String type) { | ||||
|         initComponents(); | ||||
|         this.type = type; | ||||
|         titleLabel.setText(type); | ||||
|         varTable.getColumnModel().getSelectionModel().addListSelectionListener(new ExploreSelectionListener()); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return type; | ||||
|     } | ||||
| 
 | ||||
|     public String[][] getData() { | ||||
| 
 | ||||
|         DefaultTableModel model = (DefaultTableModel) varTable.getModel(); | ||||
|         String[][] data = new String[model.getRowCount()][3]; | ||||
|         for (int i = 0; i < model.getRowCount(); i++) { | ||||
|             data[i][0] = (String) model.getValueAt(i, 0); | ||||
|             data[i][1] = (String) model.getValueAt(i, 1); | ||||
|             data[i][2] = (String) model.getValueAt(i, 2); | ||||
|         } | ||||
| 
 | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     // Add this class to the body of MyTable class. | ||||
|     private class ExploreSelectionListener implements ListSelectionListener { | ||||
| 
 | ||||
|         public void valueChanged(ListSelectionEvent e) { | ||||
|             if (!e.getValueIsAdjusting()) {               | ||||
|                 int row = varTable.getSelectedRow(); | ||||
|                 int col = varTable.getSelectedColumn(); | ||||
|                 // Make sure we start with legal values. | ||||
|                 if (col < 0) { | ||||
|                     col = 0; | ||||
|                 } | ||||
|                 if (row < 0) { | ||||
|                     row = 0; | ||||
|                 } | ||||
|                 // Find the next editable cell. | ||||
|                 while (!varTable.isCellEditable(row, col)) { | ||||
|                     col++; | ||||
|                     if (col > varTable.getColumnCount() - 1) { | ||||
|                         col = 1; | ||||
|                         row = (row == varTable.getRowCount() - 1) ? 1 : row + 1; | ||||
|                     } | ||||
|                 } | ||||
|                 // Select the cell in the table. | ||||
|                 final int r = row, c = col; | ||||
|                 EventQueue.invokeLater(new Runnable() { | ||||
|                     public void run() { | ||||
|                         varTable.changeSelection(r, c, false, false); | ||||
|                     } | ||||
|                 }); | ||||
|                 // Edit. | ||||
|                 if (varTable.isCellEditable(row, col)) { | ||||
|                     varTable.editCellAt(row, col); | ||||
|                     ((JTextField) varTable.getEditorComponent()).selectAll(); | ||||
|                     varTable.getEditorComponent().requestFocusInWindow(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This method is called from within the constructor to initialize the form. | ||||
|      * WARNING: Do NOT modify this code. The content of this method is always | ||||
|      * regenerated by the Form Editor. | ||||
|      */ | ||||
|     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | ||||
|     private void initComponents() { | ||||
| 
 | ||||
|         jPanel1 = new javax.swing.JPanel(); | ||||
|         jScrollPane1 = new javax.swing.JScrollPane(); | ||||
|         varTable = new javax.swing.JTable(); | ||||
|         titleLabel = new javax.swing.JLabel(); | ||||
|         addButton = new javax.swing.JButton(); | ||||
|         delButton = new javax.swing.JButton(); | ||||
| 
 | ||||
|         varTable.setBackground(javax.swing.UIManager.getDefaults().getColor("Label.background")); | ||||
|         varTable.setModel(new javax.swing.table.DefaultTableModel( | ||||
|             new Object [][] { | ||||
| 
 | ||||
|             }, | ||||
|             new String [] { | ||||
|                 "Type", "Name", "Description" | ||||
|             } | ||||
|         ) { | ||||
|             Class[] types = new Class [] { | ||||
|                 java.lang.String.class, java.lang.String.class, java.lang.String.class | ||||
|             }; | ||||
| 
 | ||||
|             public Class getColumnClass(int columnIndex) { | ||||
|                 return types [columnIndex]; | ||||
|             } | ||||
|         }); | ||||
|         jScrollPane1.setViewportView(varTable); | ||||
| 
 | ||||
|         org.openide.awt.Mnemonics.setLocalizedText(titleLabel, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.titleLabel.text")); // NOI18N | ||||
| 
 | ||||
|         addButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materials/multiview/widgets/icons/picture_add.png"))); // NOI18N | ||||
|         org.openide.awt.Mnemonics.setLocalizedText(addButton, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.addButton.text")); // NOI18N | ||||
|         addButton.setToolTipText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.addButton.toolTipText")); // NOI18N | ||||
|         addButton.setAlignmentX(0.5F); | ||||
|         addButton.addActionListener(new java.awt.event.ActionListener() { | ||||
|             public void actionPerformed(java.awt.event.ActionEvent evt) { | ||||
|                 addButtonActionPerformed(evt); | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         delButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materials/multiview/widgets/icons/picture_delete.png"))); // NOI18N | ||||
|         org.openide.awt.Mnemonics.setLocalizedText(delButton, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.delButton.text")); // NOI18N | ||||
|         delButton.setToolTipText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.delButton.toolTipText")); // NOI18N | ||||
|         delButton.setAlignmentX(0.5F); | ||||
|         delButton.addActionListener(new java.awt.event.ActionListener() { | ||||
|             public void actionPerformed(java.awt.event.ActionEvent evt) { | ||||
|                 delButtonActionPerformed(evt); | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); | ||||
|         jPanel1.setLayout(jPanel1Layout); | ||||
|         jPanel1Layout.setHorizontalGroup( | ||||
|             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                 .addContainerGap() | ||||
|                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|                     .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 388, Short.MAX_VALUE) | ||||
|                     .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                         .addComponent(titleLabel) | ||||
|                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|                         .addComponent(addButton) | ||||
|                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||
|                         .addComponent(delButton))) | ||||
|                 .addContainerGap()) | ||||
|         ); | ||||
|         jPanel1Layout.setVerticalGroup( | ||||
|             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() | ||||
|                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|                     .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                         .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|                         .addComponent(titleLabel)) | ||||
|                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() | ||||
|                         .addComponent(delButton) | ||||
|                         .addGap(0, 0, Short.MAX_VALUE)) | ||||
|                     .addGroup(jPanel1Layout.createSequentialGroup() | ||||
|                         .addGap(0, 0, Short.MAX_VALUE) | ||||
|                         .addComponent(addButton))) | ||||
|                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||
|                 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE)) | ||||
|         ); | ||||
| 
 | ||||
|         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); | ||||
|         this.setLayout(layout); | ||||
|         layout.setHorizontalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|         ); | ||||
|         layout.setVerticalGroup( | ||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||
|             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||
|         ); | ||||
|     }// </editor-fold>//GEN-END:initComponents | ||||
| 
 | ||||
|     private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed | ||||
|         DefaultTableModel model = (DefaultTableModel) varTable.getModel(); | ||||
|         model.addRow(emptyObj); | ||||
|     }//GEN-LAST:event_addButtonActionPerformed | ||||
| 
 | ||||
|     private void delButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delButtonActionPerformed | ||||
|         DefaultTableModel model = (DefaultTableModel) varTable.getModel(); | ||||
|         int selRow = varTable.getSelectedRow(); | ||||
|         if (selRow >= 0) { | ||||
|             model.removeRow(selRow); | ||||
|         } | ||||
|     }//GEN-LAST:event_delButtonActionPerformed | ||||
| 
 | ||||
|     // Variables declaration - do not modify//GEN-BEGIN:variables | ||||
|     private javax.swing.JButton addButton; | ||||
|     private javax.swing.JButton delButton; | ||||
|     private javax.swing.JPanel jPanel1; | ||||
|     private javax.swing.JScrollPane jScrollPane1; | ||||
|     private javax.swing.JLabel titleLabel; | ||||
|     private javax.swing.JTable varTable; | ||||
|     // End of variables declaration//GEN-END:variables | ||||
| } | ||||
| @ -0,0 +1,222 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition.wizard; | ||||
| 
 | ||||
| import com.jme3.gde.core.assets.ProjectAssetManager; | ||||
| 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 javax.xml.transform.Templates; | ||||
| 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.api.templates.TemplateRegistrations; | ||||
| 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; | ||||
| 
 | ||||
| // TODO define position attribute | ||||
| @TemplateRegistrations({ | ||||
| @TemplateRegistration(folder = "Material", content = "../SNDefTemplate.j3sn", displayName = "#SNDefWizardIterator_displayName", iconBase = "com/jme3/gde/materialdefinition/icons/node.png", description = "../sNDef.html", scriptEngine = "freemarker"), | ||||
| @TemplateRegistration(folder = "Material", content = "../ShaderNodeSource", scriptEngine = "freemarker") | ||||
| }) | ||||
| @Messages("SNDefWizardIterator_displayName=Shader Node Definition") | ||||
| public final class SNDefWizardIterator implements WizardDescriptor.InstantiatingIterator<WizardDescriptor> { | ||||
| 
 | ||||
|     private int index; | ||||
| 
 | ||||
|     private WizardDescriptor wizard; | ||||
|     private List<WizardDescriptor.Panel<WizardDescriptor>> panels; | ||||
| 
 | ||||
|     private List<WizardDescriptor.Panel<WizardDescriptor>> getPanels() { | ||||
|         if (panels == null) { | ||||
|             panels = new ArrayList<WizardDescriptor.Panel<WizardDescriptor>>(); | ||||
|             // Change to default new file panel and add our panel at bottom | ||||
|             Project p = Templates.getProject(wizard); | ||||
|             SourceGroup[] groups = ProjectUtils.getSources(p).getSourceGroups(Sources.TYPE_GENERIC); | ||||
| 
 | ||||
|             // SimpleTargetChooser is the default new file panel, | ||||
|             // Add our panel at the bottom | ||||
|             WizardDescriptor.Panel<WizardDescriptor> advNewFilePanel = Templates.buildSimpleTargetChooser(p, groups).create(); | ||||
|             panels.add(advNewFilePanel); | ||||
|             panels.add(new SNDefWizardPanel1()); | ||||
|             panels.add(new SNDefWizardPanel2("Inputs")); | ||||
|             panels.add(new SNDefWizardPanel2("Outputs")); | ||||
|             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. Mainly | ||||
|                     // useful for getting the name of the target chooser to | ||||
|                     // appear in the list of steps. | ||||
|                     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; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Set<?> instantiate() throws IOException { | ||||
| 
 | ||||
|         FileObject createdFile = null; | ||||
| 
 | ||||
|         // Read Title from wizard  | ||||
|         // String HtmlTitle = (String) wizard.getProperty(SNDefWizardPanel1.TITLE); | ||||
|         // FreeMarker Template will get its variables from HashMap. | ||||
|         // HashMap key is the variable name. | ||||
|         SNDefVisualPanel1 panel1 = ((SNDefWizardPanel1) panels.get(1)).getComponent(); | ||||
|         SNDefVisualPanel2 panel2 = ((SNDefWizardPanel2) panels.get(2)).getComponent(); | ||||
|         SNDefVisualPanel2 panel3 = ((SNDefWizardPanel2) panels.get(3)).getComponent(); | ||||
| 
 | ||||
|         Map args = new HashMap(); | ||||
|         args.put("defName", panel1.getDefName()); | ||||
|         args.put("defType", panel1.getDefType()); | ||||
|         args.put("description", panel1.getDefDescription()); | ||||
|         args.put("inputParams", panel2.getData()); | ||||
|         args.put("outputParams", panel3.getData()); | ||||
| 
 | ||||
|         //Get the template and convert it: | ||||
|         FileObject tplSnd = Templates.getTemplate(wizard); | ||||
|         FileObject tplShd = tplSnd.getParent().getChildren()[1]; | ||||
|          | ||||
|         DataObject templateSnd = DataObject.find(tplSnd); | ||||
|         DataObject templateShd = DataObject.find(tplShd); | ||||
| 
 | ||||
|          | ||||
|          | ||||
|         //Get the package: | ||||
|         FileObject dir = Templates.getTargetFolder(wizard); | ||||
|         DataFolder df = DataFolder.findFolder(dir); | ||||
| 
 | ||||
|         ProjectAssetManager assetManager = new ProjectAssetManager(Templates.getProject(wizard),"assets"); | ||||
|          | ||||
|         //Get the class: | ||||
|         String targetName = Templates.getTargetName(wizard); | ||||
|         String shaderName = targetName; | ||||
|         if (panel1.getDefType().equals("Fragment")) { | ||||
|             shaderName += ".frag"; | ||||
|         } else if (panel1.getDefType().equals("Vertex")) { | ||||
|             shaderName += ".vert"; | ||||
|         } else { | ||||
|             shaderName += ".frag"; | ||||
|         } | ||||
|          | ||||
|         args.put("shaderSnippet",assetManager.getRelativeAssetPath(dir.getPath()+"/"+shaderName)); | ||||
| 
 | ||||
|         //Define the template from the above, | ||||
|         //passing the package, the file name, and the map of strings to the template: | ||||
|        // DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); | ||||
|          | ||||
|         | ||||
|         DataObject sobj = templateShd.createFromTemplate(df, shaderName, args); | ||||
|  DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); | ||||
|         //Obtain a FileObject: | ||||
|         createdFile = dobj.getPrimaryFile(); | ||||
| 
 | ||||
|         // Return the created file. | ||||
|         return Collections.singleton(createdFile); | ||||
|     } | ||||
| 
 | ||||
|     @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--; | ||||
|     } | ||||
| 
 | ||||
|     // If nothing unusual changes in the middle of the wizard, simply: | ||||
|     @Override | ||||
|     public void addChangeListener(ChangeListener l) { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void removeChangeListener(ChangeListener l) { | ||||
|     } | ||||
|     // If something changes dynamically (besides moving between panels), e.g. | ||||
|     // the number of panels changes in response to user input, then use | ||||
|     // ChangeSupport to implement add/removeChangeListener and call fireChange | ||||
|     // when needed | ||||
| 
 | ||||
|     // You could safely ignore this method. Is is here to keep steps which were | ||||
|     // there before this wizard was instantiated. It should be better handled | ||||
|     // by NetBeans Wizard API itself rather than needed to be implemented by a | ||||
|     // client code. | ||||
|     private String[] createSteps() { | ||||
|         String[] beforeSteps = (String[]) wizard.getProperty("WizardPanel_contentData"); | ||||
|         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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition.wizard; | ||||
| 
 | ||||
| import javax.swing.event.ChangeListener; | ||||
| import org.openide.WizardDescriptor; | ||||
| import org.openide.util.HelpCtx; | ||||
| 
 | ||||
| public class SNDefWizardPanel1 implements WizardDescriptor.Panel<WizardDescriptor> { | ||||
| 
 | ||||
|     /** | ||||
|      * The visual component that displays this panel. If you need to access the | ||||
|      * component from this class, just use getComponent(). | ||||
|      */ | ||||
|     private SNDefVisualPanel1 component; | ||||
| 
 | ||||
|     // Get the visual component for the panel. In this template, the component | ||||
|     // is kept separate. This can be more efficient: if the wizard is created | ||||
|     // but never displayed, or not all panels are displayed, it is better to | ||||
|     // create only those which really need to be visible. | ||||
|     @Override | ||||
|     public SNDefVisualPanel1 getComponent() { | ||||
|         if (component == null) { | ||||
|             component = new SNDefVisualPanel1(); | ||||
|         } | ||||
|         return component; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public HelpCtx getHelp() { | ||||
|         // Show no Help button for this panel: | ||||
|         return HelpCtx.DEFAULT_HELP; | ||||
|         // If you have context help: | ||||
|         // return new HelpCtx("help.key.here"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean isValid() { | ||||
|         // If it is always OK to press Next or Finish, then: | ||||
|         return true; | ||||
|         // If it depends on some condition (form filled out...) and | ||||
|         // this condition changes (last form field filled in...) then | ||||
|         // use ChangeSupport to implement add/removeChangeListener below. | ||||
|         // WizardDescriptor.ERROR/WARNING/INFORMATION_MESSAGE will also be useful. | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addChangeListener(ChangeListener l) { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void removeChangeListener(ChangeListener l) { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void readSettings(WizardDescriptor wiz) { | ||||
|         // use wiz.getProperty to retrieve previous panel state | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void storeSettings(WizardDescriptor wiz) { | ||||
|         // use wiz.putProperty to remember current panel state | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
| package com.jme3.gde.shadernodedefinition.wizard; | ||||
| 
 | ||||
| import javax.swing.event.ChangeListener; | ||||
| import org.openide.WizardDescriptor; | ||||
| import org.openide.util.HelpCtx; | ||||
| 
 | ||||
| public class SNDefWizardPanel2 implements WizardDescriptor.Panel<WizardDescriptor> { | ||||
| 
 | ||||
|     /** | ||||
|      * The visual component that displays this panel. If you need to access the | ||||
|      * component from this class, just use getComponent(). | ||||
|      */ | ||||
|     private SNDefVisualPanel2 component; | ||||
|     private final String type; | ||||
| 
 | ||||
|     public SNDefWizardPanel2(String type) { | ||||
|         this.type = type; | ||||
|     } | ||||
|      | ||||
|     // Get the visual component for the panel. In this template, the component | ||||
|     // is kept separate. This can be more efficient: if the wizard is created | ||||
|     // but never displayed, or not all panels are displayed, it is better to | ||||
|     // create only those which really need to be visible. | ||||
|     @Override | ||||
|     public SNDefVisualPanel2 getComponent() { | ||||
|         if (component == null) { | ||||
|             component = new SNDefVisualPanel2(type); | ||||
|         } | ||||
|         return component; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public HelpCtx getHelp() { | ||||
|         // Show no Help button for this panel: | ||||
|         return HelpCtx.DEFAULT_HELP; | ||||
|         // If you have context help: | ||||
|         // return new HelpCtx("help.key.here"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean isValid() { | ||||
|         // If it is always OK to press Next or Finish, then: | ||||
|         return true; | ||||
|         // If it depends on some condition (form filled out...) and | ||||
|         // this condition changes (last form field filled in...) then | ||||
|         // use ChangeSupport to implement add/removeChangeListener below. | ||||
|         // WizardDescriptor.ERROR/WARNING/INFORMATION_MESSAGE will also be useful. | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addChangeListener(ChangeListener l) { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void removeChangeListener(ChangeListener l) { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void readSettings(WizardDescriptor wiz) { | ||||
|         // use wiz.getProperty to retrieve previous panel state | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void storeSettings(WizardDescriptor wiz) { | ||||
|         // use wiz.putProperty to remember current panel state | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,16 @@ | ||||
| <!-- | ||||
| To change this license header, choose License Headers in Project Properties. | ||||
| To change this template file, choose Tools | Templates | ||||
| and open the template in the editor. | ||||
| --> | ||||
| <html> | ||||
|     <head> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||||
|     </head> | ||||
|     <body> | ||||
|         <!-- | ||||
|         TODO replace this with a description what your wizard is supposed to do. | ||||
|         This information will be displayed in the New Wizard Description area. | ||||
|         --> | ||||
|     </body> | ||||
| </html> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user