From 6c2c00ee7f33ec46f79eba11c349f766cb207ec0 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 29 Apr 2019 10:39:23 -0400
Subject: [PATCH] Material pane

---
 ObjEditor.java       |  679 ++++++++++++++++++--------------------------
 BiparamEditor.java   |    6 
 RandomEditor.java    |    4 
 PointFlowEditor.java |   28 +
 MorphEditor.java     |    6 
 CameraPane.java      |    4 
 SwitchEditor.java    |    6 
 cSpringEditor.java   |   38 +-
 GroupEditor.java     |   55 +-
 TorusEditor.java     |    6 
 MocapEditor.java     |    8 
 ParticleEditor.java  |   28 +
 KleinEditor.java     |    4 
 13 files changed, 382 insertions(+), 490 deletions(-)

diff --git a/BiparamEditor.java b/BiparamEditor.java
index c04a299..16a02c3 100644
--- a/BiparamEditor.java
+++ b/BiparamEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class BiparamEditor extends ObjEditor implements ItemListener, ChangeListener, ObjectUI, ActionListener
 {
     BiparamEditor(Biparam inBP, GroupEditor callee)
@@ -263,8 +265,8 @@
     Biparam biparam;
     //JLabel uDivsLabel;
     //JLabel vDivsLabel;
-    NumberSlider uDivsField;
-    NumberSlider vDivsField;
+    cNumberSlider uDivsField;
+    cNumberSlider vDivsField;
     JCheckBox optionCB;
 
 	ObjectUI parent;
diff --git a/CameraPane.java b/CameraPane.java
index 55e5ab4..296ba69 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -12747,7 +12747,7 @@
               "MUL final.y, fragment.texcoord[0].x, c256;" +
               "FLR final.x, final.y;" +
               "SUB final.y, final.y, final.x;" +
-              "MUL final.x, final.x, c256i;" +
+              //"MUL final.x, final.x, c256i;" +
               "MOV final.z, zero.x;" +
               "MOV final.a, one.w;":""
               ) +
@@ -12755,7 +12755,7 @@
               "MUL final.y, fragment.texcoord[0].y, c256;" +
               "FLR final.x, final.y;" +
               "SUB final.y, final.y, final.x;" +
-              "MUL final.x, final.x, c256i;" +
+              //"MUL final.x, final.x, c256i;" +
               "MOV final.z, zero.x;" +
               "MOV final.a, one.w;":""
               ) +
diff --git a/GroupEditor.java b/GroupEditor.java
index 22fce0e..9fa6f6d 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -12,6 +12,7 @@
 import com.jme.math.Vector3f;
 import com.jme.renderer.ColorRGBA;
 
+import grafeme.ui.*;
 //import buoy.widget.BFileChooser;
 
 class GroupEditor extends ObjEditor implements //iParse, //iCallBack,
@@ -604,15 +605,15 @@
         oe.toolbarPanel.add(radioPanel); //, oe.aConstraints);
 	}
         
-        void AddOptions(JPanel panel, GridBagConstraints constraints)
+        void AddOptions(cGridBag panel) //, GridBagConstraints constraints)
         {
-        	constraints.gridx = 0;
-        	constraints.gridy = 0;
-                panel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST), constraints);
+        	//constraints.gridx = 0;
+        	//constraints.gridy = 0;
+                panel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST)); //, constraints);
                 fastCB.setToolTipText("Fast mode");
                                 fastCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT), constraints);
+        	//constraints.gridy += 1;
+                panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints);
                 supportCB.setToolTipText("Enabled rigging");
                                 supportCB.addItemListener(this);
 
@@ -620,26 +621,26 @@
         //        panel.add(localCB = new cCheckBox("Local", CameraPane.LOCALTRANSFORM), constraints);
         //                        localCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(crowdCB = new cCheckBox("Crowd", Globals.CROWD), constraints);
+        	//constraints.gridy += 1;
+                panel.add(crowdCB = new cCheckBox("Crowd", Globals.CROWD)); //, constraints);
                 crowdCB.setToolTipText("Used for crowds");
                                 crowdCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(smoothCB = new cCheckBox("Inertia", CameraPane.INERTIA), constraints);
+        	//constraints.gridy += 1;
+                panel.add(smoothCB = new cCheckBox("Inertia", CameraPane.INERTIA)); //, constraints);
                 smoothCB.setToolTipText("Snapping delay");
                                 smoothCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(slowCB = new cCheckBox("Slow", CameraPane.SLOWPOSE), constraints);
+        	//constraints.gridy += 1;
+                panel.add(slowCB = new cCheckBox("Slow", CameraPane.SLOWPOSE)); //, constraints);
                 slowCB.setToolTipText("Smooth interpolation");
                                 slowCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE), constraints);
+        	//constraints.gridy += 1;
+                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE)); //, constraints);
                 boxCB.setToolTipText("Display bounding boxes");
                                 boxCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE), constraints);
+        	//constraints.gridy += 1;
+                panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE)); //, constraints);
                 zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel");
                                 zoomBoxCB.addItemListener(this);
 
