You can now directly edit shader node's code inside the shader node editor and benefit from a live reload feature of the shader.
This commit is contained in:
		
							parent
							
								
									a047376d70
								
							
						
					
					
						commit
						576e18b376
					
				| @ -28,7 +28,7 @@ import javax.swing.tree.TreeSelectionModel; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
|  * @author m327836 |  * @author Nehon | ||||||
|  */ |  */ | ||||||
| public class AddNodeDialog extends javax.swing.JDialog { | public class AddNodeDialog extends javax.swing.JDialog { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,5 @@ | |||||||
|  | ShaderEditPanel.closeButton.text= | ||||||
|  | ShaderEditPanel.shaderEditorPane.text= | ||||||
|  | ShaderEditPanel.closeButton.toolTipText=Close this panel | ||||||
|  | ShaderEditPanel.jToggleButton1.text=jToggleButton1 | ||||||
|  | ShaderEditPanel.headerText.text=jLabel1 | ||||||
| @ -135,6 +135,10 @@ public class Diagram extends JPanel implements MouseListener, MouseMotionListene | |||||||
|         repaint(); |         repaint(); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     protected void showEdit(NodePanel node) {                 | ||||||
|  |         parent.showShaderEditor(node.getName(),node.getType(),node.filePaths);         | ||||||
|  |     } | ||||||
|  |      | ||||||
|     public void notifyMappingCreation(Connection conn) { |     public void notifyMappingCreation(Connection conn) { | ||||||
|         parent.makeMapping(conn); |         parent.makeMapping(conn); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ import javax.swing.JPanel; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
|  * @author m327836 |  * @author Nehon | ||||||
|  */ |  */ | ||||||
| public class DraggablePanel extends JPanel implements MouseListener, MouseMotionListener { | public class DraggablePanel extends JPanel implements MouseListener, MouseMotionListener { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8" ?> | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
| 
 | 
 | ||||||
| <Form version="1.4" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | <Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | ||||||
|   <AuxValues> |   <AuxValues> | ||||||
|     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> |     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> | ||||||
|     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> |     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | ||||||
| @ -16,39 +16,72 @@ | |||||||
|   <Layout> |   <Layout> | ||||||
|     <DimensionLayout dim="0"> |     <DimensionLayout dim="0"> | ||||||
|       <Group type="103" groupAlignment="0" attributes="0"> |       <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|           <Component id="jScrollPane1" alignment="0" max="32767" attributes="0"/> |           <Component id="jSplitPane" alignment="0" pref="470" max="32767" attributes="0"/> | ||||||
|       </Group> |       </Group> | ||||||
|     </DimensionLayout> |     </DimensionLayout> | ||||||
|     <DimensionLayout dim="1"> |     <DimensionLayout dim="1"> | ||||||
|       <Group type="103" groupAlignment="0" attributes="0"> |       <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|           <Component id="jScrollPane1" alignment="0" max="32767" attributes="0"/> |           <Component id="jSplitPane" alignment="1" pref="333" max="32767" attributes="0"/> | ||||||
|       </Group> |       </Group> | ||||||
|     </DimensionLayout> |     </DimensionLayout> | ||||||
|   </Layout> |   </Layout> | ||||||
|   <SubComponents> |   <SubComponents> | ||||||
|     <Container class="javax.swing.JScrollPane" name="jScrollPane1"> |     <Container class="javax.swing.JSplitPane" name="jSplitPane"> | ||||||
|  |       <Properties> | ||||||
|  |         <Property name="dividerLocation" type="int" value="1"/> | ||||||
|  |         <Property name="dividerSize" type="int" value="6"/> | ||||||
|  |       </Properties> | ||||||
| 
 | 
 | ||||||
|       <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> |       <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/> | ||||||
|       <SubComponents> |       <SubComponents> | ||||||
|         <Container class="com.jme3.gde.materialdefinition.editor.Diagram" name="diagram1"> |         <Component class="com.jme3.gde.materialdefinition.editor.ShaderEditPanel" name="shaderEditPanel1"> | ||||||
|           <Properties> |           <Properties> | ||||||
|             <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> |             <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> | ||||||
|               <Color blue="99" green="99" red="99" type="rgb"/> |               <Dimension value="[0, 0]"/> | ||||||
|             </Property> |             </Property> | ||||||
|           </Properties> |           </Properties> | ||||||
|  |           <Constraints> | ||||||
|  |             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> | ||||||
|  |               <JSplitPaneConstraints position="left"/> | ||||||
|  |             </Constraint> | ||||||
|  |           </Constraints> | ||||||
|  |         </Component> | ||||||
|  |         <Container class="javax.swing.JScrollPane" name="jScrollPane1"> | ||||||
|  |           <Properties> | ||||||
|  |             <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> | ||||||
|  |               <Dimension value="[0, 0]"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="name" type="java.lang.String" value="" noResource="true"/> | ||||||
|  |           </Properties> | ||||||
|  |           <Constraints> | ||||||
|  |             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> | ||||||
|  |               <JSplitPaneConstraints position="right"/> | ||||||
|  |             </Constraint> | ||||||
|  |           </Constraints> | ||||||
| 
 | 
 | ||||||
|           <Layout> |           <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> | ||||||
|             <DimensionLayout dim="0"> |           <SubComponents> | ||||||
|               <Group type="103" groupAlignment="0" attributes="0"> |             <Container class="com.jme3.gde.materialdefinition.editor.Diagram" name="diagram1"> | ||||||
|                   <EmptySpace min="0" pref="398" max="32767" attributes="0"/> |               <Properties> | ||||||
|               </Group> |                 <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> | ||||||
|             </DimensionLayout> |                   <Color blue="99" green="99" red="99" type="rgb"/> | ||||||
|             <DimensionLayout dim="1"> |                 </Property> | ||||||
|               <Group type="103" groupAlignment="0" attributes="0"> |               </Properties> | ||||||
|                   <EmptySpace min="0" pref="298" max="32767" attributes="0"/> | 
 | ||||||
|               </Group> |               <Layout> | ||||||
|             </DimensionLayout> |                 <DimensionLayout dim="0"> | ||||||
|           </Layout> |                   <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|  |                       <EmptySpace min="0" pref="1591" max="32767" attributes="0"/> | ||||||
|  |                   </Group> | ||||||
|  |                 </DimensionLayout> | ||||||
|  |                 <DimensionLayout dim="1"> | ||||||
|  |                   <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|  |                       <EmptySpace min="0" pref="782" max="32767" attributes="0"/> | ||||||
|  |                   </Group> | ||||||
|  |                 </DimensionLayout> | ||||||
|  |               </Layout> | ||||||
|  |             </Container> | ||||||
|  |           </SubComponents> | ||||||
|         </Container> |         </Container> | ||||||
|       </SubComponents> |       </SubComponents> | ||||||
|     </Container> |     </Container> | ||||||
|  | |||||||
| @ -56,6 +56,7 @@ import java.awt.Point; | |||||||
| import java.awt.event.ActionEvent; | import java.awt.event.ActionEvent; | ||||||
| import java.awt.event.ActionListener; | import java.awt.event.ActionListener; | ||||||
| import java.beans.PropertyVetoException; | import java.beans.PropertyVetoException; | ||||||
|  | import java.io.File; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -69,6 +70,8 @@ import org.netbeans.core.spi.multiview.CloseOperationState; | |||||||
| import org.netbeans.core.spi.multiview.MultiViewElement; | import org.netbeans.core.spi.multiview.MultiViewElement; | ||||||
| import org.netbeans.core.spi.multiview.MultiViewElementCallback; | import org.netbeans.core.spi.multiview.MultiViewElementCallback; | ||||||
| import org.openide.awt.UndoRedo; | import org.openide.awt.UndoRedo; | ||||||
|  | import org.openide.filesystems.FileObject; | ||||||
|  | import org.openide.filesystems.FileUtil; | ||||||
| import org.openide.nodes.Children; | import org.openide.nodes.Children; | ||||||
| import org.openide.nodes.Node; | import org.openide.nodes.Node; | ||||||
| import org.openide.util.Exceptions; | import org.openide.util.Exceptions; | ||||||
| @ -103,10 +106,13 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme | |||||||
|         metaData = lkp.lookup(MatDefMetaData.class); |         metaData = lkp.lookup(MatDefMetaData.class); | ||||||
|         assert obj != null; |         assert obj != null; | ||||||
|         final EditableMatDefFile file = obj.getEditableFile(); |         final EditableMatDefFile file = obj.getEditableFile(); | ||||||
|  |         shaderEditPanel1.setVisible(false); | ||||||
|  |         shaderEditPanel1.setParent(this); | ||||||
|         reload(file, lkp);         |         reload(file, lkp);         | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void initDiagram(Lookup lkp) throws NumberFormatException { |     private void initDiagram(Lookup lkp) throws NumberFormatException { | ||||||
|  |         | ||||||
|         diagram1.clear(); |         diagram1.clear(); | ||||||
|         diagram1.setParent(this); |         diagram1.setParent(this); | ||||||
|          |          | ||||||
| @ -261,6 +267,45 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     public void refresh() { | ||||||
|  | 
 | ||||||
|  |         Lookup.Result<Material> resMat = obj.getLookup().lookupResult(Material.class); | ||||||
|  |         Collection<? extends Material> col = (Collection<? extends Material>) resMat.allInstances(); | ||||||
|  |         if (!col.isEmpty()) { | ||||||
|  |             Material material = col.iterator().next(); | ||||||
|  |             diagram1.refreshPreviews(material); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public void setModified(){ | ||||||
|  |         obj.setModified(true);         | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public ProjectAssetManager getAssetManager(){ | ||||||
|  |         return obj.getLookup().lookup(ProjectAssetManager.class); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public void showShaderEditor(String nodeName,NodePanel.NodeType type,List<String>pathList){ | ||||||
|  |          | ||||||
|  |         List<FileObject> fos = new ArrayList<FileObject>(); | ||||||
|  |         for (String path : pathList) {             | ||||||
|  |             FileObject text = FileUtil.toFileObject(new File(getAssetManager().getAbsoluteAssetPath(path))); | ||||||
|  |             fos.add(text); | ||||||
|  |         } | ||||||
|  |         shaderEditPanel1.setFiles(nodeName, type, fos); | ||||||
|  |         shaderEditPanel1.revalidate(); | ||||||
|  |         if(!shaderEditPanel1.isVisible() || jSplitPane.getDividerLocation() == jSplitPane.getMinimumDividerLocation()){ | ||||||
|  |             shaderEditPanel1.setVisible(true); | ||||||
|  |             jSplitPane.setDividerLocation(650); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public ShaderEditPanel getShaderEditor(){ | ||||||
|  |         return shaderEditPanel1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     private Node findNode(Node root, String key) { |     private Node findNode(Node root, String key) { | ||||||
|         if (root instanceof Selectable) { |         if (root instanceof Selectable) { | ||||||
|             Selectable s = (Selectable) root; |             Selectable s = (Selectable) root; | ||||||
| @ -289,38 +334,53 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme | |||||||
|     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents |     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | ||||||
|     private void initComponents() { |     private void initComponents() { | ||||||
| 
 | 
 | ||||||
|  |         jSplitPane = new javax.swing.JSplitPane(); | ||||||
|  |         shaderEditPanel1 = new com.jme3.gde.materialdefinition.editor.ShaderEditPanel(); | ||||||
|         jScrollPane1 = new javax.swing.JScrollPane(); |         jScrollPane1 = new javax.swing.JScrollPane(); | ||||||
|         diagram1 = new com.jme3.gde.materialdefinition.editor.Diagram(); |         diagram1 = new com.jme3.gde.materialdefinition.editor.Diagram(); | ||||||
| 
 | 
 | ||||||
|  |         jSplitPane.setDividerLocation(1); | ||||||
|  |         jSplitPane.setDividerSize(6); | ||||||
|  | 
 | ||||||
|  |         shaderEditPanel1.setMinimumSize(new java.awt.Dimension(0, 0)); | ||||||
|  |         jSplitPane.setLeftComponent(shaderEditPanel1); | ||||||
|  | 
 | ||||||
|  |         jScrollPane1.setMinimumSize(new java.awt.Dimension(0, 0)); | ||||||
|  |         jScrollPane1.setName(""); // NOI18N | ||||||
|  | 
 | ||||||
|         diagram1.setBackground(new java.awt.Color(153, 153, 153)); |         diagram1.setBackground(new java.awt.Color(153, 153, 153)); | ||||||
| 
 | 
 | ||||||
|         javax.swing.GroupLayout diagram1Layout = new javax.swing.GroupLayout(diagram1); |         javax.swing.GroupLayout diagram1Layout = new javax.swing.GroupLayout(diagram1); | ||||||
|         diagram1.setLayout(diagram1Layout); |         diagram1.setLayout(diagram1Layout); | ||||||
|         diagram1Layout.setHorizontalGroup( |         diagram1Layout.setHorizontalGroup( | ||||||
|             diagram1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |             diagram1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|             .addGap(0, 398, Short.MAX_VALUE) |             .addGap(0, 1591, Short.MAX_VALUE) | ||||||
|         ); |         ); | ||||||
|         diagram1Layout.setVerticalGroup( |         diagram1Layout.setVerticalGroup( | ||||||
|             diagram1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |             diagram1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|             .addGap(0, 298, Short.MAX_VALUE) |             .addGap(0, 782, Short.MAX_VALUE) | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         jScrollPane1.setViewportView(diagram1); |         jScrollPane1.setViewportView(diagram1); | ||||||
| 
 | 
 | ||||||
|  |         jSplitPane.setRightComponent(jScrollPane1); | ||||||
|  | 
 | ||||||
|         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); |         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); | ||||||
|         this.setLayout(layout); |         this.setLayout(layout); | ||||||
|         layout.setHorizontalGroup( |         layout.setHorizontalGroup( | ||||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|             .addComponent(jScrollPane1) |             .addComponent(jSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 470, Short.MAX_VALUE) | ||||||
|         ); |         ); | ||||||
|         layout.setVerticalGroup( |         layout.setVerticalGroup( | ||||||
|             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) |             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|             .addComponent(jScrollPane1) |             .addComponent(jSplitPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) | ||||||
|         ); |         ); | ||||||
|     }// </editor-fold>//GEN-END:initComponents |     }// </editor-fold>//GEN-END:initComponents | ||||||
|     // Variables declaration - do not modify//GEN-BEGIN:variables |     // Variables declaration - do not modify//GEN-BEGIN:variables | ||||||
|     private com.jme3.gde.materialdefinition.editor.Diagram diagram1; |     private com.jme3.gde.materialdefinition.editor.Diagram diagram1; | ||||||
|     private javax.swing.JScrollPane jScrollPane1; |     private javax.swing.JScrollPane jScrollPane1; | ||||||
|  |     private javax.swing.JSplitPane jSplitPane; | ||||||
|  |     private com.jme3.gde.materialdefinition.editor.ShaderEditPanel shaderEditPanel1; | ||||||
|     // End of variables declaration//GEN-END:variables |     // End of variables declaration//GEN-END:variables | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
| @ -573,6 +633,10 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme | |||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     public void reload(){ | ||||||
|  |           reload(obj.getEditableFile(), obj.getLookup()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     private void reload(final EditableMatDefFile file, final Lookup lkp) throws NumberFormatException { |     private void reload(final EditableMatDefFile file, final Lookup lkp) throws NumberFormatException { | ||||||
|         if (file.isLoaded()) { |         if (file.isLoaded()) { | ||||||
|             initDiagram(lkp); |             initDiagram(lkp); | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ | |||||||
| package com.jme3.gde.materialdefinition.editor; | package com.jme3.gde.materialdefinition.editor; | ||||||
| 
 | 
 | ||||||
| import com.jme3.gde.materialdefinition.fileStructure.ShaderNodeBlock; | import com.jme3.gde.materialdefinition.fileStructure.ShaderNodeBlock; | ||||||
|  | import com.jme3.gde.materialdefinition.fileStructure.leaves.DefinitionBlock; | ||||||
| import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock; | import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock; | ||||||
| import com.jme3.gde.materialdefinition.fileStructure.leaves.OutputMappingBlock; | import com.jme3.gde.materialdefinition.fileStructure.leaves.OutputMappingBlock; | ||||||
| import com.jme3.gde.materialdefinition.icons.Icons; | import com.jme3.gde.materialdefinition.icons.Icons; | ||||||
| @ -51,6 +52,7 @@ public class NodePanel extends DraggablePanel implements Selectable, PropertyCha | |||||||
|     private Color color; |     private Color color; | ||||||
|     private String name; |     private String name; | ||||||
|     private String techName; |     private String techName; | ||||||
|  |     protected List<String> filePaths= new ArrayList<String>(); | ||||||
| 
 | 
 | ||||||
| //    private List listeners = Collections.synchronizedList(new LinkedList()); | //    private List listeners = Collections.synchronizedList(new LinkedList()); | ||||||
| // | // | ||||||
| @ -106,6 +108,9 @@ public class NodePanel extends DraggablePanel implements Selectable, PropertyCha | |||||||
|         this.addPropertyChangeListener(WeakListeners.propertyChange(node, this)); |         this.addPropertyChangeListener(WeakListeners.propertyChange(node, this)); | ||||||
|         refresh(node); |         refresh(node); | ||||||
|         addKeyListener(this); |         addKeyListener(this); | ||||||
|  |         this.filePaths.addAll(def.getShadersPath()); | ||||||
|  |         String defPath = ((DefinitionBlock)node.getContents().get(0)).getPath(); | ||||||
|  |         this.filePaths.add(defPath); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -311,6 +316,19 @@ public class NodePanel extends DraggablePanel implements Selectable, PropertyCha | |||||||
|         header.addMouseMotionListener(labelMouseMotionListener); |         header.addMouseMotionListener(labelMouseMotionListener); | ||||||
|         header.setHorizontalAlignment(SwingConstants.LEFT); |         header.setHorizontalAlignment(SwingConstants.LEFT); | ||||||
|         header.setFont(new Font("Tahoma", Font.BOLD, 11)); |         header.setFont(new Font("Tahoma", Font.BOLD, 11)); | ||||||
|  |         header.addMouseListener(new MouseAdapter() { | ||||||
|  | 
 | ||||||
|  |             @Override | ||||||
|  |             public void mouseClicked(MouseEvent e) { | ||||||
|  |                 //if(e.getClickCount()==2){ | ||||||
|  |                     if (type==NodeType.Fragment || type == NodeType.Vertex) { | ||||||
|  |                       diagram.showEdit(NodePanel.this); | ||||||
|  |                     }             | ||||||
|  |                 //} | ||||||
|  |             } | ||||||
|  |                  | ||||||
|  |         }); | ||||||
|  |          | ||||||
|         content = new JPanel(); |         content = new JPanel(); | ||||||
|         content.setOpaque(false); |         content.setOpaque(false); | ||||||
|         GroupLayout contentLayout = new GroupLayout(content); |         GroupLayout contentLayout = new GroupLayout(content); | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ import javax.swing.SwingUtilities; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
|  * @author m327836 |  * @author Nehon | ||||||
|  */ |  */ | ||||||
| public class OutBusPanel extends DraggablePanel implements ComponentListener, Selectable, InOut { | public class OutBusPanel extends DraggablePanel implements ComponentListener, Selectable, InOut { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ package com.jme3.gde.materialdefinition.editor; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
|  * @author m327836 |  * @author Nehon | ||||||
|  */ |  */ | ||||||
| public interface Selectable { | public interface Selectable { | ||||||
|      |      | ||||||
|  | |||||||
| @ -0,0 +1,162 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | 
 | ||||||
|  | <Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> | ||||||
|  |   <NonVisualComponents> | ||||||
|  |     <Component class="javax.swing.ButtonGroup" name="buttonGroup1"> | ||||||
|  |     </Component> | ||||||
|  |   </NonVisualComponents> | ||||||
|  |   <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="header" alignment="0" max="32767" attributes="0"/> | ||||||
|  |           <Component id="jScrollPane1" alignment="0" pref="645" max="32767" attributes="0"/> | ||||||
|  |           <Group type="102" alignment="1" attributes="0"> | ||||||
|  |               <Component id="buttonPanel" max="32767" attributes="0"/> | ||||||
|  |               <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"> | ||||||
|  |               <Component id="header" min="-2" max="-2" attributes="0"/> | ||||||
|  |               <EmptySpace max="-2" attributes="0"/> | ||||||
|  |               <Component id="buttonPanel" min="-2" pref="21" max="-2" attributes="0"/> | ||||||
|  |               <EmptySpace max="-2" attributes="0"/> | ||||||
|  |               <Component id="jScrollPane1" pref="492" max="32767" attributes="0"/> | ||||||
|  |           </Group> | ||||||
|  |       </Group> | ||||||
|  |     </DimensionLayout> | ||||||
|  |   </Layout> | ||||||
|  |   <SubComponents> | ||||||
|  |     <Container class="javax.swing.JScrollPane" name="jScrollPane1"> | ||||||
|  |       <Properties> | ||||||
|  |         <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> | ||||||
|  |           <Dimension value="[0, 0]"/> | ||||||
|  |         </Property> | ||||||
|  |       </Properties> | ||||||
|  |       <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.JEditorPane" name="shaderEditorPane"> | ||||||
|  |           <Properties> | ||||||
|  |             <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | ||||||
|  |               <Border info="null"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||||
|  |               <ResourceString bundle="com/jme3/gde/materialdefinition/editor/Bundle.properties" key="ShaderEditPanel.shaderEditorPane.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||||
|  |             </Property> | ||||||
|  |           </Properties> | ||||||
|  |         </Component> | ||||||
|  |       </SubComponents> | ||||||
|  |     </Container> | ||||||
|  |     <Container class="javax.swing.JPanel" name="header"> | ||||||
|  |       <Properties> | ||||||
|  |         <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> | ||||||
|  |           <Color blue="d1" green="b4" id="Active Caption" palette="2" red="99" type="palette"/> | ||||||
|  |         </Property> | ||||||
|  |         <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | ||||||
|  |           <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> | ||||||
|  |             <EtchetBorder/> | ||||||
|  |           </Border> | ||||||
|  |         </Property> | ||||||
|  |       </Properties> | ||||||
|  | 
 | ||||||
|  |       <Layout> | ||||||
|  |         <DimensionLayout dim="0"> | ||||||
|  |           <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|  |               <Group type="102" alignment="0" attributes="0"> | ||||||
|  |                   <Component id="headerText" max="32767" attributes="0"/> | ||||||
|  |                   <EmptySpace max="-2" attributes="0"/> | ||||||
|  |                   <Component id="closeButton" min="-2" max="-2" attributes="0"/> | ||||||
|  |               </Group> | ||||||
|  |           </Group> | ||||||
|  |         </DimensionLayout> | ||||||
|  |         <DimensionLayout dim="1"> | ||||||
|  |           <Group type="103" groupAlignment="0" attributes="0"> | ||||||
|  |               <Group type="103" alignment="0" groupAlignment="3" attributes="0"> | ||||||
|  |                   <Component id="headerText" alignment="3" min="-2" pref="19" max="-2" attributes="0"/> | ||||||
|  |                   <Component id="closeButton" alignment="3" min="-2" pref="19" max="-2" attributes="0"/> | ||||||
|  |               </Group> | ||||||
|  |           </Group> | ||||||
|  |         </DimensionLayout> | ||||||
|  |       </Layout> | ||||||
|  |       <SubComponents> | ||||||
|  |         <Component class="javax.swing.JLabel" name="headerText"> | ||||||
|  |           <Properties> | ||||||
|  |             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> | ||||||
|  |               <Font name="Tahoma" size="11" style="1"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="horizontalAlignment" type="int" value="0"/> | ||||||
|  |             <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> | ||||||
|  |               <Image iconType="3" name="/com/jme3/gde/materialdefinition/icons/fragment.png"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||||
|  |               <ResourceString bundle="com/jme3/gde/materialdefinition/editor/Bundle.properties" key="ShaderEditPanel.headerText.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||||
|  |             </Property> | ||||||
|  |           </Properties> | ||||||
|  |         </Component> | ||||||
|  |         <Component class="javax.swing.JButton" name="closeButton"> | ||||||
|  |           <Properties> | ||||||
|  |             <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> | ||||||
|  |               <Color blue="d1" green="b4" id="Active Caption" palette="2" red="99" type="palette"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> | ||||||
|  |               <Font name="Tahoma" size="8" style="1"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> | ||||||
|  |               <Image iconType="3" name="/com/jme3/gde/materialdefinition/icons/out.png"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||||
|  |               <ResourceString bundle="com/jme3/gde/materialdefinition/editor/Bundle.properties" key="ShaderEditPanel.closeButton.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/materialdefinition/editor/Bundle.properties" key="ShaderEditPanel.closeButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||||
|  |             </Property> | ||||||
|  |             <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor"> | ||||||
|  |               <Insets value="[0, 0, 0, 0]"/> | ||||||
|  |             </Property> | ||||||
|  |           </Properties> | ||||||
|  |           <Events> | ||||||
|  |             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeButtonActionPerformed"/> | ||||||
|  |           </Events> | ||||||
|  |         </Component> | ||||||
|  |       </SubComponents> | ||||||
|  |     </Container> | ||||||
|  |     <Container class="javax.swing.JPanel" name="buttonPanel"> | ||||||
|  |       <Properties> | ||||||
|  |         <Property name="alignmentX" type="float" value="0.0"/> | ||||||
|  |         <Property name="alignmentY" type="float" value="0.0"/> | ||||||
|  |         <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> | ||||||
|  |           <Dimension value="[73, 29]"/> | ||||||
|  |         </Property> | ||||||
|  |       </Properties> | ||||||
|  | 
 | ||||||
|  |       <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> | ||||||
|  |       <SubComponents> | ||||||
|  |         <Component class="javax.swing.JToggleButton" name="jToggleButton1"> | ||||||
|  |           <Properties> | ||||||
|  |             <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> | ||||||
|  |               <ResourceString bundle="com/jme3/gde/materialdefinition/editor/Bundle.properties" key="ShaderEditPanel.jToggleButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> | ||||||
|  |             </Property> | ||||||
|  |           </Properties> | ||||||
|  |         </Component> | ||||||
|  |       </SubComponents> | ||||||
|  |     </Container> | ||||||
|  |   </SubComponents> | ||||||
|  | </Form> | ||||||
| @ -0,0 +1,244 @@ | |||||||
|  | /* | ||||||
|  |  * 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.materialdefinition.editor; | ||||||
|  | 
 | ||||||
|  | import com.jme3.gde.materialdefinition.icons.Icons; | ||||||
|  | import com.jme3.shader.Shader; | ||||||
|  | import java.awt.Component; | ||||||
|  | import java.awt.event.ActionEvent; | ||||||
|  | import java.awt.event.ActionListener; | ||||||
|  | import java.awt.event.KeyEvent; | ||||||
|  | import java.awt.event.KeyListener; | ||||||
|  | import java.beans.PropertyChangeEvent; | ||||||
|  | import java.beans.PropertyChangeListener; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.io.OutputStreamWriter; | ||||||
|  | import java.util.List; | ||||||
|  | import javax.swing.JPanel; | ||||||
|  | import javax.swing.JToggleButton; | ||||||
|  | import javax.swing.text.EditorKit; | ||||||
|  | import org.openide.filesystems.FileObject; | ||||||
|  | import org.openide.loaders.DataObject; | ||||||
|  | import org.openide.loaders.DataObjectNotFoundException; | ||||||
|  | import org.openide.text.CloneableEditorSupport; | ||||||
|  | import org.openide.util.Exceptions; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * | ||||||
|  |  * @author Nehon | ||||||
|  |  */ | ||||||
|  | public class ShaderEditPanel extends JPanel { | ||||||
|  | 
 | ||||||
|  |     private DataObject currentDataObject = null; | ||||||
|  |     private MatDefEditorlElement parent = null; | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Creates new form ShaderEditPanel | ||||||
|  |      */ | ||||||
|  |     public ShaderEditPanel() { | ||||||
|  |         initComponents(); | ||||||
|  |         String mime = "text/x-glsl"; | ||||||
|  |         EditorKit ek = CloneableEditorSupport.getEditorKit(mime); | ||||||
|  |         shaderEditorPane.setEditorKit(ek); | ||||||
|  |         shaderEditorPane.setContentType(mime); | ||||||
|  |         shaderEditorPane.addKeyListener(new KeyListener() { | ||||||
|  | 
 | ||||||
|  |             public void keyTyped(KeyEvent e) { | ||||||
|  |                 currentDataObject.setModified(true); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public void keyPressed(KeyEvent e) { | ||||||
|  |                 if ((e.getKeyCode() == KeyEvent.VK_S) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { | ||||||
|  |                     saveCurrent(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public void keyReleased(KeyEvent e) { | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setParent(MatDefEditorlElement parent) { | ||||||
|  |         this.parent = parent; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setFiles(String title, NodePanel.NodeType type, List<FileObject> fos) { | ||||||
|  | 
 | ||||||
|  |         headerText.setText(title); | ||||||
|  |         headerText.setIcon(Icons.getIconForShaderType(type)); | ||||||
|  |         boolean firstItem = true; | ||||||
|  |         for (Component component : buttonPanel.getComponents()) { | ||||||
|  |             buttonGroup1.remove((JToggleButton) component); | ||||||
|  |         } | ||||||
|  |         buttonPanel.removeAll(); | ||||||
|  |         buttonPanel.repaint(); | ||||||
|  | 
 | ||||||
|  |         for (FileObject fo : fos) { | ||||||
|  |             final Tab b = new Tab(); | ||||||
|  |             b.setText(fo.getNameExt()); | ||||||
|  |             buttonGroup1.add(b); | ||||||
|  |             try { | ||||||
|  |                 b.dataObject = DataObject.find(fo); | ||||||
|  |                 b.addActionListener(new ActionListener() { | ||||||
|  |                     public void actionPerformed(ActionEvent e) { | ||||||
|  |                         saveCurrent(); | ||||||
|  |                         try { | ||||||
|  |                             shaderEditorPane.setText(b.dataObject.getPrimaryFile().asText()); | ||||||
|  |                         } catch (IOException ex) { | ||||||
|  |                             Exceptions.printStackTrace(ex); | ||||||
|  |                         } | ||||||
|  |                         currentDataObject = b.dataObject; | ||||||
|  |                     } | ||||||
|  | 
 | ||||||
|  |                 }); | ||||||
|  |                 if (firstItem) { | ||||||
|  |                     shaderEditorPane.setText(fo.asText()); | ||||||
|  |                     currentDataObject = b.dataObject; | ||||||
|  |                     b.setSelected(true); | ||||||
|  |                     firstItem = false;                     | ||||||
|  |                 } | ||||||
|  |             } catch (IOException ex) { | ||||||
|  |                 Exceptions.printStackTrace(ex); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             buttonPanel.add(b); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void saveCurrent() { | ||||||
|  |         if (currentDataObject != null && currentDataObject.isModified()) { | ||||||
|  |             try { | ||||||
|  |                 OutputStreamWriter out = new OutputStreamWriter(currentDataObject.getPrimaryFile().getOutputStream()); | ||||||
|  |                 out.write(shaderEditorPane.getText(), 0, shaderEditorPane.getText().length()); | ||||||
|  |                 out.close(); | ||||||
|  |                 currentDataObject.setModified(false); | ||||||
|  |                 if(currentDataObject.getPrimaryFile().getExt().equalsIgnoreCase("j3sn")){ | ||||||
|  |                     parent.reload();                             | ||||||
|  |                 }                    | ||||||
|  |                 parent.refresh(); | ||||||
|  |             } catch (DataObjectNotFoundException ex) { | ||||||
|  |                 Exceptions.printStackTrace(ex); | ||||||
|  |             } catch (IOException ex) { | ||||||
|  |                 Exceptions.printStackTrace(ex); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private class Tab extends JToggleButton { | ||||||
|  | 
 | ||||||
|  |         DataObject dataObject;       | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 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. | ||||||
|  |      */ | ||||||
|  |     @SuppressWarnings("unchecked") | ||||||
|  |     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | ||||||
|  |     private void initComponents() { | ||||||
|  | 
 | ||||||
|  |         buttonGroup1 = new javax.swing.ButtonGroup(); | ||||||
|  |         jScrollPane1 = new javax.swing.JScrollPane(); | ||||||
|  |         shaderEditorPane = new javax.swing.JEditorPane(); | ||||||
|  |         header = new javax.swing.JPanel(); | ||||||
|  |         headerText = new javax.swing.JLabel(); | ||||||
|  |         closeButton = new javax.swing.JButton(); | ||||||
|  |         buttonPanel = new javax.swing.JPanel(); | ||||||
|  |         jToggleButton1 = new javax.swing.JToggleButton(); | ||||||
|  | 
 | ||||||
|  |         jScrollPane1.setMinimumSize(new java.awt.Dimension(0, 0)); | ||||||
|  | 
 | ||||||
|  |         shaderEditorPane.setBorder(null); | ||||||
|  |         shaderEditorPane.setText(org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.shaderEditorPane.text")); // NOI18N | ||||||
|  |         jScrollPane1.setViewportView(shaderEditorPane); | ||||||
|  | 
 | ||||||
|  |         header.setBackground(java.awt.SystemColor.activeCaption); | ||||||
|  |         header.setBorder(javax.swing.BorderFactory.createEtchedBorder()); | ||||||
|  | 
 | ||||||
|  |         headerText.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N | ||||||
|  |         headerText.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); | ||||||
|  |         headerText.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/fragment.png"))); // NOI18N | ||||||
|  |         org.openide.awt.Mnemonics.setLocalizedText(headerText, org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.headerText.text")); // NOI18N | ||||||
|  | 
 | ||||||
|  |         closeButton.setBackground(java.awt.SystemColor.activeCaption); | ||||||
|  |         closeButton.setFont(new java.awt.Font("Tahoma", 1, 8)); // NOI18N | ||||||
|  |         closeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/out.png"))); // NOI18N | ||||||
|  |         org.openide.awt.Mnemonics.setLocalizedText(closeButton, org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.closeButton.text")); // NOI18N | ||||||
|  |         closeButton.setToolTipText(org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.closeButton.toolTipText")); // NOI18N | ||||||
|  |         closeButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); | ||||||
|  |         closeButton.addActionListener(new java.awt.event.ActionListener() { | ||||||
|  |             public void actionPerformed(java.awt.event.ActionEvent evt) { | ||||||
|  |                 closeButtonActionPerformed(evt); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         javax.swing.GroupLayout headerLayout = new javax.swing.GroupLayout(header); | ||||||
|  |         header.setLayout(headerLayout); | ||||||
|  |         headerLayout.setHorizontalGroup( | ||||||
|  |             headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|  |             .addGroup(headerLayout.createSequentialGroup() | ||||||
|  |                 .addComponent(headerText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||||
|  |                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||||
|  |                 .addComponent(closeButton)) | ||||||
|  |         ); | ||||||
|  |         headerLayout.setVerticalGroup( | ||||||
|  |             headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|  |             .addGroup(headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | ||||||
|  |                 .addComponent(headerText, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE) | ||||||
|  |                 .addComponent(closeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)) | ||||||
|  |         ); | ||||||
|  | 
 | ||||||
|  |         buttonPanel.setAlignmentX(0.0F); | ||||||
|  |         buttonPanel.setAlignmentY(0.0F); | ||||||
|  |         buttonPanel.setPreferredSize(new java.awt.Dimension(73, 29)); | ||||||
|  |         buttonPanel.setLayout(new javax.swing.BoxLayout(buttonPanel, javax.swing.BoxLayout.LINE_AXIS)); | ||||||
|  | 
 | ||||||
|  |         org.openide.awt.Mnemonics.setLocalizedText(jToggleButton1, org.openide.util.NbBundle.getMessage(ShaderEditPanel.class, "ShaderEditPanel.jToggleButton1.text")); // NOI18N | ||||||
|  |         buttonPanel.add(jToggleButton1); | ||||||
|  | 
 | ||||||
|  |         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); | ||||||
|  |         this.setLayout(layout); | ||||||
|  |         layout.setHorizontalGroup( | ||||||
|  |             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|  |             .addComponent(header, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||||
|  |             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 645, Short.MAX_VALUE) | ||||||
|  |             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() | ||||||
|  |                 .addComponent(buttonPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | ||||||
|  |                 .addContainerGap()) | ||||||
|  |         ); | ||||||
|  |         layout.setVerticalGroup( | ||||||
|  |             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | ||||||
|  |             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() | ||||||
|  |                 .addComponent(header, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | ||||||
|  |                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||||
|  |                 .addComponent(buttonPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) | ||||||
|  |                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | ||||||
|  |                 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 492, Short.MAX_VALUE)) | ||||||
|  |         ); | ||||||
|  |     }// </editor-fold>//GEN-END:initComponents | ||||||
|  | 
 | ||||||
|  |     private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed | ||||||
|  |         setVisible(false); | ||||||
|  | 
 | ||||||
|  |         saveCurrent(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     }//GEN-LAST:event_closeButtonActionPerformed | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     // Variables declaration - do not modify//GEN-BEGIN:variables | ||||||
|  |     private javax.swing.ButtonGroup buttonGroup1; | ||||||
|  |     private javax.swing.JPanel buttonPanel; | ||||||
|  |     private javax.swing.JButton closeButton; | ||||||
|  |     private javax.swing.JPanel header; | ||||||
|  |     private javax.swing.JLabel headerText; | ||||||
|  |     private javax.swing.JScrollPane jScrollPane1; | ||||||
|  |     private javax.swing.JToggleButton jToggleButton1; | ||||||
|  |     private javax.swing.JEditorPane shaderEditorPane; | ||||||
|  |     // End of variables declaration//GEN-END:variables | ||||||
|  | } | ||||||
| @ -4,6 +4,7 @@ | |||||||
|  */ |  */ | ||||||
| package com.jme3.gde.materialdefinition.icons; | package com.jme3.gde.materialdefinition.icons; | ||||||
| 
 | 
 | ||||||
|  | import com.jme3.gde.materialdefinition.editor.NodePanel; | ||||||
| import javax.swing.ImageIcon; | import javax.swing.ImageIcon; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -27,4 +28,13 @@ public class Icons { | |||||||
|     public final static ImageIcon tech = new ImageIcon(Icons.class.getResource("tech.png")); |     public final static ImageIcon tech = new ImageIcon(Icons.class.getResource("tech.png")); | ||||||
|     public final static ImageIcon in = new ImageIcon(Icons.class.getResource("in.png")); |     public final static ImageIcon in = new ImageIcon(Icons.class.getResource("in.png")); | ||||||
|     public final static ImageIcon out = new ImageIcon(Icons.class.getResource("out.png")); |     public final static ImageIcon out = new ImageIcon(Icons.class.getResource("out.png")); | ||||||
|  |     public final static ImageIcon error = new ImageIcon(Icons.class.getResource("error.png")); | ||||||
|  | 
 | ||||||
|  |     public static ImageIcon getIconForShaderType(NodePanel.NodeType type) { | ||||||
|  |         if (type == NodePanel.NodeType.Fragment) { | ||||||
|  |             return frag; | ||||||
|  |         } else { | ||||||
|  |             return vert; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 47 KiB | 
| @ -17,7 +17,7 @@ import javax.swing.text.StyledDocument; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * |  * | ||||||
|  * @author m327836 |  * @author Nehon | ||||||
|  */ |  */ | ||||||
| public class DocFormatter { | public class DocFormatter { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ import com.jme3.gde.core.scene.PreviewRequest; | |||||||
| import com.jme3.gde.core.scene.SceneApplication; | import com.jme3.gde.core.scene.SceneApplication; | ||||||
| import com.jme3.gde.core.scene.SceneListener; | import com.jme3.gde.core.scene.SceneListener; | ||||||
| import com.jme3.gde.core.scene.SceneRequest; | import com.jme3.gde.core.scene.SceneRequest; | ||||||
|  | import com.jme3.gde.materialdefinition.icons.Icons; | ||||||
| import com.jme3.material.MatParam; | import com.jme3.material.MatParam; | ||||||
| import com.jme3.material.Material; | import com.jme3.material.Material; | ||||||
| import com.jme3.math.FastMath; | import com.jme3.math.FastMath; | ||||||
| @ -111,6 +112,11 @@ public class MaterialPreviewRenderer implements SceneListener { | |||||||
|                                     SceneApplication.getApplication().createPreview(request); |                                     SceneApplication.getApplication().createPreview(request); | ||||||
|                                 } |                                 } | ||||||
|                             } catch (Exception e) { |                             } catch (Exception e) { | ||||||
|  |                                 java.awt.EventQueue.invokeLater(new Runnable() { | ||||||
|  |                                     public void run() { | ||||||
|  |                                         label.setIcon(Icons.error); | ||||||
|  |                                     } | ||||||
|  |                                 }); | ||||||
|                                 Logger.getLogger(MaterialPreviewRenderer.class.getName()).log(Level.SEVERE, "Error rendering material{0}", e.getMessage()); |                                 Logger.getLogger(MaterialPreviewRenderer.class.getName()).log(Level.SEVERE, "Error rendering material{0}", e.getMessage()); | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
| @ -148,6 +154,12 @@ public class MaterialPreviewRenderer implements SceneListener { | |||||||
|             //the following code will output the error |             //the following code will output the error | ||||||
|             //System.err.println(e.getMessage()); |             //System.err.println(e.getMessage()); | ||||||
|             Logger.getLogger(MaterialDebugAppState.class.getName()).log(Level.SEVERE, e.getMessage()); |             Logger.getLogger(MaterialDebugAppState.class.getName()).log(Level.SEVERE, e.getMessage()); | ||||||
|  |              | ||||||
|  |             java.awt.EventQueue.invokeLater(new Runnable() { | ||||||
|  |                 public void run() { | ||||||
|  |                     label.setIcon(Icons.error); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user