From 504890a7b930ab6b853c49de825ae848e0535339 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Wed, 01 May 2019 09:08:30 -0400
Subject: [PATCH] Control pane

---
 ImplicitTiler.java   |    1 
 ObjEditor.java       |  203 ++++++-----
 SuperEditor.java     |   69 ++--
 LA.java              |    1 
 PhysicsEditor.java   |    1 
 BiparamEditor.java   |   30 
 CameraPane.java      |    5 
 cSpringEditor.java   |  205 ++++++++----
 TorusEditor.java     |   19 
 ParticleEditor.java  |  127 +++++--
 Blob.java            |    1 
 LatheEditor.java     |   17 
 Mocap.java           |    1 
 Composite.java       |    2 
 GenericJoint.java    |    7 
 RandomEditor.java    |   19 
 BlobEditor.java      |  101 +++---
 BoundaryRep.java     |    1 
 PointFlowEditor.java |   12 
 MorphEditor.java     |    4 
 BezierEditor.java    |   12 
 SwitchEditor.java    |    8 
 cSpring.java         |   10 
 MocapEditor.java     |   12 
 CSGEditor.java       |    2 
 Object3D.java        |    1 
 ConeEditor.java      |   57 +--
 KleinEditor.java     |   12 
 28 files changed, 543 insertions(+), 397 deletions(-)