@@ -650,16 +651,16 @@
             if (false)
             {
                 // handled in scripts
-        	constraints.gridy += 1;
-                panel.add(speakerCameraCB = new cCheckBox("Cam", CameraPane.SPEAKERCAMERA), constraints);
+        	//constraints.gridy += 1;
+                panel.add(speakerCameraCB = new cCheckBox("Cam", CameraPane.SPEAKERCAMERA)); //, constraints);
                                 speakerCameraCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(speakerFocusCB = new cCheckBox("Focus", CameraPane.SPEAKERFOCUS), constraints);
+        	//constraints.gridy += 1;
+                panel.add(speakerFocusCB = new cCheckBox("Focus", CameraPane.SPEAKERFOCUS)); //, constraints);
                                 speakerFocusCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(smoothfocusCB = new cCheckBox("Smooth", CameraPane.SMOOTHFOCUS), constraints);
+        	//constraints.gridy += 1;
+                panel.add(smoothfocusCB = new cCheckBox("Smooth", CameraPane.SMOOTHFOCUS)); //, constraints);
                                 smoothfocusCB.addItemListener(this);
             }
 
@@ -667,12 +668,12 @@
 //panel.add(debugCB = new cCheckBox("Debug", CameraPane.DEBUG), constraints);
 //                debugCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(oeilCB = new cCheckBox("Eye", CameraPane.OEIL), constraints);
+        	//constraints.gridy += 1;
+                panel.add(oeilCB = new cCheckBox("Eye", CameraPane.OEIL)); //, constraints);
                                 oeilCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT), constraints);
+        	//constraints.gridy += 1;
+                panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT)); //, constraints);
                 lookAtCB.setToolTipText("Look-at target");
                                 lookAtCB.addItemListener(this);
 
@@ -2916,7 +2917,7 @@
                                 
                                 child.editWindow = null; // ???????????
 			}
-			objEditor.ctrlPanel.revalidate();
+			objEditor.ctrlPanel.validate();
 			//objEditor.jTree.clearSelection();
 			//objEditor.ResetSliders();
                     refreshContents(true);
diff --git a/KleinEditor.java b/KleinEditor.java
index d5fbd4a..a7e7253 100644
--- a/KleinEditor.java
+++ b/KleinEditor.java
@@ -8,6 +8,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class KleinEditor extends BiparamEditor implements ActionListener, ObjectUI
 {
     KleinEditor(Klein inSph, GroupEditor callee)
@@ -94,7 +96,7 @@
     }
 
     Klein klein;
-    NumberSlider radiusField;
+    cNumberSlider radiusField;
 
 	public ObjEditor GetEditor()
 	{
diff --git a/MocapEditor.java b/MocapEditor.java
index fdce845..ea3ee95 100644
--- a/MocapEditor.java
+++ b/MocapEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class MocapEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -264,9 +266,9 @@
 	
     Mocap mocap;
     //JLabel frameLabel;
-    NumberSlider frameField;
-    NumberSlider firstField;
-    NumberSlider lastField;
+    cNumberSlider frameField;
+    cNumberSlider firstField;
+    cNumberSlider lastField;
     //JLabel speedLabel;
     //NumberSlider offsetField;
 
diff --git a/MorphEditor.java b/MorphEditor.java
index e75a552..3a0833f 100644
--- a/MorphEditor.java
+++ b/MorphEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class MorphEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -64,7 +66,7 @@
 //            speedField = AddSlider(oe.ctrlPanel, "Damp: ", 0, 500, frameselect.speed);
 //            Return();
             
-            morphField = new NumberSlider[morphnode.morphobject.Size()];
+            morphField = new cNumberSlider[morphnode.morphobject.Size()];
             
             for (int i=0; i<morphnode.morphobject.Size(); i++)
             {
@@ -192,7 +194,7 @@
     MorphNode morphnode;
     
     //JLabel morphLabel[];
-    NumberSlider morphField[];
+    cNumberSlider morphField[];
 
 	ObjectUI parent;
 	
diff --git a/ObjEditor.java b/ObjEditor.java
index 877e81e..e07d192 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -355,9 +355,9 @@
         toolbarPanel.setName("Toolbar");
         treePanel = new JPanel();
         treePanel.setName("Tree");
-        ctrlPanel = new JPanel(); // new GridBagLayout());
+        ctrlPanel = new cGridBag(); // new GridBagLayout());
         ctrlPanel.setName("Edit");
-        materialPanel = new JPanel();
+        materialPanel = new cGridBag().setVertical(true);
         materialPanel.setName("Material");
         /*JTextPane*/
         infoarea = createTextPane();
@@ -387,7 +387,7 @@
         toolbarPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
         treePanel.setLayout(new GridBagLayout());
         ctrlPanel.setLayout(new GridBagLayout());
-        materialPanel.setLayout(new GridBagLayout());
+        //materialPanel.setLayout(new GridBagLayout());
 
         aConstraints = new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
                 GridBagConstraints.NORTHEAST, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0);
@@ -814,65 +814,47 @@
         return combo;
     }
 
-    NumberSlider AddSlider(JPanel ctrlPanel, String label, double min, double max, double current, double pow)
+    cNumberSlider AddSlider(cGridBag ctrlPanel, String label, double min, double max, double current, double pow)
     {
-        NumberSlider combo;
+        cGridBag control = new cGridBag();
+            
+        cNumberSlider combo;
 
         JLabel jlabel = new JLabel(label);
-
-        aConstraints.fill = GridBagConstraints.VERTICAL;
         jlabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.gridwidth = 1;
-        ctrlPanel.add(jlabel, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        aConstraints.gridx += 1;
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(combo = new NumberSlider(min, max, pow), aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = 1;
-
+        control.add(jlabel); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        control.add(combo = new cNumberSlider(this, min, max, pow)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         combo.setFloat(current);
-
-        combo.label = jlabel;
-
-        combo.addChangeListener(this);
-
+        
+        ctrlPanel.add(control);
+        
         return combo;
     }
 
-    NumberSlider AddSlider(JPanel ctrlPanel, String label, int min, int max, int current)
+    cNumberSlider AddSlider(cGridBag ctrlPanel, String label, int min, int max, int current)
     {
-        NumberSlider combo;
+        cGridBag control = new cGridBag();
+        
+        cNumberSlider combo;
 
         JLabel jlabel = new JLabel(label);
-
-        aConstraints.fill = GridBagConstraints.VERTICAL;
         jlabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.gridwidth = 2;
-        ctrlPanel.add(jlabel, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        aConstraints.gridx += 1;
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(combo = new NumberSlider(min, max), aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = 1;
-
+        ctrlPanel.add(jlabel); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        ctrlPanel.add(combo = new cNumberSlider(this, min, max)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         combo.setInteger(current);
 
-        combo.label = jlabel;
-
-        combo.addChangeListener(this);
-
+        ctrlPanel.add(control);
+        
         return combo;
     }
 
-    JTextArea AddText(JPanel ctrlPanel, String name)
+    JTextArea AddText(cGridBag ctrlPanel, String name)
     {
         JTextArea text;
 
         aConstraints.fill = GridBagConstraints.HORIZONTAL;
         aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(text = new JTextArea(name), aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        ctrlPanel.add(text = new JTextArea(name)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         text.addCaretListener(this);
         aConstraints.gridx += 1;
         aConstraints.gridwidth = 1;
@@ -902,6 +884,13 @@
     {
         j.removeChangeListener(this);
         objEditor.ctrlPanel.remove(j.label);
+        objEditor.ctrlPanel.remove(j);
+    }
+
+    void Remove(cNumberSlider j)
+    {
+        j.removeChangeListener(this);
+        //objEditor.ctrlPanel.remove(j.label);
         objEditor.ctrlPanel.remove(j);
     }
 
@@ -1296,11 +1285,11 @@
 
         tabbedPane.add(FSPane = new cFileSystemPane(this));
 
-        optionsPanel = new JPanel(new GridBagLayout());
+        optionsPanel = new cGridBag().setVertical(true);
 
         optionsPanel.setName("Options");
         
-        AddOptions(optionsPanel, aConstraints);
+        AddOptions(optionsPanel); //, aConstraints);
         
         tabbedPane.add(optionsPanel);
         
@@ -1411,7 +1400,7 @@
         });
     }
 
-    void AddOptions(JPanel panel, GridBagConstraints constraints)
+    void AddOptions(cGridBag panel) //, GridBagConstraints constraints)
     {
     }
     
@@ -1426,260 +1415,175 @@
         ctrlPanel.removeAll();
     }
 
-    void SetupMaterial(JPanel ctrlPanel)
+    void SetupMaterial(cGridBag ctrlPanel)
     {
-        aConstraints.weighty = 0;
-        //aConstraints.weightx = 1;
-                /*
+         /*
         ctrlPanel.add(materialLabel = new JLabel("MATERIAL : "), aConstraints);
         materialLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
          */
 
-        aConstraints.gridwidth = 1;
-        ctrlPanel.add(createMaterialButton = new cButton("Create"), aConstraints);
-        aConstraints.gridx += 1;
-        aConstraints.weighty = 0;
-        aConstraints.gridwidth = 1;
+        cGridBag editBar = new cGridBag().setVertical(false);
+            
+        editBar.add(createMaterialButton = new cButton("Create")); // , aConstraints);
 
         /*
         ctrlPanel.add(resetSlidersButton = new cButton("Reset All"), aConstraints);
-        aConstraints.gridx += 1;
-        aConstraints.weighty = 0;
-        aConstraints.gridwidth = 1;
          */
 
-        ctrlPanel.add(clearMaterialButton = new cButton("Clear"), aConstraints);
-        aConstraints.gridx += 1;
+        editBar.add(clearMaterialButton = new cButton("Clear")); // , aConstraints);
+        editBar.add(resetSlidersButton = new cButton("Reset")); // , aConstraints);
+        editBar.add(propagateToggle = new cCheckBox("Prop", propagate)); // , aConstraints);
+        editBar.add(multiplyToggle = new cCheckBox("Mult", false)); // , aConstraints);
 
-        ctrlPanel.add(resetSlidersButton = new cButton("Reset"), aConstraints);
-
-        aConstraints.gridx += 1;
-
-        ctrlPanel.add(propagateToggle = new cCheckBox("Prop", propagate), aConstraints);
-
-        aConstraints.gridx += 1;
-
-        ctrlPanel.add(multiplyToggle = new cCheckBox("Mult", false), aConstraints);
-
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.weighty = 0;
-        aConstraints.gridwidth = 1;
+        ctrlPanel.add(editBar);
+        
         /**/
         //aConstraints.weighty = 0;
         ////aConstraints.weightx = 1;
         //aConstraints.weighty = 1;
         aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // 100;
         //aConstraints.gridx += 1;
-        ctrlPanel.add(new JLabel("----------------------------------"), aConstraints);
-        aConstraints.weighty = 0;
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
 
-        ctrlPanel.add(colorLabel = new JLabel("Color/hue"), aConstraints);
-        colorLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        //aConstraints.weightx = 0;
-        ctrlPanel.add(colorField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        JPanel colorPanel = new JPanel(new BorderLayout());
+        colorPanel.setBorder(BorderFactory.createLineBorder(Color.black));
+        
+        cGridBag colorSection = new cGridBag().setVertical(true);
+        
+        colorPanel.add(colorSection);
+        
+        cGridBag color = new cGridBag();
+                color.add(colorLabel = new JLabel("Color/hue")); // , aConstraints);
+                colorLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                color.add(colorField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        colorSection.add(color);
 
-        ctrlPanel.add(modulationLabel = new JLabel("Saturation"), aConstraints);
-        modulationLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(modulationField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag modulation = new cGridBag();
+                modulation.add(modulationLabel = new JLabel("Saturation")); // , aConstraints);
+                modulationLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                modulation.add(modulationField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        colorSection.add(modulation);
 
-        ctrlPanel.add(textureLabel = new JLabel("Texture"), aConstraints);
-        textureLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(textureField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag texture = new cGridBag();
+                texture.add(textureLabel = new JLabel("Texture")); // , aConstraints);
+                textureLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                texture.add(textureField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        colorSection.add(texture);
 
-        ctrlPanel.add(anisoLabel = new JLabel("AnisoU"), aConstraints);
-        anisoLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(anisoField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag anisoU = new cGridBag();
+                anisoU.add(anisoLabel = new JLabel("AnisoU")); // , aConstraints);
+                anisoLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                anisoU.add(anisoField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        colorSection.add(anisoU);
 
-        ctrlPanel.add(anisoVLabel = new JLabel("AnisoV"), aConstraints);
-        anisoVLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(anisoVField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag anisoV = new cGridBag();
+                anisoV.add(anisoVLabel = new JLabel("AnisoV")); // , aConstraints);
+                anisoVLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                anisoV.add(anisoVField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        colorSection.add(anisoV);
 
-        ctrlPanel.add(shadowbiasLabel = new JLabel("Shadowbias"), aConstraints);
-        shadowbiasLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(shadowbiasField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag shadowbias = new cGridBag();
+                shadowbias.add(shadowbiasLabel = new JLabel("Shadowbias")); // , aConstraints);
+                shadowbiasLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        colorSection.add(shadowbias);
 
-        //aConstraints.weighty = 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // 100;
-        //aConstraints.gridx += 1;
-        ctrlPanel.add(new JLabel("----------------------------------"), aConstraints);
-        aConstraints.weighty = 0;
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        ctrlPanel.add(colorPanel);
+        
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
+        
+        JPanel diffusePanel = new JPanel(new BorderLayout());
+        diffusePanel.setBorder(BorderFactory.createLineBorder(Color.black));
+        
+        cGridBag diffuseSection = new cGridBag().setVertical(true);
+        
+        diffusePanel.add(diffuseSection);
+        
+        cGridBag diffuse = new cGridBag();
+                diffuse.add(diffuseLabel = new JLabel("Diffuse")); // , aConstraints);
+                diffuseLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                diffuse.add(diffuseField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(diffuse);
 
-        ctrlPanel.add(diffuseLabel = new JLabel("Diffuse"), aConstraints);
-        diffuseLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(diffuseField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag diffuseness = new cGridBag();
+                diffuseness.add(diffusenessLabel = new JLabel("Diffusion")); // , aConstraints);
+                diffusenessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                diffuseness.add(diffusenessField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(diffuseness);
 
-        ctrlPanel.add(diffusenessLabel = new JLabel("Diffusion"), aConstraints);
-        diffusenessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(diffusenessField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag selfshadow = new cGridBag();
+                selfshadow.add(selfshadowLabel = new JLabel("Selfshadow")); // , aConstraints);
+                selfshadowLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                selfshadow.add(selfshadowField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(selfshadow);
 
-        ctrlPanel.add(selfshadowLabel = new JLabel("Selfshadow"), aConstraints);
-        selfshadowLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(selfshadowField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag sheen = new cGridBag();
+                sheen.add(sheenLabel = new JLabel("Sheen")); // , aConstraints);
+                sheenLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                sheen.add(sheenField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(sheen);
 
-        ctrlPanel.add(sheenLabel = new JLabel("Sheen"), aConstraints);
-        sheenLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(sheenField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag subsurface = new cGridBag();
+                subsurface.add(subsurfaceLabel = new JLabel("Subsurface")); // , aConstraints);
+                subsurfaceLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                subsurface.add(subsurfaceField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        diffuseSection.add(subsurface);
 
-        ctrlPanel.add(subsurfaceLabel = new JLabel("Subsurface"), aConstraints);
-        subsurfaceLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(subsurfaceField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag shadow = new cGridBag();
+                shadow.add(shadowLabel = new JLabel("Shadowing")); // , aConstraints);
+                shadowLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                shadow.add(shadowField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(shadow);
 
-        ctrlPanel.add(shadowLabel = new JLabel("Shadowing"), aConstraints);
-        shadowLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(shadowField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag fakedepth = new cGridBag();
+                fakedepth.add(fakedepthLabel = new JLabel("Fakedepth")); // , aConstraints);
+                fakedepthLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                fakedepth.add(fakedepthField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(fakedepth);
 
-        ctrlPanel.add(fakedepthLabel = new JLabel("Fakedepth"), aConstraints);
-        fakedepthLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(fakedepthField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        ctrlPanel.add(diffusePanel);
+        
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
+        
+        JPanel specularPanel = new JPanel(new BorderLayout());
+        specularPanel.setBorder(BorderFactory.createLineBorder(Color.black));
+        
+        cGridBag specularSection = new cGridBag().setVertical(true);
+        
+        specularPanel.add(specularSection);
 
-        //aConstraints.weighty = 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // 100;
-        //aConstraints.gridx += 1;
-        ctrlPanel.add(new JLabel("----------------------------------"), aConstraints);
-        aConstraints.weighty = 0;
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag specular = new cGridBag();
+                specular.add(specularLabel = new JLabel("Specular")); // , aConstraints);
+                specularLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                specular.add(specularField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        specularSection.add(specular);
 
-        ctrlPanel.add(specularLabel = new JLabel("Specular"), aConstraints);
-        specularLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(specularField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag lightarea = new cGridBag();
+                lightarea.add(lightareaLabel = new JLabel("Lightarea")); // , aConstraints);
+                lightareaLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                lightarea.add(lightareaField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        specularSection.add(lightarea);
 
-        ctrlPanel.add(lightareaLabel = new JLabel("Lightarea"), aConstraints);
-        lightareaLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(lightareaField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag shininess = new cGridBag();
+                shininess.add(shininessLabel = new JLabel("Roughness")); // , aConstraints);
+                shininessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                shininess.add(shininessField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        specularSection.add(shininess);
 
-        ctrlPanel.add(shininessLabel = new JLabel("Roughness"), aConstraints);
-        shininessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(shininessField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag metalness = new cGridBag();
+                metalness.add(metalnessLabel = new JLabel("Metalness")); // , aConstraints);
+                metalnessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                metalness.add(metalnessField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        specularSection.add(metalness);
 
-        ctrlPanel.add(metalnessLabel = new JLabel("Metalness"), aConstraints);
-        metalnessLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(metalnessField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag velvet = new cGridBag();
+                velvet.add(velvetLabel = new JLabel("Velvet")); // , aConstraints);
+                velvetLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                velvet.add(velvetField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        specularSection.add(velvet);
 
-        ctrlPanel.add(velvetLabel = new JLabel("Velvet"), aConstraints);
-        velvetLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(velvetField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
-
-        shiftField = AddSlider(ctrlPanel, "Shift", 0.001, 50, copy.material.shift, -1);
-        Return();
+        shiftField = AddSlider(specularSection, "Shift", 0.001, 50, copy.material.shift, -1);
+        //Return();
 //		ctrlPanel.add(shiftLabel = new JLabel("Shift"), aConstraints);
 //		shiftLabel.setHorizontalAlignment(SwingConstants.TRAILING);
 //		aConstraints.fill = GridBagConstraints.HORIZONTAL;
@@ -1690,130 +1594,97 @@
 //		aConstraints.gridy += 1;
 //		aConstraints.gridwidth = 1;
 
-        //aConstraints.weighty = 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // 100;
-        //aConstraints.gridx += 1;
-        ctrlPanel.add(new JLabel("----------------------------------"), aConstraints);
-        aConstraints.weighty = 0;
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
 
-        ctrlPanel.add(cameraLabel = new JLabel("GlobalLight"), aConstraints);
-        cameraLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(cameraField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        ctrlPanel.add(specularPanel);
+        
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
+        
+        JPanel globalPanel = new JPanel(new BorderLayout());
+        globalPanel.setBorder(BorderFactory.createLineBorder(Color.black));
+        
+        cGridBag globalSection = new cGridBag().setVertical(true);
+        
+        globalPanel.add(globalSection);
 
-        ctrlPanel.add(ambientLabel = new JLabel("Ambient"), aConstraints);
-        ambientLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(ambientField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag camera = new cGridBag();
+                camera.add(cameraLabel = new JLabel("GlobalLight")); // , aConstraints);
+                cameraLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                camera.add(cameraField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        globalSection.add(camera);
 
-        ctrlPanel.add(backlitLabel = new JLabel("Backlit"), aConstraints);
-        backlitLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(backlitField = new NumberSlider(0.001, 50, -1), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag ambient = new cGridBag();
+                ambient.add(ambientLabel = new JLabel("Ambient")); // , aConstraints);
+                ambientLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                ambient.add(ambientField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        globalSection.add(ambient);
 
-        ctrlPanel.add(opacityLabel = new JLabel("Opacity"), aConstraints);
-        opacityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(opacityField = new NumberSlider(0.001, 1, -0.5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
-        aConstraints.weighty = 0;
+        cGridBag backlit = new cGridBag();
+                backlit.add(backlitLabel = new JLabel("Backlit")); // , aConstraints);
+                backlitLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        globalSection.add(backlit);
 
-        ctrlPanel.add(bumpLabel = new JLabel("Bump"), aConstraints);
-        bumpLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(bumpField = new NumberSlider(0.0, 2), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag opacity = new cGridBag();
+                opacity.add(opacityLabel = new JLabel("Opacity")); // , aConstraints);
+                opacityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                opacity.add(opacityField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        globalSection.add(opacity);
 
-        ctrlPanel.add(noiseLabel = new JLabel("Noise"), aConstraints);
-        noiseLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(noiseField = new NumberSlider(0.0, 1/*5*/), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        ctrlPanel.add(globalPanel);
+        
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
+        
+        JPanel texturePanel = new JPanel(new BorderLayout());
+        texturePanel.setBorder(BorderFactory.createLineBorder(Color.black));
+        
+        cGridBag textureSection = new cGridBag().setVertical(true);
+        
+        texturePanel.add(textureSection);
 
-        ctrlPanel.add(powerLabel = new JLabel("Turbulance"), aConstraints);
-        powerLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(powerField = new NumberSlider(0.0, 5), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag bump = new cGridBag();
+                bump.add(bumpLabel = new JLabel("Bump")); // , aConstraints);
+                bumpLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                bump.add(bumpField = new cNumberSlider(this, 0.0, 2)); // , aConstraints);
+        textureSection.add(bump);
 
-        ctrlPanel.add(borderfadeLabel = new JLabel("Borderfade"), aConstraints);
-        borderfadeLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(borderfadeField = new NumberSlider(0.0, 2), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag noise = new cGridBag();
+                noise.add(noiseLabel = new JLabel("Noise")); // , aConstraints);
+                noiseLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                noise.add(noiseField = new cNumberSlider(this, 0.0, 1/*5*/)); // , aConstraints);
+        textureSection.add(noise);
 
-        ctrlPanel.add(fogLabel = new JLabel("Punch"), aConstraints);
-        fogLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(fogField = new NumberSlider(0.0, 20), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag power = new cGridBag();
+                power.add(powerLabel = new JLabel("Turbulance")); // , aConstraints);
+                powerLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                power.add(powerField = new cNumberSlider(this, 0.0, 5)); // , aConstraints);
+        textureSection.add(power);
 
-        ctrlPanel.add(opacityPowerLabel = new JLabel("Halo"), aConstraints);
-        opacityPowerLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        ctrlPanel.add(opacityPowerField = new NumberSlider(0.0, 10 /*10 dec 2013*/), aConstraints);
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-        aConstraints.gridwidth = 1;
+        cGridBag borderfade = new cGridBag();
+                borderfade.add(borderfadeLabel = new JLabel("Borderfade")); // , aConstraints);
+                borderfadeLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                borderfade.add(borderfadeField = new cNumberSlider(this, 0.0, 2)); // , aConstraints);
+        textureSection.add(borderfade);
 
-        //aConstraints.weighty = 1;
-        aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // 100;
-        //aConstraints.gridx += 1;
-        ctrlPanel.add(new JLabel("----------------------------------"), aConstraints);
-        aConstraints.weighty = 0;
+        cGridBag fog = new cGridBag();
+                fog.add(fogLabel = new JLabel("Punch")); // , aConstraints);
+                fogLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                fog.add(fogField = new cNumberSlider(this, 0.0, 20)); // , aConstraints);
+        textureSection.add(fog);
 
-        aConstraints.gridx = 0;
-        aConstraints.gridy = 0;
-        aConstraints.gridwidth = 1;
+        cGridBag opacityPower = new cGridBag();
+                opacityPower.add(opacityPowerLabel = new JLabel("Halo")); // , aConstraints);
+                opacityPowerLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                opacityPower.add(opacityPowerField = new cNumberSlider(this, 0.0, 10 /*10 dec 2013*/)); // , aConstraints);
+        textureSection.add(opacityPower);
+
+        ctrlPanel.add(texturePanel);
+        
+        //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
 
         SetMaterial(copy); // .GetMaterial());
 
-        colorField.addChangeListener(this);
-        modulationField.addChangeListener(this);
+        //colorField.addChangeListener(this);
+//        modulationField.addChangeListener(this);
         metalnessField.addChangeListener(this);
         diffuseField.addChangeListener(this);
         specularField.addChangeListener(this);
@@ -3516,7 +3387,7 @@
             current.fakedepth = (float) fakedepthField.getFloat();
             current.shadowbias = (float) shadowbiasField.getFloat();
 
-            if (!NumberSlider.frozen)
+            if (!cNumberSlider.frozen)
             {
                 //System.out.println("Propagate = " + propagate);
                 copy.UpdateMaterial(anchor, current, propagate);
@@ -3889,7 +3760,7 @@
 
             radioPanel.revalidate();
             radioPanel.repaint();
-            ctrlPanel.revalidate(); // ? new
+            ctrlPanel.validate(); // ? new
             ctrlPanel.repaint();
         }
     }
@@ -4556,10 +4427,10 @@
     JPanel treePanel;
     JPanel radioPanel;
     ButtonGroup buttonGroup;
-    JPanel ctrlPanel;
-    JPanel materialPanel;
+    cGridBag ctrlPanel;
+    cGridBag materialPanel;
     JScrollPane infoPanel;
-    JPanel optionsPanel;
+    cGridBag optionsPanel;
     JTabbedPane objectPanel;
     cGridBag XYZPanel;
     JSplitPane gridPanel;
@@ -4619,67 +4490,67 @@
     // MATERIAL
     JLabel materialLabel;
     JLabel colorLabel;
-    NumberSlider colorField;
+    cNumberSlider colorField;
     JLabel modulationLabel;
-    NumberSlider modulationField;
+    cNumberSlider modulationField;
     JLabel metalnessLabel;
-    NumberSlider metalnessField;
+    cNumberSlider metalnessField;
     JLabel diffuseLabel;
-    NumberSlider diffuseField;
+    cNumberSlider diffuseField;
     JLabel specularLabel;
-    NumberSlider specularField;
+    cNumberSlider specularField;
     JLabel shininessLabel;
-    NumberSlider shininessField;
+    cNumberSlider shininessField;
     JLabel shiftLabel;
-    NumberSlider shiftField;
+    cNumberSlider shiftField;
     JLabel ambientLabel;
-    NumberSlider ambientField;
+    cNumberSlider ambientField;
     JLabel lightareaLabel;
-    NumberSlider lightareaField;
+    cNumberSlider lightareaField;
     JLabel diffusenessLabel;
-    NumberSlider diffusenessField;
+    cNumberSlider diffusenessField;
     JLabel velvetLabel;
-    NumberSlider velvetField;
+    cNumberSlider velvetField;
     JLabel sheenLabel;
-    NumberSlider sheenField;
+    cNumberSlider sheenField;
     JLabel subsurfaceLabel;
-    NumberSlider subsurfaceField;
+    cNumberSlider subsurfaceField;
     //JLabel bumpLabel;
     //NumberSlider bumpField;
     JLabel backlitLabel;
-    NumberSlider backlitField;
+    cNumberSlider backlitField;
     JLabel anisoLabel;
-    NumberSlider anisoField;
+    cNumberSlider anisoField;
     JLabel anisoVLabel;
-    NumberSlider anisoVField;
+    cNumberSlider anisoVField;
     JLabel cameraLabel;
-    NumberSlider cameraField;
+    cNumberSlider cameraField;
     JLabel selfshadowLabel;
-    NumberSlider selfshadowField;
+    cNumberSlider selfshadowField;
     JLabel shadowLabel;
-    NumberSlider shadowField;
+    cNumberSlider shadowField;
     JLabel textureLabel;
-    NumberSlider textureField;
+    cNumberSlider textureField;
     JLabel opacityLabel;
-    NumberSlider opacityField;
+    cNumberSlider opacityField;
     JLabel fakedepthLabel;
-    NumberSlider fakedepthField;
+    cNumberSlider fakedepthField;
     JLabel shadowbiasLabel;
-    NumberSlider shadowbiasField;
+    cNumberSlider shadowbiasField;
     JLabel bumpLabel;
-    NumberSlider bumpField;
+    cNumberSlider bumpField;
     JLabel noiseLabel;
-    NumberSlider noiseField;
+    cNumberSlider noiseField;
     JLabel powerLabel;
-    NumberSlider powerField;
+    cNumberSlider powerField;
     JLabel borderfadeLabel;
-    NumberSlider borderfadeField;
+    cNumberSlider borderfadeField;
     JLabel fogLabel;
-    NumberSlider fogField;
+    cNumberSlider fogField;
     JLabel opacityPowerLabel;
-    NumberSlider opacityPowerField;
+    cNumberSlider opacityPowerField;
     JTree jTree;
     //ObjectUI parent;
     
-    NumberSlider normalpushField;
+    cNumberSlider normalpushField;
 }
diff --git a/ParticleEditor.java b/ParticleEditor.java
index 26c73c4..8533f74 100644
--- a/ParticleEditor.java
+++ b/ParticleEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class ParticleEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -289,19 +291,19 @@
     
     ParticleSystem particlesystem;
     
-    NumberSlider particlesField;
-    NumberSlider velocityField;
-    NumberSlider timestepField;
-    NumberSlider delayField;
-    NumberSlider sizeminField;
-    NumberSlider sizemaxField;
-    NumberSlider angleminField;
-    NumberSlider anglemaxField;
-    NumberSlider lifeminField;
-    NumberSlider lifemaxField;
-    NumberSlider densityField;
-    NumberSlider gravityField;
-    NumberSlider standbyField;
+    cNumberSlider particlesField;
+    cNumberSlider velocityField;
+    cNumberSlider timestepField;
+    cNumberSlider delayField;
+    cNumberSlider sizeminField;
+    cNumberSlider sizemaxField;
+    cNumberSlider angleminField;
+    cNumberSlider anglemaxField;
+    cNumberSlider lifeminField;
+    cNumberSlider lifemaxField;
+    cNumberSlider densityField;
+    cNumberSlider gravityField;
+    cNumberSlider standbyField;
     
     ObjectUI parent;
     //ObjEditor objEditor;
diff --git a/PointFlowEditor.java b/PointFlowEditor.java
index 9d50bcb..8088102 100644
--- a/PointFlowEditor.java
+++ b/PointFlowEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class PointFlowEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -289,19 +291,19 @@
     
     PointFlow particlesystem;
     
-    NumberSlider resizefactorField;
-    NumberSlider velocityField;
-    NumberSlider timestepField;
-    NumberSlider delayField;
-    NumberSlider sizeminField;
-    NumberSlider sizemaxField;
-    NumberSlider angleminField;
-    NumberSlider anglemaxField;
-    NumberSlider lifeminField;
-    NumberSlider lifemaxField;
-    NumberSlider densityField;
-    NumberSlider gravityField;
-    NumberSlider standbyField;
+    cNumberSlider resizefactorField;
+    cNumberSlider velocityField;
+    cNumberSlider timestepField;
+    cNumberSlider delayField;
+    cNumberSlider sizeminField;
+    cNumberSlider sizemaxField;
+    cNumberSlider angleminField;
+    cNumberSlider anglemaxField;
+    cNumberSlider lifeminField;
+    cNumberSlider lifemaxField;
+    cNumberSlider densityField;
+    cNumberSlider gravityField;
+    cNumberSlider standbyField;
     
     ObjectUI parent;
     //ObjEditor objEditor;
diff --git a/RandomEditor.java b/RandomEditor.java
index 8ba3b74..e7ac3a1 100644
--- a/RandomEditor.java
+++ b/RandomEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class RandomEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -122,7 +124,7 @@
 	}
 	
     RandomNode switchnode;
-    NumberSlider frameField;
+    cNumberSlider frameField;
 
 	ObjectUI parent;
 	
diff --git a/SwitchEditor.java b/SwitchEditor.java
index 5b02a63..08c5be3 100644
--- a/SwitchEditor.java
+++ b/SwitchEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class SwitchEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
@@ -241,9 +243,9 @@
 	
     SwitchNode switchnode;
 //    JLabel frameLabel;
-    NumberSlider frameField;
+    cNumberSlider frameField;
 //    JLabel speedLabel;
-    NumberSlider speedField;
+    cNumberSlider speedField;
 
 	ObjectUI parent;
 	
diff --git a/TorusEditor.java b/TorusEditor.java
index 35906ac..769c3a2 100644
--- a/TorusEditor.java
+++ b/TorusEditor.java
@@ -8,6 +8,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class TorusEditor extends BiparamEditor implements ChangeListener, ObjectUI
 {
 	TorusEditor(Torus t, GroupEditor callee)
@@ -154,8 +156,8 @@
     Torus torus;
     JLabel majorLabel;
     JLabel minorLabel;
-    NumberSlider majorField;
-    NumberSlider minorField;
+    cNumberSlider majorField;
+    cNumberSlider minorField;
 	
 	//BiparamEditor objEditor;
 }
diff --git a/cSpringEditor.java b/cSpringEditor.java
index d94eeeb..788ebea 100644
--- a/cSpringEditor.java
+++ b/cSpringEditor.java
@@ -4,6 +4,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class cSpringEditor extends ObjEditor implements ItemListener, ChangeListener, ObjectUI, ActionListener
 {
 
@@ -748,25 +750,25 @@
     JLabel liftLabel;
     JLabel solidityLabel;
     
-    NumberSlider stiffnessField;
-    NumberSlider massField;
-    NumberSlider gravityField;
-    NumberSlider normalField;
-    NumberSlider mgravityField;
-    NumberSlider fluidspeedField;
-    NumberSlider viscosityField;
-    NumberSlider floorField;
-    NumberSlider limitField;
-    NumberSlider restlengthField;
-    NumberSlider distortionField;
-    NumberSlider frictionField;
-    NumberSlider timestepField;
-    NumberSlider poseslownessField;
-    NumberSlider dampingField;
-    NumberSlider liftField;
-    NumberSlider solidityField;
+    cNumberSlider stiffnessField;
+    cNumberSlider massField;
+    cNumberSlider gravityField;
+    cNumberSlider normalField;
+    cNumberSlider mgravityField;
+    cNumberSlider fluidspeedField;
+    cNumberSlider viscosityField;
+    cNumberSlider floorField;
+    cNumberSlider limitField;
+    cNumberSlider restlengthField;
+    cNumberSlider distortionField;
+    cNumberSlider frictionField;
+    cNumberSlider timestepField;
+    cNumberSlider poseslownessField;
+    cNumberSlider dampingField;
+    cNumberSlider liftField;
+    cNumberSlider solidityField;
 
-    NumberSlider poseField;
+    cNumberSlider poseField;
     
 //    JCheckBox animate;
     JCheckBox thick;

--
Gitblit v1.6.2