diff --git a/BezierEditor.java b/BezierEditor.java
index 71ac0c9..ba6bf53 100644
--- a/BezierEditor.java
+++ b/BezierEditor.java
@@ -30,15 +30,9 @@
 	{
                 super.SetupUI2(oe);
                 
-        oe.ctrlPanel.add(depthLabel = new JLabel("Depth"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        oe.ctrlPanel.add(depthField = new NumberSlider(0, 5), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.gridwidth = 1;
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx -= 1;
+        oe.ctrlPanel.add(depthLabel = new JLabel("Depth")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+        oe.ctrlPanel.Return();
+        oe.ctrlPanel.add(depthField = new NumberSlider(0, 5)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 
         depthField.setInteger(bezier.GetDepth());
 		depthField.addChangeListener(this);
diff --git a/BiparamEditor.java b/BiparamEditor.java
index 16a02c3..c21b084 100644
--- a/BiparamEditor.java
+++ b/BiparamEditor.java
@@ -67,11 +67,14 @@
 		oe.aConstraints.gridwidth = 1;
              */
             super.SetupUI2(oe);
-                
-            uDivsField = AddSlider(oe.ctrlPanel, "U #", biparam.minUDivs, 250+biparam.minUDivs, biparam.uDivs);
-            Return();
-            vDivsField = AddSlider(oe.ctrlPanel, "V #", biparam.minVDivs, (int)(500/3.14)+biparam.minVDivs, biparam.vDivs);
-            Return();
+                           
+            uvPanel = new cGridBag().setVertical(true);
+                    
+            uDivsField = (cNumberSlider)AddSlider(uvPanel, "U #", biparam.minUDivs, 250+biparam.minUDivs, biparam.uDivs).getComponent(1);
+            vDivsField = (cNumberSlider)AddSlider(uvPanel, "V #", biparam.minVDivs, (int)(500/3.1416)+biparam.minVDivs, biparam.vDivs).getComponent(1);
+            
+            oe.ctrlPanel.add(uvPanel);
+            oe.ctrlPanel.Return();
 //		oe.aConstraints.gridwidth = 1;
 //		oe.aConstraints.fill = GridBagConstraints.VERTICAL;
 //        oe.ctrlPanel.add(uDivsLabel = new JLabel("U #"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
@@ -98,17 +101,11 @@
 //		oe.aConstraints.gridwidth = 1;
         if (biparam instanceof Cone) // ends)
         {
-			oe.aConstraints.gridy += 1;
-			oe.aConstraints.gridwidth = 3;
-//			oe.aConstraints.anchor = GridBagConstraints.WEST;
-            oe.ctrlPanel.add(optionCB = new JCheckBox("Close Surface", biparam.endcaps), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+            oe.ctrlPanel.add(optionCB = new JCheckBox("Close Surface", biparam.endcaps)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 			optionCB.addItemListener(this);
-//			oe.aConstraints.anchor = GridBagConstraints.EAST;
-			oe.aConstraints.gridwidth = 1;
+oe.ctrlPanel.Return();
             //endcaps.setState(!biparam.endcaps);
         }
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.gridx = 0;
     }
 	
 	void Clear()
@@ -246,8 +243,9 @@
 //		oe.ctrlPanel.remove(uDivsLabel);
 //		oe.ctrlPanel.remove(vDivsLabel);
 //		//oe.ctrlPanel.repaint();
-                Remove(uDivsField);
-                Remove(vDivsField);
+//                Remove(uDivsField);
+//                Remove(vDivsField);
+		oe.ctrlPanel.remove(uvPanel);
                 
                 super.closeUI();
 	}
@@ -269,6 +267,8 @@
     cNumberSlider vDivsField;
     JCheckBox optionCB;
 
+    cGridBag uvPanel;
+    
 	ObjectUI parent;
 	
 	//ObjEditor objEditor;
diff --git a/Blob.java b/Blob.java
index 9e22b13..6a7cf90 100644
--- a/Blob.java
+++ b/Blob.java
@@ -82,6 +82,7 @@
 
     void retile()
     {
+                new Exception().printStackTrace();
         System.exit(0);
 		ClearList();
         bRep = (new ImplicitTiler(this, ImplicitTiler.SURFACEID, true, true, true, cellSize, cellSize, tolerance, true)).bRep;
diff --git a/BlobEditor.java b/BlobEditor.java
index 6b74d1b..0d5fd8c 100644
--- a/BlobEditor.java
+++ b/BlobEditor.java
@@ -43,61 +43,56 @@
 	{
                 super.SetupUI2(oe);
                 
-		oe.ctrlPanel.add(thresholdLabel = new JLabel("Threshold"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(thresholdField = new NumberField(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		thresholdField.addActionListener(this);
-		oe.aConstraints.gridwidth = 1;
-		thresholdField.setFloat(blob.threshold);
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(newButton = new JButton("New Ball"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		newButton.addActionListener(this);
-		oe.aConstraints.gridx += 2;
-		oe.ctrlPanel.add(deleteButton = new JButton("Delete Ball"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		deleteButton.addActionListener(this);
-		oe.aConstraints.gridwidth = 1;
-		oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
-		oe.ctrlPanel.add(strengthLabel = new JLabel("Strength"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.aConstraints.gridx += 1;
-		oe.ctrlPanel.add(strengthField = new NumberField(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		strengthField.addActionListener(this);
-		oe.aConstraints.gridwidth = 1;
-		toCompFields();
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
-		
-		oe.ctrlPanel.add(sizeLabel = new JLabel("Depth"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(sizeField = new NumberField(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		sizeField.addActionListener(this);
-		oe.aConstraints.gridwidth = 1;
-		sizeField.setFloat(blob.cellSize);
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx = 0;
+		oe.ctrlPanel.add(thresholdLabel = new JLabel("Threshold:")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 
-		oe.ctrlPanel.add(tolLabel = new JLabel("Tolerance"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(tolField = new NumberField(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(thresholdField = new NumberField()); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		thresholdField.addActionListener(this);
+                thresholdField.setFloat(blob.threshold);
+
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(newButton = new JButton("New Ball")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		newButton.addActionListener(this);
+                oe.ctrlPanel.Return();
+
+                oe.ctrlPanel.add(deleteButton = new JButton("Delete Ball")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		deleteButton.addActionListener(this);
+                oe.ctrlPanel.Return();
+
+                /*
+                oe.ctrlPanel.add(strengthLabel = new JLabel("Strength:")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(strengthField = new NumberField()); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		strengthField.addActionListener(this);
+
+                oe.ctrlPanel.Return();
+                 */
+                
+                toCompFields();
+		
+		oe.ctrlPanel.add(sizeLabel = new JLabel("Depth:")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(sizeField = new NumberField()); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		sizeField.addActionListener(this);
+                sizeField.setFloat(blob.cellSize);
+
+                oe.ctrlPanel.Return();
+                
+		oe.ctrlPanel.add(tolLabel = new JLabel("Tolerance:")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(tolField = new NumberField()); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 		tolField.addActionListener(this);
-		oe.aConstraints.gridwidth = 1;
-		tolField.setFloat(blob.tolerance);
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx = 0;
+                tolField.setFloat(blob.tolerance);
+                
+                oe.ctrlPanel.Return();
 	}
 	
 	public void closeUI()
diff --git a/BoundaryRep.java b/BoundaryRep.java
index 14a7921..69169d7 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -6354,6 +6354,7 @@
     
     void InitWeights()
     {
+                new Exception().printStackTrace();
         System.exit(0);
         int n = 0;
         int b = 0;
diff --git a/CSGEditor.java b/CSGEditor.java
index 4da2c35..fe9aa98 100644
--- a/CSGEditor.java
+++ b/CSGEditor.java
@@ -92,7 +92,7 @@
 		//oe.aConstraints.gridy += 1;
 		oe.aConstraints.gridx += 1;
                 
-                Return();
+                oe.ctrlPanel.Return();
 		
                 list = new Vector();
                 list.add("Smooth");
diff --git a/CameraPane.java b/CameraPane.java
index 296ba69..f5d934c 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -4208,6 +4208,7 @@
     
     com.sun.opengl.util.texture.Texture CompressTexture2(String name)
     {
+                new Exception().printStackTrace();
         System.exit(0);
         com.sun.opengl.util.texture.Texture texture = null;
 
@@ -13946,6 +13947,7 @@
         
         public void run()
         {
+                new Exception().printStackTrace();
             System.exit(0);
             for (;;)
             {
@@ -15144,6 +15146,7 @@
 
     void SelectParent()
     {
+                new Exception().printStackTrace();
         System.exit(0);
         Composite group = (Composite) object;
         java.util.Vector selectees = new java.util.Vector(group.selection);
@@ -15167,6 +15170,7 @@
 
     void SelectChildren()
     {
+                new Exception().printStackTrace();
         System.exit(0);
         /*
         Composite group = (Composite) object;
@@ -16280,6 +16284,7 @@
         {
             if (!selection)
             {
+                new Exception().printStackTrace();
                 System.exit(0);
                 return;
             }
diff --git a/Composite.java b/Composite.java
index 210413e..bffa912 100644
--- a/Composite.java
+++ b/Composite.java
@@ -205,6 +205,7 @@
 
     boolean HasLoops()
     {
+                new Exception().printStackTrace();
         System.exit(0);
         if (blockloop)
         {
@@ -348,6 +349,7 @@
         
     void getBounds0(cVector minima, cVector maxima, boolean xform)
     {
+                new Exception().printStackTrace();
         System.exit(0);
         minima.x = minima.y = minima.z = 1E10;
         maxima.x = maxima.y = maxima.z = -1E10;
diff --git a/ConeEditor.java b/ConeEditor.java
index 6cc9579..c186a8b 100644
--- a/ConeEditor.java
+++ b/ConeEditor.java
@@ -8,6 +8,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class ConeEditor extends BiparamEditor implements ChangeListener, ObjectUI
 {
 	
@@ -49,7 +51,6 @@
 	{
             super.SetupUI2(oe);
             
-		oe.aConstraints.fill = 0;
 		/*
         ctrlPanel.add(baseLabel = new JLabel("Base"), aConstraints);
 		aConstraints.fill = GridBagConstraints.HORIZONTAL;
@@ -58,19 +59,15 @@
         ctrlPanel.add(baseField = new NumberField(), aConstraints);
         baseField.setVector(cone.base);
 		baseField.addActionListener(this);
-		aConstraints.fill = 0;
-		aConstraints.gridy += 1;
-		aConstraints.gridx -= 1;
 		*/
-		oe.aConstraints.gridwidth = 1;
-        oe.ctrlPanel.add(baseRadLabel = new JLabel("Top"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        oe.ctrlPanel.add(baseRadField = new NumberSlider(0.001,10,1), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+            topPanel = new cGridBag();
+        topPanel.add(baseRadLabel = new JLabel("Top")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+        topPanel.add(baseRadField = new cNumberSlider(this, 0.001,10,1)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
         baseRadField.setFloat(cone.baseRadius);
-		baseRadField.addChangeListener(this);
-		/*
+                
+        oe.ctrlPanel.add(topPanel);
+        oe.ctrlPanel.Return();
+        /*
 		aConstraints.fill = 0;
 		aConstraints.gridx -= 1;
 		aConstraints.gridy += 1;
@@ -83,21 +80,13 @@
         apexField.setVector(cone.apex);
 		apexField.addActionListener(this);
 		*/
-		oe.aConstraints.fill = 0;
-		oe.aConstraints.gridx -= 1;
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.gridwidth = 1;
-        oe.ctrlPanel.add(apexRadLabel = new JLabel("Base"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-        oe.ctrlPanel.add(apexRadField = new NumberSlider(0.001,10,1), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.gridwidth = 1;
-		oe.aConstraints.gridx -= 1;
-		oe.aConstraints.fill = 0;
+            basePanel = new cGridBag();
+        basePanel.add(apexRadLabel = new JLabel("Base")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+        basePanel.add(apexRadField = new cNumberSlider(this, 0.001,10,1)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
         apexRadField.setFloat(cone.apexRadius);
-		apexRadField.addChangeListener(this);
-		oe.aConstraints.gridy += 1;
+
+        oe.ctrlPanel.add(basePanel);
+        oe.ctrlPanel.Return();
     }
 	
 	public void closeUI()
@@ -106,10 +95,12 @@
 		
 		apexRadField.removeChangeListener(this);
 		baseRadField.removeChangeListener(this);
-		oe.ctrlPanel.remove(apexRadField);
-		oe.ctrlPanel.remove(baseRadField);
-		oe.ctrlPanel.remove(apexRadLabel);
-		oe.ctrlPanel.remove(baseRadLabel);
+//		oe.ctrlPanel.remove(apexRadField);
+//		oe.ctrlPanel.remove(baseRadField);
+//		oe.ctrlPanel.remove(apexRadLabel);
+//		oe.ctrlPanel.remove(baseRadLabel);
+		oe.ctrlPanel.remove(topPanel);
+		oe.ctrlPanel.remove(basePanel);
 		//oe.ctrlPanel.repaint();
 		
 		super.closeUI();
@@ -192,9 +183,11 @@
     JLabel apexRadLabel;
     //NumberField baseField;
     //NumberField apexField;
-    NumberSlider baseRadField;
-    NumberSlider apexRadField;
+    cNumberSlider baseRadField;
+    cNumberSlider apexRadField;
 
+    cGridBag topPanel;
+    cGridBag basePanel;
 	//BiparamEditor objEditor;
 }
 
diff --git a/GenericJoint.java b/GenericJoint.java
index ab83012..da925d6 100644
--- a/GenericJoint.java
+++ b/GenericJoint.java
@@ -873,6 +873,7 @@
 
         if (shape.getShapeType() == BroadphaseNativeType.COMPOUND_SHAPE_PROXYTYPE)
         {
+                new Exception().printStackTrace();
             System.exit(0);
             CompoundShape compoundShape = (CompoundShape) shape;
             Transform childTrans = transformsPool.get();
@@ -903,6 +904,7 @@
                 {
                     case BOX_SHAPE_PROXYTYPE:
                     {
+                new Exception().printStackTrace();
             System.exit(0);
                         BoxShape boxShape = (BoxShape) shape;
                         Vector3f halfExtent = boxShape.getHalfExtentsWithMargin(vectorsPool.get());
@@ -914,6 +916,7 @@
                     }
                     case SPHERE_SHAPE_PROXYTYPE:
                     {
+                new Exception().printStackTrace();
             System.exit(0);
                         SphereShape sphereShape = (SphereShape) shape;
                         float radius = sphereShape.getMargin(); // radius doesn't include the margin, so draw with margin
@@ -960,6 +963,7 @@
 
                     case STATIC_PLANE_PROXYTYPE:
                     {
+                new Exception().printStackTrace();
             System.exit(0);
                         StaticPlaneShape staticPlaneShape = (StaticPlaneShape) shape;
                         float planeConst = staticPlaneShape.getPlaneConstant();
@@ -1006,6 +1010,7 @@
 
                     case CYLINDER_SHAPE_PROXYTYPE:
                     {
+                new Exception().printStackTrace();
             System.exit(0);
                         CylinderShape cylinder = (CylinderShape) shape;
                         int upAxis = cylinder.getUpAxis();
@@ -1358,6 +1363,7 @@
                 // for polyhedral shapes
                 if (shape.isPolyhedral())
                 {
+                new Exception().printStackTrace();
             System.exit(0);
                     PolyhedralConvexShape polyshape = (PolyhedralConvexShape) shape;
 
@@ -1427,6 +1433,7 @@
             if (shape.isConcave())//>getShapeType() == TRIANGLE_MESH_SHAPE_PROXYTYPE||shape->getShapeType() == GIMPACT_SHAPE_PROXYTYPE)
             //		if (shape->getShapeType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
             {
+                new Exception().printStackTrace();
             System.exit(0);
                 ConcaveShape concaveMesh = (ConcaveShape) shape;
                 //btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30));
diff --git a/ImplicitTiler.java b/ImplicitTiler.java
index 393a52d..024db48 100644
--- a/ImplicitTiler.java
+++ b/ImplicitTiler.java
@@ -365,6 +365,7 @@
 
     void subdivide(double x[], double y[], double z[], int dimension)
     {
+                    new Exception().printStackTrace();
         System.exit(0);
         boolean out[] = new boolean[2];
         implicit.boxInside(x, y, z, out);
diff --git a/KleinEditor.java b/KleinEditor.java
index a7e7253..ed20916 100644
--- a/KleinEditor.java
+++ b/KleinEditor.java
@@ -38,8 +38,9 @@
 	{
             super.SetupUI2(oe);
             
-            radiusField = AddSlider(oe.ctrlPanel, "Radius:", 0, 20.0, klein.radius, 1);
-            Return();
+            radiusPanel = AddSlider(oe.ctrlPanel, "Radius:", 0, 20.0, klein.radius, 1);
+            this.radiusField = (cNumberSlider)radiusPanel.getComponent(1);
+            oe.ctrlPanel.Return();
         }
         
 	void Clear()
@@ -97,6 +98,8 @@
 
     Klein klein;
     cNumberSlider radiusField;
+    
+    cGridBag radiusPanel;
 
 	public ObjEditor GetEditor()
 	{
@@ -111,8 +114,9 @@
 
 	public void closeUI()
 	{
-                Remove(radiusField);
-		
+                //Remove(radiusField);
+                
+		objEditor.ctrlPanel.remove(radiusPanel);
 		super.closeUI();
 	}
         
diff --git a/LA.java b/LA.java
index a667209..e1aac14 100644
--- a/LA.java
+++ b/LA.java
@@ -160,6 +160,7 @@
 
     static cVector xformDir(cVector v, double mat[][])
     {
+                    new Exception().printStackTrace();
         System.exit(0);
         cVector temp = new cVector();
         xformDir(v, mat, temp);
diff --git a/LatheEditor.java b/LatheEditor.java
index 71c7e0f..696e3b6 100644
--- a/LatheEditor.java
+++ b/LatheEditor.java
@@ -37,15 +37,16 @@
 	{
                 super.SetupUI2(oe);
                 
-		oe.ctrlPanel.add(typeLabel = new JLabel("Spline Type"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		oe.aConstraints.gridx += 1;
-		//aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		//aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(typeMenu = new JComboBox(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+		oe.ctrlPanel.add(typeLabel = new JLabel("Spline Type:")); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+
+                oe.ctrlPanel.Return();
+                
+                oe.ctrlPanel.add(typeMenu = new JComboBox()); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 		typeMenu.addActionListener(this);
-		oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
-		typeMenu.addItem("Linear");
+
+                oe.ctrlPanel.Return();
+                
+                typeMenu.addItem("Linear");
 		typeMenu.addItem("Quadratic");
 		typeMenu.addItem("Cubic");
 		//typeMenu.select(spline.type - 1);
diff --git a/Mocap.java b/Mocap.java
index d696eec..9760bbb 100644
--- a/Mocap.java
+++ b/Mocap.java
@@ -3496,6 +3496,7 @@
     // filters out bad input data
     void FilterAnimData()
     {
+                new Exception().printStackTrace();
         System.exit(0);
         
         float[] data; // = bvh.animation.getBoneData(0);
diff --git a/MocapEditor.java b/MocapEditor.java
index ea3ee95..a03ea39 100644
--- a/MocapEditor.java
+++ b/MocapEditor.java
@@ -70,12 +70,12 @@
              */
             super.SetupUI2(oe);
                 
-            frameField = AddSlider(oe.ctrlPanel, "Frame:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.frame);
-            Return();
-            firstField = AddSlider(oe.ctrlPanel, "First:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.firstframe);
-            Return();
-            lastField = AddSlider(oe.ctrlPanel, "Last:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.lastframe);
-            Return();
+            frameField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Frame:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.frame).getComponent(1);
+        oe.ctrlPanel.Return();
+            firstField = (cNumberSlider)AddSlider(oe.ctrlPanel, "First:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.firstframe).getComponent(1);
+        oe.ctrlPanel.Return();
+            lastField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Last:", 0, mocap.bvh.animation.getNumFrames()-1, mocap.lastframe).getComponent(1);
+        oe.ctrlPanel.Return();
             
 //		oe.aConstraints.gridx = 0;
 //		oe.aConstraints.gridwidth = 1;
diff --git a/MorphEditor.java b/MorphEditor.java
index 3a0833f..2a8c8a9 100644
--- a/MorphEditor.java
+++ b/MorphEditor.java
@@ -70,8 +70,8 @@
             
             for (int i=0; i<morphnode.morphobject.Size(); i++)
             {
-                morphField[i] = AddSlider(oe.ctrlPanel, morphnode.morphobject.get(i).name, 0, 2.0, morphnode.morphweights[i], 1);
-                Return();
+                morphField[i] = (cNumberSlider)AddSlider(oe.ctrlPanel, morphnode.morphobject.get(i).name, 0, 2.0, morphnode.morphweights[i], 1).getComponent(1);
+        oe.ctrlPanel.Return();
             }
     }
 	
diff --git a/ObjEditor.java b/ObjEditor.java
index 8a5cd39..98cec4e 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -138,34 +138,40 @@
     public void closeUI()
     {
         //new Exception().printStackTrace();
-        System.out.println("this = " + this);
-        System.out.println("objEditor = " + objEditor);
+//        System.out.println("this = " + this);
+//        System.out.println("objEditor = " + objEditor);
         //nameField.removeActionListener(this);
-        objEditor.ctrlPanel.remove(nameField);
+//        objEditor.ctrlPanel.remove(nameField);
         
         if (!GroupEditor.allparams)
             return;
         
-        objEditor.ctrlPanel.remove(liveCB);
-        objEditor.ctrlPanel.remove(hideCB);
-        objEditor.ctrlPanel.remove(markCB);
-
-        objEditor.ctrlPanel.remove(randomCB);
-        objEditor.ctrlPanel.remove(speedupCB);
-        objEditor.ctrlPanel.remove(rewindCB);
-
-        objEditor.ctrlPanel.remove(resetButton);
-        objEditor.ctrlPanel.remove(stepButton);
-//                objEditor.ctrlPanel.remove(stepAllButton);
-//                objEditor.ctrlPanel.remove(resetAllButton);
-        objEditor.ctrlPanel.remove(link2masterCB);
-        //objEditor.ctrlPanel.remove(flipVCB);
-        //objEditor.ctrlPanel.remove(texresMenu);
-        objEditor.ctrlPanel.remove(slowerButton);
-        objEditor.ctrlPanel.remove(fasterButton);
-        objEditor.ctrlPanel.remove(remarkButton);
+//        objEditor.ctrlPanel.remove(liveCB);
+//        objEditor.ctrlPanel.remove(hideCB);
+//        objEditor.ctrlPanel.remove(markCB);
+//
+//        objEditor.ctrlPanel.remove(randomCB);
+//        objEditor.ctrlPanel.remove(speedupCB);
+//        objEditor.ctrlPanel.remove(rewindCB);
+//
+//        objEditor.ctrlPanel.remove(resetButton);
+//        objEditor.ctrlPanel.remove(stepButton);
+////                objEditor.ctrlPanel.remove(stepAllButton);
+////                objEditor.ctrlPanel.remove(resetAllButton);
+//        objEditor.ctrlPanel.remove(link2masterCB);
+//        //objEditor.ctrlPanel.remove(flipVCB);
+//        //objEditor.ctrlPanel.remove(texresMenu);
+//        objEditor.ctrlPanel.remove(slowerButton);
+//        objEditor.ctrlPanel.remove(fasterButton);
+//        objEditor.ctrlPanel.remove(remarkButton);
         
-        Remove(normalpushField);
+        objEditor.ctrlPanel.remove(namePanel);
+        objEditor.ctrlPanel.remove(setupPanel);
+        objEditor.ctrlPanel.remove(commandsPanel);
+        objEditor.ctrlPanel.remove(pushPanel);
+        //objEditor.ctrlPanel.remove(fillPanel);
+        
+        //Remove(normalpushField);
     }
 
     public ObjEditor GetEditor()
@@ -355,7 +361,7 @@
         toolbarPanel.setName("Toolbar");
         treePanel = new JPanel();
         treePanel.setName("Tree");
-        ctrlPanel = new cGridBag(); // new GridBagLayout());
+        ctrlPanel = new cGridBag().setVertical(false); // new GridBagLayout());
         ctrlPanel.setName("Edit");
         materialPanel = new cGridBag().setVertical(true);
         materialPanel.setName("Material");
@@ -386,7 +392,7 @@
         //mainPanel.setLayout(new GridBagLayout());
         toolbarPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
         treePanel.setLayout(new GridBagLayout());
-        ctrlPanel.setLayout(new GridBagLayout());
+        //ctrlPanel.setLayout(new GridBagLayout());
         //materialPanel.setLayout(new GridBagLayout());
 
         aConstraints = new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
@@ -767,54 +773,44 @@
     JButton slowerButton;
     JButton fasterButton;
     JButton remarkButton;
+    
+    cGridBag namePanel;
+    cGridBag setupPanel;
+    cGridBag commandsPanel;
+    cGridBag pushPanel;
+    cGridBag fillPanel;
 
-    JCheckBox AddCheckBox(ObjEditor oe, String label, boolean on)
+    JCheckBox AddCheckBox(cGridBag panel, String label, boolean on)
     {
         JCheckBox cb;
 
-        oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        oe.aConstraints.gridwidth = 1; // 3;
-//        oe.aConstraints.weightx = 1;
-//        oe.aConstraints.anchor = GridBagConstraints.WEST;
-        oe.ctrlPanel.add(cb = new JCheckBox(label, on), oe.aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        panel.add(cb = new JCheckBox(label, on)); //, oe.aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         cb.addItemListener(this);
-//        oe.aConstraints.anchor = GridBagConstraints.EAST;
-        oe.aConstraints.gridwidth = 1;
-        oe.aConstraints.gridx += 1;
 
         return cb;
     }
 
-    cButton AddButton(ObjEditor oe, String label)
+    cButton AddButton(cGridBag panel, String label)
     {
         cButton cb;
 
-        oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        oe.aConstraints.gridwidth = 1;
-//        oe.aConstraints.weightx = 1;
-//        oe.aConstraints.anchor = GridBagConstraints.WEST;
-        oe.ctrlPanel.add(cb = new cButton(label), oe.aConstraints, oe.ctrlPanel.getComponentCount() - 1);
+        panel.add(cb = new cButton(label)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount() - 1);
         cb.addActionListener(this);
-//        oe.aConstraints.anchor = GridBagConstraints.EAST;
-        oe.aConstraints.gridwidth = 1;
-        oe.aConstraints.gridx += 1;
 
         return cb;
     }
 
-    JComboBox AddCombo(ObjEditor oe, java.util.Vector list, int item)
+    JComboBox AddCombo(cGridBag panel, java.util.Vector list, int item)
     {
         JComboBox combo;
 
-        oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-        oe.ctrlPanel.add(combo = new JComboBox(new cListModel(list, item)), oe.aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        oe.aConstraints.gridx += 1;
+        panel.add(combo = new JComboBox(new cListModel(list, item))); //, oe.aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         combo.addActionListener(this);
 
         return combo;
     }
 
-    cNumberSlider AddSlider(cGridBag ctrlPanel, String label, double min, double max, double current, double pow)
+    cGridBag AddSlider(cGridBag panel, String label, double min, double max, double current, double pow)
     {
         cGridBag control = new cGridBag();
             
@@ -826,12 +822,12 @@
         control.add(combo = new cNumberSlider(this, min, max, pow)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         combo.setFloat(current);
         
-        ctrlPanel.add(control);
+        panel.add(control);
         
-        return combo;
+        return control;
     }
 
-    cNumberSlider AddSlider(cGridBag ctrlPanel, String label, int min, int max, int current)
+    cGridBag AddSlider(cGridBag panel, String label, int min, int max, int current)
     {
         cGridBag control = new cGridBag();
         
@@ -839,25 +835,21 @@
 
         JLabel jlabel = new JLabel(label);
         jlabel.setHorizontalAlignment(SwingConstants.TRAILING);
-        ctrlPanel.add(jlabel); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
-        ctrlPanel.add(combo = new cNumberSlider(this, min, max)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        control.add(jlabel); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
+        control.add(combo = new cNumberSlider(this, min, max)); //, aConstraints); //, oe.ctrlPanel.getComponentCount()-1);
         combo.setInteger(current);
 
-        ctrlPanel.add(control);
+        panel.add(control);
         
-        return combo;
+        return control;
     }
 
     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);
         text.addCaretListener(this);
-        aConstraints.gridx += 1;
-        aConstraints.gridwidth = 1;
 
         return text;
     }
@@ -896,7 +888,7 @@
 
     /*
      */
-    void Return() // ObjEditor oe)
+    void Return0() // ObjEditor oe)
     {
         aConstraints.gridy += 1;
         aConstraints.gridx = 0;
@@ -955,33 +947,52 @@
 //            oe.aConstraints.weighty = 0;
 //            oe.aConstraints.gridx = 0;
 //            oe.aConstraints.gridy = 0;
-        SetupName(oe);
+        //SetupName(oe);
+        
+            namePanel = new cGridBag();
+            
+        nameField = AddText(namePanel, copy.GetName());
+        namePanel.add(nameField);
+        oe.ctrlPanel.add(namePanel);
+        
+        oe.ctrlPanel.Return();
         
         if (!GroupEditor.allparams)
             return;
 
-        liveCB = AddCheckBox(oe, "Live", copy.live);
-        link2masterCB = AddCheckBox(oe, "Supp", copy.link2master);
-        hideCB = AddCheckBox(oe, "Hide", copy.hide);
+            setupPanel = new cGridBag().setVertical(false);
+            
+        liveCB = AddCheckBox(setupPanel, "Live", copy.live);
+        link2masterCB = AddCheckBox(setupPanel, "Supp", copy.link2master);
+        hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
 //            Return();
-        markCB = AddCheckBox(oe, "Mark", copy.marked);
-        rewindCB = AddCheckBox(oe, "Rew", copy.rewind);
-        randomCB = AddCheckBox(oe, "Rand", copy.random);
-        Return();
-        resetButton = AddButton(oe, "Reset");
-        stepButton = AddButton(oe, "Step");
+        markCB = AddCheckBox(setupPanel, "Mark", copy.marked);
+        rewindCB = AddCheckBox(setupPanel, "Rew", copy.rewind);
+        randomCB = AddCheckBox(setupPanel, "Rand", copy.random);
+
+        oe.ctrlPanel.add(setupPanel);
+        oe.ctrlPanel.Return();
+        
+            commandsPanel = new cGridBag().setVertical(false);
+        
+        resetButton = AddButton(commandsPanel, "Reset");
+        stepButton = AddButton(commandsPanel, "Step");
 //            resetAllButton = AddButton(oe, "Reset All");
 //            stepAllButton = AddButton(oe, "Step All");
-        speedupCB = AddCheckBox(oe, "Speed", copy.speedup);
+        speedupCB = AddCheckBox(commandsPanel, "Speed", copy.speedup);
 //            Return();
-        slowerButton = AddButton(oe, "Slow");
-        fasterButton = AddButton(oe, "Fast");
-        remarkButton = AddButton(oe, "Rem");
+        slowerButton = AddButton(commandsPanel, "Slow");
+        fasterButton = AddButton(commandsPanel, "Fast");
+        remarkButton = AddButton(commandsPanel, "Remark");
 
-        //Return();
+        oe.ctrlPanel.add(commandsPanel);
+        oe.ctrlPanel.Return();
 
-    //normalpushField = AddSlider(oe.ctrlPanel, "Push", -10, 10, 0, -1);
+    pushPanel = AddSlider(oe.ctrlPanel, "Push", -10, 10, 0, 1);
+    normalpushField = (cNumberSlider)pushPanel.getComponent(1);
     //Return();
+
+        oe.ctrlPanel.Return();
             
 //	oe.ctrlPanel.add(stepButton = new cButton("Step"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
@@ -1076,7 +1087,7 @@
         oe.aConstraints.gridwidth = 1;
         /**/
         nameField = AddText(oe.ctrlPanel, copy.GetName());
-        Return();
+        oe.ctrlPanel.Return();
 
         //ctrlPanel.add(textureButton = new Button("Texture..."));
         //textureButton.setEnabled(false);
@@ -1253,10 +1264,11 @@
         //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
         //tmp.setName("Edit");
         objectPanel.add(materialPanel);
-        JPanel north = new JPanel(new BorderLayout());
-        north.setName("Edit");
-        north.add(ctrlPanel, BorderLayout.NORTH);
-        objectPanel.add(north);
+//        JPanel north = new JPanel(new BorderLayout());
+//        north.setName("Edit");
+//        north.add(ctrlPanel, BorderLayout.NORTH);
+//        objectPanel.add(north);
+        objectPanel.add(ctrlPanel);
         objectPanel.add(infoPanel);
 
         /*
@@ -1415,7 +1427,7 @@
         ctrlPanel.removeAll();
     }
 
-    void SetupMaterial(cGridBag ctrlPanel)
+    void SetupMaterial(cGridBag panel)
     {
          /*
         ctrlPanel.add(materialLabel = new JLabel("MATERIAL : "), aConstraints);
@@ -1435,7 +1447,7 @@
         editBar.add(propagateToggle = new cCheckBox("Prop", propagate)); // , aConstraints);
         editBar.add(multiplyToggle = new cCheckBox("Mult", false)); // , aConstraints);
 
-        ctrlPanel.add(editBar);
+        panel.add(editBar);
         
         /**/
         //aConstraints.weighty = 0;
@@ -1484,9 +1496,9 @@
                 shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         colorSection.add(shadowbias);
 
-        ctrlPanel.add(new JSeparator());
+        panel.add(new JSeparator());
         
-        ctrlPanel.add(colorSection);
+        panel.add(colorSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
@@ -1534,9 +1546,9 @@
                 fakedepth.add(fakedepthField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         diffuseSection.add(fakedepth);
 
-        ctrlPanel.add(new JSeparator());
+        panel.add(new JSeparator());
         
-        ctrlPanel.add(diffuseSection);
+        panel.add(diffuseSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
@@ -1572,7 +1584,7 @@
                 velvet.add(velvetField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         specularSection.add(velvet);
 
-        shiftField = AddSlider(specularSection, "Shift", 0.001, 50, copy.material.shift, -1);
+        shiftField = (cNumberSlider)AddSlider(specularSection, "Shift", 0.001, 50, copy.material.shift, -1).getComponent(1);
         //Return();
 //		ctrlPanel.add(shiftLabel = new JLabel("Shift"), aConstraints);
 //		shiftLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -1585,9 +1597,9 @@
 //		aConstraints.gridwidth = 1;
 
 
-        ctrlPanel.add(new JSeparator());
+        panel.add(new JSeparator());
         
-        ctrlPanel.add(specularSection);
+        panel.add(specularSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
@@ -1617,9 +1629,9 @@
                 opacity.add(opacityField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
         globalSection.add(opacity);
 
-        ctrlPanel.add(new JSeparator());
+        panel.add(new JSeparator());
         
-        ctrlPanel.add(globalSection);
+        panel.add(globalSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
@@ -1661,9 +1673,9 @@
                 opacityPower.add(opacityPowerField = new cNumberSlider(this, 0.0, 10 /*10 dec 2013*/)); // , aConstraints);
         textureSection.add(opacityPower);
 
-        ctrlPanel.add(new JSeparator());
+        panel.add(new JSeparator());
         
-        ctrlPanel.add(textureSection);
+        panel.add(textureSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
 
@@ -2482,6 +2494,7 @@
                 }
                 if (input == null)
                 {
+                new Exception().printStackTrace();
                     System.exit(0);
                 }
 
@@ -3211,6 +3224,7 @@
             callee.refreshContents();
         } else
         {
+                new Exception().printStackTrace();
             System.exit(0);
         }
     }
@@ -3421,6 +3435,7 @@
                 || e.getSource() == apertureField
                 || e.getSource() == shadowblurField)
         {
+                new Exception().printStackTrace();
             System.exit(0);
             cameraView.options1[0] = (float) focusField.getFloat() * 10;
             cameraView.options1[1] = (float) apertureField.getFloat() / 1000;
@@ -4392,8 +4407,8 @@
     //MenuItem normalLensItem;
     MenuItem editCameraItem;
     MenuItem revertCameraItem;
-    CheckboxMenuItem toggleLiveItem;
     MenuItem stepItem;
+    CheckboxMenuItem toggleLiveItem;
     CheckboxMenuItem toggleFullScreenItem;
     CheckboxMenuItem toggleTimelineItem;
     CheckboxMenuItem toggleRenderItem;
diff --git a/Object3D.java b/Object3D.java
index 70c7ead..2cb44d8 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -2300,6 +2300,7 @@
     {
         if (newWindow)
         {
+                new Exception().printStackTrace();
             System.exit(0);
             if (parent != null)
             {
diff --git a/ParticleEditor.java b/ParticleEditor.java
index 8533f74..31e626f 100644
--- a/ParticleEditor.java
+++ b/ParticleEditor.java
@@ -70,6 +70,8 @@
         oe.aConstraints.gridwidth = 1;
          */
         super.SetupUI2(oe);
+        
+        particlesPanel = AddSlider(oe.ctrlPanel, "Particles", 0, 1000, particlesystem.numParticles);
 
 //		oe.aConstraints.gridx = 0;
 //		oe.aConstraints.gridwidth = 1;
@@ -82,32 +84,44 @@
 //        
 //        frameField.setFloat(particlesystem.initialVelocity);
 
-        particlesField = AddSlider(oe.ctrlPanel, "Particles", 0, 1000, particlesystem.numParticles); //, 1);
-        Return();
-        velocityField = AddSlider(oe.ctrlPanel, "Speed", 0, 10, particlesystem.initialVelocity, 1);
-        Return();
-        timestepField = AddSlider(oe.ctrlPanel, "Timestep", 0.001f, 1, particlesystem.controller.timestep, 1);
-        Return();
-        delayField = AddSlider(oe.ctrlPanel, "Delay", 0, 10, particlesystem.creationdelay, 1);
-        Return();
-        angleminField = AddSlider(oe.ctrlPanel, "Angle min", 0, (float)Math.PI, particlesystem.minimumAngle, 1);
-        Return();
-        anglemaxField = AddSlider(oe.ctrlPanel, "Angle max", 0, (float)Math.PI, particlesystem.maximumAngle, 1);
-        Return();
-        sizeminField = AddSlider(oe.ctrlPanel, "Size min", 0, 10, particlesystem.minimumSize, 1);
-        Return();
-        sizemaxField = AddSlider(oe.ctrlPanel, "Size max", 0, 10, particlesystem.maximumSize, 1);
-        Return();
-        lifeminField = AddSlider(oe.ctrlPanel, "Life min", 0, 100, particlesystem.minimumLifeTime, 1);
-        Return();
-        lifemaxField = AddSlider(oe.ctrlPanel, "Life max", 0, 100, particlesystem.maximumLifeTime, 1);
-        Return();
-        densityField = AddSlider(oe.ctrlPanel, "Density", 0, 1, particlesystem.density, 1);
-        Return();
-        gravityField = AddSlider(oe.ctrlPanel, "Gravity", 0, 1, -particlesystem.controller.gvector.y, 1);
-        Return();
-        standbyField = AddSlider(oe.ctrlPanel, "Standby", 0, 1, particlesystem.standby, 1);
-        Return();
+        particlesField = (cNumberSlider)particlesPanel.getComponent(1); //, 1);
+        oe.ctrlPanel.Return();
+                speedPanel = AddSlider(oe.ctrlPanel, "Speed", 0, 10, particlesystem.initialVelocity, 1);
+        speedField = (cNumberSlider)speedPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                timestepPanel = AddSlider(oe.ctrlPanel, "Timestep", 0.001f, 1, particlesystem.controller.timestep, 1);
+        timestepField = (cNumberSlider)timestepPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                delayPanel = AddSlider(oe.ctrlPanel, "Delay", 0, 10, particlesystem.creationdelay, 1);
+        delayField = (cNumberSlider)delayPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                angleminPanel = AddSlider(oe.ctrlPanel, "Angle min", 0, (float)Math.PI, particlesystem.minimumAngle, 1);
+        angleminField = (cNumberSlider)angleminPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                anglemaxPanel = AddSlider(oe.ctrlPanel, "Angle max", 0, (float)Math.PI, particlesystem.maximumAngle, 1);
+        anglemaxField = (cNumberSlider)anglemaxPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                sizeminPanel = AddSlider(oe.ctrlPanel, "Size min", 0, 10, particlesystem.minimumSize, 1);
+        sizeminField = (cNumberSlider)sizeminPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                sizemaxPanel = AddSlider(oe.ctrlPanel, "Size max", 0, 10, particlesystem.maximumSize, 1);
+        sizemaxField = (cNumberSlider)sizemaxPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                lifeminPanel = AddSlider(oe.ctrlPanel, "Life min", 0, 100, particlesystem.minimumLifeTime, 1);
+        lifeminField = (cNumberSlider)lifeminPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                lifemaxPanel = AddSlider(oe.ctrlPanel, "Life max", 0, 100, particlesystem.maximumLifeTime, 1);
+        lifemaxField = (cNumberSlider)lifemaxPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                densityPanel = AddSlider(oe.ctrlPanel, "Density", 0, 1, particlesystem.density, 1);
+        densityField = (cNumberSlider)densityPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                gravityPanel = AddSlider(oe.ctrlPanel, "Gravity", 0, 1, -particlesystem.controller.gvector.y, 1);
+        gravityField = (cNumberSlider)gravityPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                standbyPanel = AddSlider(oe.ctrlPanel, "Standby", 0, 1, particlesystem.standby, 1);
+        standbyField = (cNumberSlider)standbyPanel.getComponent(1);
+        oe.ctrlPanel.Return();
 
 //		oe.aConstraints.gridy += 1;
 //		oe.aConstraints.gridx = 0;
@@ -177,7 +191,7 @@
     {
         //System.out.println("Biparam :: stateChanged");
         if (e.getSource() == particlesField ||
-            e.getSource() == velocityField ||
+            e.getSource() == speedField ||
             e.getSource() == delayField ||
             e.getSource() == timestepField ||
             e.getSource() == angleminField ||
@@ -204,7 +218,7 @@
     {
 //		System.out.println("Biparam :: Refresh");
         new Exception().printStackTrace();
-        particlesystem.initialVelocity = (float) velocityField.getFloat(); // biparam.minUDivs, 99);
+        particlesystem.initialVelocity = (float) speedField.getFloat(); // biparam.minUDivs, 99);
         particlesystem.controller.timestep = (float) timestepField.getFloat();
 
         refreshContents();
@@ -232,7 +246,7 @@
         //System.out.println("Biparam :: applySelf");
         //super.applySelf();
         particlesystem.numParticles = particlesField.getInteger(); // biparam.minUDivs, 99);
-        particlesystem.initialVelocity = (float) velocityField.getFloat(); // biparam.minUDivs, 99);
+        particlesystem.initialVelocity = (float) speedField.getFloat(); // biparam.minUDivs, 99);
         particlesystem.controller.timestep = (float) timestepField.getFloat();
         particlesystem.creationdelay = (float) delayField.getFloat();
         particlesystem.minimumSize = (float) sizeminField.getFloat();
@@ -253,19 +267,32 @@
 
     public void closeUI()
     {
-        Remove(particlesField);
-        Remove(velocityField);
-        Remove(timestepField);
-        Remove(delayField);
-        Remove(sizeminField);
-        Remove(sizemaxField);
-        Remove(angleminField);
-        Remove(anglemaxField);
-        Remove(lifeminField);
-        Remove(lifemaxField);
-        Remove(densityField);
-        Remove(gravityField);
-        Remove(standbyField);
+//        Remove(particlesField);
+//        Remove(speedField);
+//        Remove(timestepField);
+//        Remove(delayField);
+//        Remove(sizeminField);
+//        Remove(sizemaxField);
+//        Remove(angleminField);
+//        Remove(anglemaxField);
+//        Remove(lifeminField);
+//        Remove(lifemaxField);
+//        Remove(densityField);
+//        Remove(gravityField);
+//        Remove(standbyField);
+        objEditor.ctrlPanel.remove(particlesPanel);
+        objEditor.ctrlPanel.remove(speedPanel);
+        objEditor.ctrlPanel.remove(timestepPanel);
+        objEditor.ctrlPanel.remove(delayPanel);
+        objEditor.ctrlPanel.remove(sizeminPanel);
+        objEditor.ctrlPanel.remove(sizemaxPanel);
+        objEditor.ctrlPanel.remove(angleminPanel);
+        objEditor.ctrlPanel.remove(anglemaxPanel);
+        objEditor.ctrlPanel.remove(lifeminPanel);
+        objEditor.ctrlPanel.remove(lifemaxPanel);
+        objEditor.ctrlPanel.remove(densityPanel);
+        objEditor.ctrlPanel.remove(gravityPanel);
+        objEditor.ctrlPanel.remove(standbyPanel);
 
 //		ObjEditor oe = objEditor;
 
@@ -292,7 +319,7 @@
     ParticleSystem particlesystem;
     
     cNumberSlider particlesField;
-    cNumberSlider velocityField;
+    cNumberSlider speedField;
     cNumberSlider timestepField;
     cNumberSlider delayField;
     cNumberSlider sizeminField;
@@ -305,6 +332,20 @@
     cNumberSlider gravityField;
     cNumberSlider standbyField;
     
+    cGridBag particlesPanel;
+    cGridBag speedPanel;
+    cGridBag timestepPanel;
+    cGridBag delayPanel;
+    cGridBag sizeminPanel;
+    cGridBag sizemaxPanel;
+    cGridBag angleminPanel;
+    cGridBag anglemaxPanel;
+    cGridBag lifeminPanel;
+    cGridBag lifemaxPanel;
+    cGridBag densityPanel;
+    cGridBag gravityPanel;
+    cGridBag standbyPanel;
+    
     ObjectUI parent;
     //ObjEditor objEditor;
 }
diff --git a/PhysicsEditor.java b/PhysicsEditor.java
index 90f7668..223d83b 100644
--- a/PhysicsEditor.java
+++ b/PhysicsEditor.java
@@ -190,6 +190,7 @@
 	
 	void Refresh()
 	{
+                new Exception().printStackTrace();
             System.exit(0);
 		System.out.println("Biparam :: Refresh");
         physicsnode.gravity = (float)gravityField.getFloat(); // biparam.minUDivs, 99);
diff --git a/PointFlowEditor.java b/PointFlowEditor.java
index 8088102..4c75b0e 100644
--- a/PointFlowEditor.java
+++ b/PointFlowEditor.java
@@ -82,8 +82,8 @@
 //        
 //        frameField.setFloat(particlesystem.initialVelocity);
 
-        resizefactorField = AddSlider(oe.ctrlPanel, "Resize factor", 0, 2, particlesystem.resizefactor, 1);
-        Return();
+        resizefactorField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Resize factor", 0, 2, particlesystem.resizefactor, 1).getComponent(1);
+        oe.ctrlPanel.Return();
 //        velocityField = AddSlider(oe.ctrlPanel, "Speed", 0, 10, particlesystem.initialVelocity, 1);
 //        Return();
 //        timestepField = AddSlider(oe.ctrlPanel, "Timestep", 0.001f, 1, particlesystem.controller.timestep, 1);
@@ -94,10 +94,10 @@
 //        Return();
 //        anglemaxField = AddSlider(oe.ctrlPanel, "Angle max", 0, (float)Math.PI, particlesystem.maximumAngle, 1);
 //        Return();
-        sizeminField = AddSlider(oe.ctrlPanel, "Size min", 0, 0.01, particlesystem.minimumSize, 1);
-        Return();
-        sizemaxField = AddSlider(oe.ctrlPanel, "Size max", 0, 0.01, particlesystem.maximumSize, 1);
-        Return();
+        sizeminField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Size min", 0, 0.01, particlesystem.minimumSize, 1).getComponent(1);
+        oe.ctrlPanel.Return();
+        sizemaxField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Size max", 0, 0.01, particlesystem.maximumSize, 1).getComponent(1);
+        oe.ctrlPanel.Return();
 //        lifeminField = AddSlider(oe.ctrlPanel, "Life min", 0, 100, particlesystem.minimumLifeTime, 1);
 //        Return();
 //        lifemaxField = AddSlider(oe.ctrlPanel, "Life max", 0, 100, particlesystem.maximumLifeTime, 1);
diff --git a/RandomEditor.java b/RandomEditor.java
index e7ac3a1..7e433cf 100644
--- a/RandomEditor.java
+++ b/RandomEditor.java
@@ -9,6 +9,7 @@
 class RandomEditor extends ObjEditor implements //ItemListener,
         ChangeListener, ObjectUI, ActionListener
 {
+        cGridBag childPanel;
     RandomEditor(RandomNode inBP, GroupEditor callee)
     {
         super(inBP,callee);
@@ -59,10 +60,11 @@
 	void SetupUI2(ObjEditor oe)
 	{
             super.SetupUI2(oe);
+                childPanel = AddSlider(oe.ctrlPanel, "Child: ", 0, switchnode.Size()-1, switchnode.rnd);
                 
-            frameField = AddSlider(oe.ctrlPanel, "Child: ", 0, switchnode.Size()-1, switchnode.rnd);
-            Return();
-    }
+            childField = (cNumberSlider)childPanel.getComponent(1);
+            oe.ctrlPanel.Return();
+        }
 	
 	void Clear()
 	{
@@ -75,7 +77,7 @@
 	public void stateChanged(ChangeEvent e)
 	{
 	    //System.out.println("Biparam :: stateChanged");
-		if (e.getSource() == frameField)
+		if (e.getSource() == childField)
 		{
 		//System.out.println("#U = " + biparam.uDivs);
 		//System.out.println("#V = " + biparam.vDivs);
@@ -92,7 +94,7 @@
 	
 	void Refresh()
 	{
-            switchnode.rnd = frameField.getInteger();
+            switchnode.rnd = childField.getInteger();
 		
             refreshContents();
 	}
@@ -100,7 +102,7 @@
     /**/
     public void applySelf()
     {
-        switchnode.rnd = frameField.getInteger();
+        switchnode.rnd = childField.getInteger();
     }
     /**/
     
@@ -108,7 +110,8 @@
 	{
 		ObjEditor oe = objEditor;
 		
-                Remove(frameField);
+                //Remove(childField);
+                oe.ctrlPanel.remove(this.childPanel);
                 
                 super.closeUI();
 	}
@@ -124,7 +127,7 @@
 	}
 	
     RandomNode switchnode;
-    cNumberSlider frameField;
+    cNumberSlider childField;
 
 	ObjectUI parent;
 	
diff --git a/SuperEditor.java b/SuperEditor.java
index b7632c5..f3e5c59 100644
--- a/SuperEditor.java
+++ b/SuperEditor.java
@@ -8,6 +8,8 @@
 import javax.swing.*;
 import javax.swing.event.*;
 
+import grafeme.ui.*;
+
 class SuperEditor extends BiparamEditor implements ChangeListener, ObjectUI // ActionListener
 {
 	/*
@@ -46,38 +48,29 @@
 	void SetupUI2(ObjEditor oe)
 	{
             super.SetupUI2(oe);
-		ObjEditor.aConstraints.gridwidth = 1;
-		oe.ctrlPanel.add(northLabel = new JLabel("XY Exp"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		ObjEditor.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		ObjEditor.aConstraints.gridx += 1;
-		ObjEditor.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(northField = new NumberSlider(0.0001,20,-1), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		ObjEditor.aConstraints.gridx = 0;
-		ObjEditor.aConstraints.gridy += 1;
-		ObjEditor.aConstraints.gridwidth = 1;
-		ObjEditor.aConstraints.fill = GridBagConstraints.NONE;
-		oe.ctrlPanel.add(eastLabel = new JLabel("Z Exp"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		ObjEditor.aConstraints.gridx += 1;
-		ObjEditor.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		ObjEditor.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
-		oe.ctrlPanel.add(eastField = new NumberSlider(0.0001,20,-1), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
-		ObjEditor.aConstraints.gridx = 0;
-		ObjEditor.aConstraints.gridy += 1;
-		ObjEditor.aConstraints.gridwidth = 1;
-			ObjEditor.aConstraints.gridwidth = 3;
-//			ObjEditor.aConstraints.anchor = GridBagConstraints.WEST;
-            oe.ctrlPanel.add(optionCB = new JCheckBox("Reverse", (superE.radius<0)), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+            
+            northPanel = new cGridBag();
+            
+		northPanel.add(northLabel = new JLabel("XY Exp")); //, ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                northPanel.add(northField = new cNumberSlider(this, 0.0001,20,-1)); //, ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                oe.ctrlPanel.add(northPanel);		
+                
+                oe.ctrlPanel.Return();
+            eastPanel = new cGridBag();
+                eastPanel.add(eastLabel = new JLabel("Z Exp")); //, ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                eastPanel.add(eastField = new cNumberSlider(this, 0.0001,20,-1)); //, ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+                oe.ctrlPanel.add(eastPanel);		
+
+                oe.ctrlPanel.Return();
+                //			ObjEditor.aConstraints.anchor = GridBagConstraints.WEST;
+            oe.ctrlPanel.add(optionCB = new JCheckBox("Reverse", (superE.radius<0))); //, ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 			optionCB.addItemListener(this);
-//			ObjEditor.aConstraints.anchor = GridBagConstraints.EAST;
-			ObjEditor.aConstraints.gridwidth = 1;
-		ObjEditor.aConstraints.gridx = 0;
-		ObjEditor.aConstraints.gridy += 1;
-		northField.setFloat(superE.north);
+
+                oe.ctrlPanel.Return();
+                
+                        northField.setFloat(superE.north);
 		eastField.setFloat(superE.east);
-		northField.addChangeListener(this);
-		eastField.addChangeListener(this);
-		ObjEditor.aConstraints.fill = GridBagConstraints.NONE;
-	}
+        }
 	
 	public void closeUI()
 	{
@@ -87,10 +80,12 @@
 		eastField.removeChangeListener(this);
 		optionCB.removeItemListener(this);
 		oe.ctrlPanel.remove(optionCB);
-		oe.ctrlPanel.remove(northField);
-		oe.ctrlPanel.remove(eastField);
-		oe.ctrlPanel.remove(northLabel);
-		oe.ctrlPanel.remove(eastLabel);
+		oe.ctrlPanel.remove(northPanel);
+		oe.ctrlPanel.remove(eastPanel);
+//		oe.ctrlPanel.remove(northField);
+//		oe.ctrlPanel.remove(eastField);
+//		oe.ctrlPanel.remove(northLabel);
+//		oe.ctrlPanel.remove(eastLabel);
 		//oe.ctrlPanel.repaint();
 		
 		super.closeUI();
@@ -184,9 +179,11 @@
 	Superellipsoid superE;
 	JLabel northLabel;
 	JLabel eastLabel;
-	NumberSlider northField;
-	NumberSlider eastField;
+	cNumberSlider northField;
+	cNumberSlider eastField;
 	
+        cGridBag northPanel;
+        cGridBag eastPanel;
 	//BiparamEditor objEditor;
 }
 
diff --git a/SwitchEditor.java b/SwitchEditor.java
index 08c5be3..e6d6892 100644
--- a/SwitchEditor.java
+++ b/SwitchEditor.java
@@ -81,11 +81,11 @@
 //        
 //        frameField.setInteger(frameselect.child);
             
-            frameField = AddSlider(oe.ctrlPanel, "Child: ", 0, switchnode.getNumFrames()-1, switchnode.child);
-            Return();
+            frameField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Child: ", 0, switchnode.getNumFrames()-1, switchnode.child).getComponent(1);
+        oe.ctrlPanel.Return();
             
-            speedField = AddSlider(oe.ctrlPanel, "Damp: ", 0, 500, switchnode.speed);
-            Return();
+            speedField = (cNumberSlider)AddSlider(oe.ctrlPanel, "Damp: ", 0, 500, switchnode.speed).getComponent(1);
+        oe.ctrlPanel.Return();
             
 //		oe.aConstraints.gridy += 1;
 //        
diff --git a/TorusEditor.java b/TorusEditor.java
index 769c3a2..7ccb126 100644
--- a/TorusEditor.java
+++ b/TorusEditor.java
@@ -39,10 +39,13 @@
 	{
             super.SetupUI2(oe);
             
-            majorField = AddSlider(oe.ctrlPanel, "Major Rad:", 0, 10.0, torus.major, 1);
-            Return();
-            minorField = AddSlider(oe.ctrlPanel, "Minor Rad:", 0, 10.0, torus.minor, 1);
-            Return();
+            majorPanel = AddSlider(oe.ctrlPanel, "Major Rad:", 0, 10.0, torus.major, 1);
+            majorField = (cNumberSlider)majorPanel.getComponent(1);
+            oe.ctrlPanel.Return();
+            
+            minorPanel = AddSlider(oe.ctrlPanel, "Minor Rad:", 0, 10.0, torus.minor, 1);
+            minorField = (cNumberSlider)minorPanel.getComponent(1);
+            oe.ctrlPanel.Return();
 //        oe.ctrlPanel.add(majorLabel = new JLabel("Major Rad"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
 //	oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
 //	oe.aConstraints.gridx += 1;
@@ -79,8 +82,10 @@
 //		oe.ctrlPanel.remove(majorLabel);
 //		oe.ctrlPanel.remove(minorLabel);
 //		//oe.ctrlPanel.repaint();
-                Remove(majorField);
-                Remove(minorField);
+//                Remove(majorField);
+//                Remove(minorField);
+		oe.ctrlPanel.remove(majorPanel);
+		oe.ctrlPanel.remove(minorPanel);
 		
 		super.closeUI();
 	}
@@ -159,5 +164,7 @@
     cNumberSlider majorField;
     cNumberSlider minorField;
 	
+    cGridBag majorPanel;
+    cGridBag minorPanel;
 	//BiparamEditor objEditor;
 }
diff --git a/cSpring.java b/cSpring.java
index 914577b..9dd6edc 100644
--- a/cSpring.java
+++ b/cSpring.java
@@ -1208,7 +1208,10 @@
                 }
                 
                 if (edges.size()%2 != 0)
+                {
+                new Exception().printStackTrace();
                     System.exit(0);
+                }
             }
 
        //     if (clearsprings)
@@ -1516,7 +1519,10 @@
                     second = springs.get((i+1)%springs.size());
 
                     if (first == second)
+                    {
+                new Exception().printStackTrace();
                         System.exit(0);
+                    }
 
                     temp.set(first.GetOther(this).position);
                     temp.sub(position);
@@ -1646,7 +1652,10 @@
                 Spring second = springs.get((i+1)%springs.size());
                 
                 if (first == second)
+                {
+                    new Exception().printStackTrace();
                     System.exit(0);
+                }
                 
                 temp.set(first.GetOther(this).position);
                 temp.sub(position);
@@ -3289,6 +3298,7 @@
             
             if (N2.mass == Float.MAX_VALUE)
             {
+                    new Exception().printStackTrace();
                 System.exit(0);
                 magnitude *= solidity; // * K;
                 
diff --git a/cSpringEditor.java b/cSpringEditor.java
index 788ebea..989e761 100644
--- a/cSpringEditor.java
+++ b/cSpringEditor.java
@@ -8,7 +8,6 @@
 
 class cSpringEditor extends ObjEditor implements ItemListener, ChangeListener, ObjectUI, ActionListener
 {
-
     cSpringEditor(cSpring inBP, GroupEditor callee)
     {
         super(inBP, callee);
@@ -53,17 +52,19 @@
     {
         super.SetupUI2(oe);
 
+        firstrowPanel = new cGridBag();
+        
 ////        oe.ctrlPanel.add(animate = new JCheckBox("Live", spring.live), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 ////        ObjEditor.aConstraints.gridx += 1;
-            freezeButton = AddButton(oe, "Freeze");
+            freezeButton = AddButton(firstrowPanel, "Freeze");
 //	oe.ctrlPanel.add(freezeButton = new cButton("Freeze"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
 ////	oe.ctrlPanel.add(stepButton = new cButton("Step"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 ////        ObjEditor.aConstraints.gridx += 1;
-            avoiderButton = AddButton(oe, "Avoid");
+            avoiderButton = AddButton(firstrowPanel, "Avoid");
 //	oe.ctrlPanel.add(avoiderButton = new cButton("Avoid"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            autofreeze = AddCheckBox(oe, "Blow", spring.IsAutoFreeze());
+            autofreeze = AddCheckBox(firstrowPanel, "Blow", spring.IsAutoFreeze());
 //        oe.ctrlPanel.add(autofreeze = new JCheckBox("Blow", spring.IsAutoFreeze()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
 //            Return();
@@ -71,17 +72,20 @@
 //        ObjEditor.aConstraints.gridx = 0;
 ////	oe.ctrlPanel.add(resetButton = new cButton("Reset"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 ////        ObjEditor.aConstraints.gridx += 1;
-            fastnormals = AddCheckBox(oe, "Fast", spring.IsFastNormals());
+            fastnormals = AddCheckBox(firstrowPanel, "Fast", spring.IsFastNormals());
 //        oe.ctrlPanel.add(fastnormals = new JCheckBox("Fast", spring.IsFastNormals()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            springs = AddCheckBox(oe, "Show", spring.showsprings);
+            springs = AddCheckBox(firstrowPanel, "Show", spring.showsprings);
 //        oe.ctrlPanel.add(springs = new JCheckBox("Springs", spring.showsprings), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            info = AddCheckBox(oe, "Info", spring.ShowInfo());
+            info = AddCheckBox(firstrowPanel, "Info", spring.ShowInfo());
 //        oe.ctrlPanel.add(info = new JCheckBox("Info", spring.ShowInfo()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
-            Return();
+        oe.ctrlPanel.add(firstrowPanel);
+        oe.ctrlPanel.Return();
 //        ObjEditor.aConstraints.gridy += 1;
 //        ObjEditor.aConstraints.gridx = 0;
+        
+                stiffnessPanel = AddSlider(oe.ctrlPanel, "Stiffness:", 0, 20.0, Math.log(spring.K+1), 1);
         
 //        ObjEditor.aConstraints.anchor = GridBagConstraints.WEST;
 //        ObjEditor.aConstraints.gridwidth = 1;
@@ -96,8 +100,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            stiffnessField = AddSlider(oe.ctrlPanel, "Stiffness:", 0, 20.0, Math.log(spring.K+1), 1);
-            Return();
+            stiffnessField = (cNumberSlider)stiffnessPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                massPanel = AddSlider(oe.ctrlPanel, "Mass:", 0, 20.0, Math.log(spring.M+1), 1);
         
 //        oe.ctrlPanel.add(massLabel = new JLabel("Mass"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	massLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -109,8 +114,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            massField = AddSlider(oe.ctrlPanel, "Mass:", 0, 20.0, Math.log(spring.M+1), 1);
-            Return();
+            massField = (cNumberSlider)massPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                gravityPanel = AddSlider(oe.ctrlPanel, "Gravity:", 0, 20.0, Math.log(spring.G.acceleration+1), 1);
         
 //        oe.ctrlPanel.add(gravityLabel = new JLabel("Gravity"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	gravityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -122,8 +128,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            gravityField = AddSlider(oe.ctrlPanel, "Gravity:", 0, 20.0, Math.log(spring.G.acceleration+1), 1);
-            Return();
+            gravityField = (cNumberSlider)gravityPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                normalPanel = AddSlider(oe.ctrlPanel, "Normal:", 0, 20.0, Math.log(spring.normalpush+1), 1);
  
 //        oe.ctrlPanel.add(normalLabel = new JLabel("Normal"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	normalLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -135,8 +142,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            normalField = AddSlider(oe.ctrlPanel, "Normal:", 0, 20.0, Math.log(spring.normalpush+1), 1);
-            Return();
+            normalField = (cNumberSlider)normalPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                restlengthPanel = AddSlider(oe.ctrlPanel, "Restlength:", 0, 2.0, spring.restlengthFactor, 1);
  
         /**/
 //        oe.ctrlPanel.add(thicknessLabel = new JLabel("Restlength"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
@@ -149,8 +157,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            restlengthField = AddSlider(oe.ctrlPanel, "Restlength:", 0, 2.0, spring.restlengthFactor, 1);
-            Return();
+            restlengthField = (cNumberSlider)restlengthPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                distortionPanel = AddSlider(oe.ctrlPanel, "Distortion:", 0, 2.0, spring.distortion, 1);
 
 //        oe.ctrlPanel.add(distortionLabel = new JLabel("Distortion"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	distortionLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -162,9 +171,10 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            distortionField = AddSlider(oe.ctrlPanel, "Distortion:", 0, 2.0, spring.distortion, 1);
-            Return();
+            distortionField = (cNumberSlider)distortionPanel.getComponent(1);
+        oe.ctrlPanel.Return();
         /**/
+                limitPanel = AddSlider(oe.ctrlPanel, "Limit:", 0, 20.0, Math.log(spring.limit+1), 1);
         
 //        oe.ctrlPanel.add(limitLabel = new JLabel("Limit"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	limitLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -176,8 +186,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            limitField = AddSlider(oe.ctrlPanel, "Limit:", 0, 20.0, Math.log(spring.limit+1), 1);
-            Return();
+            limitField = (cNumberSlider)limitPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                viscosityPanel = AddSlider(oe.ctrlPanel, "Viscosity:", 0, 20.0, Math.log(spring.W.wind+1), 1);
         
 //        oe.ctrlPanel.add(viscosityLabel = new JLabel("Viscosity"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	viscosityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -189,8 +200,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            viscosityField = AddSlider(oe.ctrlPanel, "Viscosity:", 0, 20.0, Math.log(spring.W.wind+1), 1);
-            Return();
+            viscosityField = (cNumberSlider)viscosityPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                fluidspeedPanel = AddSlider(oe.ctrlPanel, "Speed:", 0, 20.0, Math.log(spring.W.speed+1), 1);
  
 //        oe.ctrlPanel.add(fluidspeedLabel = new JLabel("Speed"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	fluidspeedLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -202,8 +214,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            fluidspeedField = AddSlider(oe.ctrlPanel, "Speed:", 0, 20.0, Math.log(spring.W.speed+1), 1);
-            Return();
+            fluidspeedField = (cNumberSlider)fluidspeedPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                liftPanel = AddSlider(oe.ctrlPanel, "Lift:", 0, 1.0, spring.W.lift, 1);
  
 //        oe.ctrlPanel.add(liftLabel = new JLabel("Lift"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	liftLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -215,8 +228,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            liftField = AddSlider(oe.ctrlPanel, "Lift:", 0, 1.0, spring.W.lift, 1);
-            Return();
+            liftField = (cNumberSlider)liftPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                frictionPanel = AddSlider(oe.ctrlPanel, "Friction:", 0, 1.0, spring.friction, 1);
         
 //        oe.ctrlPanel.add(frictionLabel = new JLabel("Friction"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	frictionLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -228,8 +242,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            frictionField = AddSlider(oe.ctrlPanel, "Friction:", 0, 1.0, spring.friction, 1);
-            Return();
+            frictionField = (cNumberSlider)frictionPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                timestepPanel = AddSlider(oe.ctrlPanel, "Timestep:", 0, 1.0, spring.timestep, 1);
         
 //        oe.ctrlPanel.add(timestepLabel = new JLabel("Timestep"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	timestepLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -241,8 +256,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            timestepField = AddSlider(oe.ctrlPanel, "Timestep:", 0, 1.0, spring.timestep, 1);
-            Return();
+            timestepField = (cNumberSlider)timestepPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                poseslownessPanel = AddSlider(oe.ctrlPanel, "Slowness:", 0, 100.0, spring.slowness, 1);
         
 //        oe.ctrlPanel.add(poseslownessLabel = new JLabel("Slowness"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	timestepLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -254,8 +270,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            poseslownessField = AddSlider(oe.ctrlPanel, "Slowness:", 0, 100.0, spring.slowness, 1);
-            Return();
+            poseslownessField = (cNumberSlider)poseslownessPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                dampingPanel = AddSlider(oe.ctrlPanel, "Damping:", 0, 20.0, -Math.log(spring.damping)*10, 1);
         
 //        oe.ctrlPanel.add(dampingLabel = new JLabel("Damping"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	dampingLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -267,8 +284,9 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            dampingField = AddSlider(oe.ctrlPanel, "Damping:", 0, 20.0, -Math.log(spring.damping)*10, 1);
-            Return();
+            dampingField = (cNumberSlider)dampingPanel.getComponent(1);
+        oe.ctrlPanel.Return();
+                solidityPanel = AddSlider(oe.ctrlPanel, "Solidity:", 0, 20.0, Math.log(spring.solidity+1), 1);
         
 //        oe.ctrlPanel.add(solidityLabel = new JLabel("Solidity"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //	solidityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
@@ -280,8 +298,8 @@
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        //ObjEditor.aConstraints.fill = 0;
 //        ObjEditor.aConstraints.gridx -= 1;
-            solidityField = AddSlider(oe.ctrlPanel, "Solidity:", 0, 20.0, Math.log(spring.solidity+1), 1);
-            Return();
+            solidityField = (cNumberSlider)solidityPanel.getComponent(1);
+        oe.ctrlPanel.Return();
         
             //System.out.println("K = " + spring.K + "; G = " + spring.G.acceleration + "; H = " + spring.H + "; V = " + spring.W.wind);
         
@@ -316,52 +334,61 @@
 //        solidityField.setFloat(Math.log(spring.solidity+1));
 //        solidityField.addChangeListener(this);
         
+        secondrowPanel = new cGridBag();
+        
 //        ObjEditor.aConstraints.gridwidth = 1;
 //        ObjEditor.aConstraints.anchor = GridBagConstraints.WEST;
 //	oe.ctrlPanel.add(revertButton = new cButton("Revert"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            revertButton = AddButton(oe, "Revert");
+            revertButton = AddButton(secondrowPanel, "Revert");
 //        oe.ctrlPanel.add(epsequal = new JCheckBox("Eps", spring.IsEpsEqual()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            epsequal = AddCheckBox(oe, "Eps", spring.IsEpsEqual());
+            epsequal = AddCheckBox(secondrowPanel, "Eps", spring.IsEpsEqual());
 //        oe.ctrlPanel.add(linkUV = new JCheckBox("link UV", spring.IsLinkUV()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridy += 1;
 //        ObjEditor.aConstraints.gridx = 0;
-            linkUV = AddCheckBox(oe, "UV", spring.IsLinkUV());
+            linkUV = AddCheckBox(secondrowPanel, "UV", spring.IsLinkUV());
 //        oe.ctrlPanel.add(poseCB = new JCheckBox("Change:", spring.IsPoseMesh()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            poseCB = AddCheckBox(oe, "Loop", spring.IsPoseMesh());
+            poseCB = AddCheckBox(secondrowPanel, "Loop", spring.IsPoseMesh());
 //	oe.ctrlPanel.add(poseButton = new cButton("Pose"), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridy += 1;
 //        ObjEditor.aConstraints.gridx = 0;
-            poseButton = AddButton(oe, "Pose");
-            Return();
-        
-            poseField = AddSlider(oe.ctrlPanel, "Pose:", 0, spring.posegroup==null?0:spring.posegroup.size()-1, spring.poseid);
-            Return();
+            poseButton = AddButton(secondrowPanel, "Pose");
             
+        oe.ctrlPanel.add(secondrowPanel);
+        oe.ctrlPanel.Return();
+        
+                posePanel = AddSlider(oe.ctrlPanel, "Pose:", 0, spring.posegroup==null?0:spring.posegroup.size()-1, spring.poseid);
+        
+            poseField = (cNumberSlider)posePanel.getComponent(1);
+        oe.ctrlPanel.Return();
+            
+        thirdrowPanel = new cGridBag();
+        
 //        oe.ctrlPanel.add(solid = new JCheckBox("Solid", spring.IsSolid()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            solid = AddCheckBox(oe, "3D", spring.IsSolid());
+            solid = AddCheckBox(thirdrowPanel, "3D", spring.IsSolid());
 //        oe.ctrlPanel.add(soft = new JCheckBox("Soft", spring.IsSoft()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridy += 1;
 //        ObjEditor.aConstraints.gridx = 0;
-            soft = AddCheckBox(oe, "Soft", spring.IsSoft());
+            soft = AddCheckBox(thirdrowPanel, "Soft", spring.IsSoft());
 //        oe.ctrlPanel.add(fold = new JCheckBox("Fold", spring.IsFold()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            fold = AddCheckBox(oe, "Fold", spring.IsFold());
+            fold = AddCheckBox(thirdrowPanel, "Fold", spring.IsFold());
 //        oe.ctrlPanel.add(unfold = new JCheckBox("Unfold", spring.IsUnfold()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
-            unfold = AddCheckBox(oe, "Unf", spring.IsUnfold());
+            unfold = AddCheckBox(thirdrowPanel, "Unf", spring.IsUnfold());
 //        oe.ctrlPanel.add(normalizeCounts = new JCheckBox("Counts", spring.IsNormalize()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
 //        ObjEditor.aConstraints.gridy += 1;
 //        ObjEditor.aConstraints.gridx = 0;
-            normalizeCounts = AddCheckBox(oe, "Cnt", spring.IsNormalize());
+            normalizeCounts = AddCheckBox(thirdrowPanel, "Cnt", spring.IsNormalize());
 // Invariants?...        oe.ctrlPanel.add(updatehandles = new JCheckBox("Update handles", spring.IsUpdateHandles()), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
 
-            Return();
+        oe.ctrlPanel.add(thirdrowPanel);
+        oe.ctrlPanel.Return();
 //	oe.ctrlPanel.add(freezeButton = new cButton(" Freeze "), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
 //        ObjEditor.aConstraints.gridx += 1;
 //	oe.ctrlPanel.add(stepButton = new cButton(" Step "), ObjEditor.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
@@ -595,21 +622,40 @@
     {
         ObjEditor oe = objEditor;
 
-                Remove(stiffnessField);
-                Remove(massField);
-                Remove(gravityField);
-                Remove(normalField);
-                Remove(limitField);
-                Remove(restlengthField);
-                Remove(distortionField);
-                Remove(viscosityField);
-                Remove(fluidspeedField);
-                Remove(liftField);
-                Remove(frictionField);
-                Remove(timestepField);
-                Remove(poseslownessField);
-                Remove(dampingField);
-                Remove(solidityField);
+//                Remove(stiffnessField);
+//                Remove(massField);
+//                Remove(gravityField);
+//                Remove(normalField);
+//                Remove(limitField);
+//                Remove(restlengthField);
+//                Remove(distortionField);
+//                Remove(viscosityField);
+//                Remove(fluidspeedField);
+//                Remove(liftField);
+//                Remove(frictionField);
+//                Remove(timestepField);
+//                Remove(poseslownessField);
+//                Remove(dampingField);
+//                Remove(solidityField);
+                objEditor.ctrlPanel.remove(firstrowPanel);
+                objEditor.ctrlPanel.remove(secondrowPanel);
+                objEditor.ctrlPanel.remove(thirdrowPanel);
+                objEditor.ctrlPanel.remove(stiffnessPanel);
+                objEditor.ctrlPanel.remove(massPanel);
+                objEditor.ctrlPanel.remove(gravityPanel);
+                objEditor.ctrlPanel.remove(normalPanel);
+                objEditor.ctrlPanel.remove(limitPanel);
+                objEditor.ctrlPanel.remove(restlengthPanel);
+                objEditor.ctrlPanel.remove(distortionPanel);
+                objEditor.ctrlPanel.remove(viscosityPanel);
+                objEditor.ctrlPanel.remove(fluidspeedPanel);
+                objEditor.ctrlPanel.remove(liftPanel);
+                objEditor.ctrlPanel.remove(frictionPanel);
+                objEditor.ctrlPanel.remove(timestepPanel);
+                objEditor.ctrlPanel.remove(poseslownessPanel);
+                objEditor.ctrlPanel.remove(dampingPanel);
+                objEditor.ctrlPanel.remove(solidityPanel);
+                objEditor.ctrlPanel.remove(posePanel);
 //        stiffnessField.removeChangeListener(this);
 //        massField.removeChangeListener(this);
 //        gravityField.removeChangeListener(this);
@@ -754,10 +800,8 @@
     cNumberSlider massField;
     cNumberSlider gravityField;
     cNumberSlider normalField;
-    cNumberSlider mgravityField;
     cNumberSlider fluidspeedField;
     cNumberSlider viscosityField;
-    cNumberSlider floorField;
     cNumberSlider limitField;
     cNumberSlider restlengthField;
     cNumberSlider distortionField;
@@ -770,6 +814,27 @@
 
     cNumberSlider poseField;
     
+    cGridBag firstrowPanel;
+    cGridBag secondrowPanel;
+    cGridBag thirdrowPanel;
+    
+        cGridBag stiffnessPanel;
+        cGridBag massPanel;
+        cGridBag gravityPanel;
+        cGridBag normalPanel;
+        cGridBag fluidspeedPanel;
+        cGridBag viscosityPanel;
+        cGridBag limitPanel;
+        cGridBag restlengthPanel;
+        cGridBag distortionPanel;
+        cGridBag dampingPanel;
+        cGridBag frictionPanel;
+        cGridBag liftPanel;
+        cGridBag poseslownessPanel;
+        cGridBag solidityPanel;
+        cGridBag timestepPanel;
+        cGridBag posePanel;
+        
 //    JCheckBox animate;
     JCheckBox thick;
     JCheckBox single;

--
Gitblit v1.6.2