From c209bbe1cf788c9af3dcffea7667c830170a3f1f Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Wed, 01 May 2019 20:30:51 -0400
Subject: [PATCH] Complete advanced mode.

---
 ObjEditor.java       |  101 ++++++++-----
 ScriptNode.java      |    6 
 BoundaryRep.java     |    5 
 CameraPane.java      |    4 
 SuperEditor.java     |   10 
 GroupEditor.java     |  184 ++++++++++++++++++-------
 cFileSystemPane.java |   54 ++++---
 RandomNode.java      |    6 
 8 files changed, 244 insertions(+), 126 deletions(-)

diff --git a/BoundaryRep.java b/BoundaryRep.java
index 69169d7..e938a9a 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -3902,6 +3902,11 @@
                 tsa.getNormals(0, normals);
                 tsa.getTextureCoordinates(0, 0, uvmap);
            //     tsa.getColors(0, colors);
+                
+                for (int i=colors.length; --i>=0;)
+                {
+                        colors[i] = 1;
+                }
 
                 int stripcount = tsa.getNumStrips();
                 triangles = new int[stripcount];
diff --git a/CameraPane.java b/CameraPane.java
index 235a4c3..e5811ae 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -106,7 +106,7 @@
 static    boolean OEIL = true;
 static    boolean OEILONCE = false; // do oeilon then oeiloff
 static    boolean LOOKAT = true;
-static    boolean RANDOM = true; // false;
+static    boolean SWITCH = true; // false;
 static    boolean HANDLES = false; // selection doesn't work!!
 static  boolean PAINTMODE = false;
 
@@ -2267,7 +2267,7 @@
 
     void ToggleRandom()
     {
-        RANDOM ^= true;
+        SWITCH ^= true;
     }
 
     void ToggleHandles()
diff --git a/GroupEditor.java b/GroupEditor.java
index 9db1b62..56e3aff 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -150,6 +150,8 @@
     
 	void SetupMenu2(ObjEditor oe)
 	{
+        if (Globals.ADVANCED)
+        {
 		oe.cameraMenu.add(lookAtItem = new MenuItem("Set Interest"));
 		//cameraMenu.add(lookFromItem = new MenuItem("Look From Selection"));
 		//cameraMenu.add(switchItem = new MenuItem("Reverse View"));
@@ -161,36 +163,48 @@
 		lookAtItem.addActionListener(this);
 		//lookFromItem.addActinoListener(this);
 		//switchItem.addActionListener(this);
+        }
+        
 		Menu menu;
 		oe.menuBar.add(menu = new Menu("Edit"));
 		//editItem = menu.add(new MenuItem("Edit"));
 		//editItem.addActionListener(this);
 		duplicateItem = menu.add(new MenuItem("Duplicate"));
 		duplicateItem.addActionListener(this);
-		menu.add("-");
-		cloneItem = menu.add(new MenuItem("Clone"));
-		cloneItem.addActionListener(this);
-		cloneSupportItem = menu.add(new MenuItem("Clone (+supports)"));
-		cloneSupportItem.addActionListener(this);
-		menu.add("-");
 		cutItem = menu.add(new MenuItem("Cut"));
 		cutItem.addActionListener(this);
 		copyItem = menu.add(new MenuItem("Copy"));
 		copyItem.addActionListener(this);
 		pasteItem = menu.add(new MenuItem("Paste"));
 		pasteItem.addActionListener(this);
+		menu.add("-");
+		cloneItem = menu.add(new MenuItem("Clone"));
+		cloneItem.addActionListener(this);
+		cloneSupportItem = menu.add(new MenuItem("Clone (+supports)"));
+		cloneSupportItem.addActionListener(this);
+		menu.add("-");
+		pasteIntoItem = menu.add(new MenuItem("Paste into"));
+		pasteIntoItem.addActionListener(this);
 		pasteLinkItem = menu.add(new MenuItem("Paste link"));
 		pasteLinkItem.addActionListener(this);
 		pasteCloneItem = menu.add(new MenuItem("Paste clone"));
 		pasteCloneItem.addActionListener(this);
 //		pasteExpandItem = menu.add(new MenuItem("Paste expand"));
 //		pasteExpandItem.addActionListener(this);
+		menu.add("-");
 		clearItem = menu.add(new MenuItem("Clear"));
 		clearItem.addActionListener(this);
+                
+        if (Globals.ADVANCED)
+        {
+                // Deletes the cameras...
 		clearAllItem = menu.add(new MenuItem("Clear All"));
 		clearAllItem.addActionListener(this);
+        }
 
 		oe.menuBar.add(menu = new Menu("Setting"));
+        if (Globals.ADVANCED)
+        {
                 resetMeshItem = menu.add(new MenuItem("Reset All"));
 		resetMeshItem.addActionListener(this);
 		stepAllItem = menu.add(new MenuItem("Step All"));
@@ -200,6 +214,7 @@
 		resetreferencesItem = menu.add(new MenuItem("Reset Mesh References"));
 		resetreferencesItem.addActionListener(this);
 		menu.add("-");
+        }
 		overwriteGeoItem = menu.add(new MenuItem("Overwrite Geometry"));
 		overwriteGeoItem.addActionListener(this);
 		overwriteMatItem = menu.add(new MenuItem("Overwrite Material"));
@@ -211,19 +226,26 @@
 		overwriteUVItem = menu.add(new MenuItem("Overwrite UV"));
 		overwriteUVItem.addActionListener(this);
 		menu.add("-");
+        if (Globals.ADVANCED)
+        {
 		generateMeshItem = menu.add(new MenuItem("Generate Meshes"));
 		generateMeshItem.addActionListener(this);
 		poseMeshItem = menu.add(new MenuItem("Set Pose Meshes"));
 		poseMeshItem.addActionListener(this);
 		menu.add("-");
+        }
 		resetsupportItem = menu.add(new MenuItem("Reset support"));
 		resetsupportItem.addActionListener(this);
 		linkverticesItem = menu.add(new MenuItem("Link to Support"));
 		linkverticesItem.addActionListener(this);
 		relinkverticesItem = menu.add(new MenuItem("Re-link to Support"));
 		relinkverticesItem.addActionListener(this);
+                
+        if (Globals.ADVANCED)
+        {
 		setMasterItem = menu.add(new MenuItem("Set Master Mesh"));
 		setMasterItem.addActionListener(this);
+        }
                 
 		oe.menuBar.add(menu = new Menu("Group"));
 		grabItem = menu.add(new MenuItem("Grab"));
@@ -234,7 +256,7 @@
 		frontItem.addActionListener(this);
 		compositeItem = menu.add(new MenuItem("Composite"));
 		compositeItem.addActionListener(this);
-		hideItem = menu.add(new MenuItem("Hide"));
+		hideItem = menu.add(new MenuItem("Hidden Group"));
 		hideItem.addActionListener(this);
 		ungroupItem = menu.add(new MenuItem("Ungroup"));
 		ungroupItem.addActionListener(this);
@@ -245,16 +267,20 @@
 		switchGeoItem.addActionListener(this);
 		switchTransfoItem = menu.add(new MenuItem("Switch Transform"));
 		switchTransfoItem.addActionListener(this);
+		morphItem = menu.add(new MenuItem("Morph Group"));
+		morphItem.addActionListener(this);
+                
+        if (Globals.ADVANCED)
+        {
 		physicsItem = menu.add(new MenuItem("Physics"));
 		physicsItem.addActionListener(this);
 		frameselectorItem = menu.add(new MenuItem("Frame Selector"));
 		frameselectorItem.addActionListener(this);
-		morphItem = menu.add(new MenuItem("Morph"));
-		morphItem.addActionListener(this);
 		scriptNodeItem = menu.add(new MenuItem("Script Node"));
 		scriptNodeItem.addActionListener(this);
 		cameraItem = menu.add(new MenuItem("Camera"));
 		cameraItem.addActionListener(this);
+        }
                 
 		oe.menuBar.add(menu = new Menu("Object"));
 		textureItem = menu.add(new MenuItem("Texture"));
@@ -269,15 +295,18 @@
 		shadowYItem.addActionListener(this);
                 shadowZItem = menu.add(new MenuItem("Shadow Z"));
 		shadowZItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		linkerItem = menu.add(new MenuItem("Linker"));
 		linkerItem.addActionListener(this);
-		templateItem = menu.add(new MenuItem("Template"));
-		templateItem.addActionListener(this);
 		attributeItem = menu.add(new MenuItem("Attribute"));
 		attributeItem.addActionListener(this);
+		templateItem = menu.add(new MenuItem("Template"));
+		templateItem.addActionListener(this);
 		pointflowItem = menu.add(new MenuItem("Point Flow"));
 		pointflowItem.addActionListener(this);
 		menu.add("-");
+        }
 		resetTransformItem = menu.add(new MenuItem("Reset Transform"));
 		resetTransformItem.addActionListener(this);
 		resetCentroidItem = menu.add(new MenuItem("Reset Centroid"));
@@ -294,8 +323,11 @@
 		genNormalsCADItem.addActionListener(this);
 		genNormalsMESHItem = menu.add(new MenuItem("Mesh Normals"));
 		genNormalsMESHItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		genNormalsMINEItem = menu.add(new MenuItem("My Normals"));
 		genNormalsMINEItem.addActionListener(this);
+        }
 		stripifyItem = menu.add(new MenuItem("Stripify"));
 		stripifyItem.addActionListener(this);
 		unstripifyItem = menu.add(new MenuItem("Unstripify"));
@@ -317,10 +349,14 @@
 		reduce34MeshItem.addActionListener(this);
 		increaseMeshItem = menu.add(new MenuItem("Increase mesh"));
 		increaseMeshItem.addActionListener(this);
-		smoothMeshItem = menu.add(new MenuItem("Smooth mesh"));
-		smoothMeshItem.addActionListener(this);
 		clipMeshItem = menu.add(new MenuItem("Clip mesh"));
 		clipMeshItem.addActionListener(this);
+                
+        if (Globals.ADVANCED)
+        {
+		smoothMeshItem = menu.add(new MenuItem("Smooth mesh"));
+		smoothMeshItem.addActionListener(this);
+        }
 
                 oe.menuBar.add(menu = new Menu("Attributes"));
 		clearMaterialsItem = menu.add(new MenuItem("Clear Materials"));
@@ -330,10 +366,13 @@
 		liveleavesItem.addActionListener(this);
 		unliveleavesItem = menu.add(new MenuItem("Unlive Leaves"));
 		unliveleavesItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		supportleavesItem = menu.add(new MenuItem("Support Leaves"));
 		supportleavesItem.addActionListener(this);
 		unsupportleavesItem = menu.add(new MenuItem("Unsupport Leaves"));
 		unsupportleavesItem.addActionListener(this);
+        }
 		hideleavesItem = menu.add(new MenuItem("Hide Leaves"));
 		hideleavesItem.addActionListener(this);
 		showleavesItem = menu.add(new MenuItem("Show Leaves"));
@@ -376,6 +415,8 @@
 		sortbysizeItem.addActionListener(this);
 		sortbynameItem = menu.add(new MenuItem("Sort by name"));
 		sortbynameItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		menu.add("-");
 		extractGeometriesItem = menu.add(new MenuItem("Link Geometry"));
 		extractGeometriesItem.addActionListener(this);
@@ -385,11 +426,11 @@
 		shareGeometriesItem.addActionListener(this);
 		mergeGeometriesItem = menu.add(new MenuItem("Merge Geometry"));
 		mergeGeometriesItem.addActionListener(this);
+        }
                 
 		oe.menuBar.add(menu = new Menu("Insert"));
 		buildCreateMenu(menu);
                 
-               
                 oe.menuBar.add(menu = new Menu("Include"));
 		importGFDItem = menu.add(new MenuItem("GrafreeD Object..."));
 		importGFDItem.addActionListener(this);
@@ -440,6 +481,10 @@
                 liveCB.setToolTipText("Enabled animation");
                                 liveCB.addItemListener(this);
 
+		oe.toolbarPanel.add(oneStepButton = new cButton("Step", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                oneStepButton.setToolTipText("Animate one step forward");
+		oneStepButton.addActionListener(this);
+                
                 oe.toolbarPanel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST)); //, constraints);
                 fastCB.setToolTipText("Fast mode");
                                 fastCB.addItemListener(this);
@@ -588,8 +633,18 @@
         
         void AddOptions(cGridBag panel) //, GridBagConstraints constraints)
         {
+                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE)); //, constraints);
+                boxCB.setToolTipText("Display bounding boxes");
+                                boxCB.addItemListener(this);
+                                
+                panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE)); //, constraints);
+                zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel");
+                                zoomBoxCB.addItemListener(this);
+
+        if (Globals.ADVANCED)
+        {
                 panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints);
-                supportCB.setToolTipText("Enabled rigging");
+                supportCB.setToolTipText("Enable rigging");
                                 supportCB.addItemListener(this);
 
         //        panel.add(localCB = new cCheckBox("Local", CameraPane.LOCALTRANSFORM), constraints);
@@ -607,14 +662,6 @@
                 slowCB.setToolTipText("Smooth interpolation");
                                 slowCB.addItemListener(this);
                                 
-                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE)); //, constraints);
-                boxCB.setToolTipText("Display bounding boxes");
-                                boxCB.addItemListener(this);
-                                
-                panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE)); //, constraints);
-                zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel");
-                                zoomBoxCB.addItemListener(this);
-
 //        	constraints.gridy += 1;
 //                panel.add(speakerMocapCB = new cCheckBox("Mocap", CameraPane.SPEAKERMOCAP), constraints);
 //                                speakerMocapCB.addItemListener(this);
@@ -645,6 +692,8 @@
                 panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT)); //, constraints);
                 lookAtCB.setToolTipText("Look-at target");
                                 lookAtCB.addItemListener(this);
+                
+        }
                                 
                 cGridBag fill = new cGridBag();
                                 
@@ -935,11 +984,11 @@
             {
                 loadClipboard(true);
                 objEditor.jTree.setSelectionPath(destinationPath);
-                pasteInto(false);
+                pasteInto(false, false);
             } else {
                 loadClipboard(false);
                 objEditor.jTree.setSelectionPath(destinationPath);
-                pasteInto(false); // true); // ???
+                pasteInto(false, false); // true); // ???
             }
 	}
 	public void	dropActionChanged(DropTargetDragEvent dtde) 
@@ -1061,27 +1110,33 @@
 		kleinItem.addActionListener(this);
 		particleItem = menu.add(new MenuItem("Particle system"));
 		particleItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		ragdollItem = menu.add(new MenuItem("Rag Walk"));
 		ragdollItem.addActionListener(this);
 		ragdoll2Item = menu.add(new MenuItem("Rag Fall"));
 		ragdoll2Item.addActionListener(this);
+        }
 		menu.add("-");
-		meshItem = menu.add(new MenuItem("Mesh"));
+		meshItem = menu.add(new MenuItem("Dynamic Mesh"));
 		meshItem.addActionListener(this);
 	//	meshGroupItem = menu.add(new MenuItem("Mesh Group"));
 	//	meshGroupItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		springItem = menu.add(new MenuItem("Spring"));
 		springItem.addActionListener(this);
 		flagItem = menu.add(new MenuItem("Flag"));
 		flagItem.addActionListener(this);
-		bezierItem = menu.add(new MenuItem("Patch"));
-		bezierItem.addActionListener(this);
-		checkerItem = menu.add(new MenuItem("Checker"));
-		checkerItem.addActionListener(this);
 		blobItem = menu.add(new MenuItem("Blob"));
 		blobItem.addActionListener(this);
 		latheItem = menu.add(new MenuItem("Lathe"));
 		latheItem.addActionListener(this);
+        }
+		bezierItem = menu.add(new MenuItem("Bezier Patch"));
+		bezierItem.addActionListener(this);
+		overlayItem = menu.add(new MenuItem("Overlay"));
+		overlayItem.addActionListener(this);
 		lightItem = menu.add(new MenuItem("Light"));
 		lightItem.addActionListener(this);
 		menu.add("-");
@@ -1091,8 +1146,11 @@
 		loopItem.addActionListener(this);
 		doubleItem = menu.add(new MenuItem("Fork"));
 		doubleItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
 		tripleItem = menu.add(new MenuItem("Trident"));
 		tripleItem.addActionListener(this);
+        }
 	}
         
 	void buildToolsMenu(Menu menu)
@@ -1106,10 +1164,8 @@
 		parseverticesItem.addActionListener(this);
 		textureFieldItem = menu.add(new MenuItem("Texture Field"));
 		textureFieldItem.addActionListener(this);
-		alignItem = menu.add(new MenuItem("Align"));
+		alignItem = menu.add(new MenuItem("Align Object"));
 		alignItem.addActionListener(this);
-		mirrorItem = menu.add(new MenuItem("Mirror Poses"));
-		mirrorItem.addActionListener(this);
 		reduceMorphItem = menu.add(new MenuItem("Reduce Morphs"));
 		reduceMorphItem.addActionListener(this);
 		reduce34MorphItem = menu.add(new MenuItem("Reduce Morphs (34)"));
@@ -1117,8 +1173,12 @@
                 
 		menu.add(computeAOItem = new MenuItem("Compute AO"));
 		computeAOItem.addActionListener(this);
-		menu.add("-");
                 
+        if (Globals.ADVANCED)
+        {
+		mirrorItem = menu.add(new MenuItem("Mirror Poses"));
+		mirrorItem.addActionListener(this);
+		menu.add("-");
 		menu.add(memoryItem = new MenuItem("Memory Usage"));
 		memoryItem.addActionListener(this);
 		menu.add(analyzeItem = new MenuItem("Analyze"));
@@ -1141,6 +1201,7 @@
 		menu.add("-");
 		menu.add(editScriptItem = new MenuItem("Edit Script..."));
 		editScriptItem.addActionListener(this);
+        }
         }
         
         void ScreenFit()
@@ -1642,7 +1703,7 @@
 		{
 			makeSomething(new BezierSurface());
 		} else
-		if (source == checkerItem)
+		if (source == overlayItem)
 		{
                     /*
 			Object3D obj = new BezierSurface(5,8);
@@ -1830,6 +1891,11 @@
 		{
                     DumpObject();
 		} else
+		if (source == oneStepButton)
+		{
+                    Globals.ONESTEP = true;
+                    cameraView.repaint();
+		} else
 		if (source == screenfitButton)
 		{
 			//Reload(lastConverter, lastFilename, true);
@@ -1902,13 +1968,17 @@
 		{
 			paste(false);
 		} else
+		if (source == pasteIntoItem)
+		{
+			pasteInto(true, false);
+		} else
 		if (source == pasteLinkItem)
 		{
-			pasteInto(false);
+			pasteInto(false, false);
 		} else
 		if (source == pasteCloneItem)
 		{
-			pasteInto(true);
+			pasteInto(true, true);
 		} else
 		if (source == pasteExpandItem)
 		{
@@ -2110,11 +2180,11 @@
             Globals.theRenderer.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
                         for (int i=0; i<group.selection.size(); i++)
                         {
-                            boolean random = CameraPane.RANDOM;
-                            CameraPane.RANDOM = false; // parse all random nodes
+                            boolean random = CameraPane.SWITCH;
+                            CameraPane.SWITCH = false; // parse all random nodes
                             group.selection.get(i).linkVerticesThis(content);
                       //      group.selection.get(i).setMasterThis(content); // should be identity
-                            CameraPane.RANDOM = random;
+                            CameraPane.SWITCH = random;
                         }
             Globals.theRenderer.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR));
 		refreshContents();
@@ -2124,20 +2194,20 @@
 		{
                     for (int i=0; i<group.selection.size(); i++)
                     {
-                        boolean random = CameraPane.RANDOM;
-                        CameraPane.RANDOM = false; // parse all random nodes
+                        boolean random = CameraPane.SWITCH;
+                        CameraPane.SWITCH = false; // parse all random nodes
                         group.selection.get(i).linkVerticesThis(null);
-                        CameraPane.RANDOM = random;
+                        CameraPane.SWITCH = random;
                     }
 
                     refreshContents();
 		} else
 		if (source == relinkverticesItem)
 		{
-                    boolean random = CameraPane.RANDOM;
-                    CameraPane.RANDOM = false; // parse all random nodes
+                    boolean random = CameraPane.SWITCH;
+                    CameraPane.SWITCH = false; // parse all random nodes
                     group.selection.RelinkToSupport();
-                    CameraPane.RANDOM = random;
+                    CameraPane.SWITCH = random;
 
                     refreshContents();
 		} else
@@ -3611,11 +3681,11 @@
 
             SwitchNode sn = new SwitchNode(poses, Object3D.GEOMETRY);
 
-            boolean random = CameraPane.RANDOM;
-            CameraPane.RANDOM = false; // parse all random nodes
+            boolean random = CameraPane.SWITCH;
+            CameraPane.SWITCH = false; // parse all random nodes
             lowres.linkVerticesThis(null);
             lowres.linkVerticesThis(sn);
-            CameraPane.RANDOM = random;
+            CameraPane.SWITCH = random;
 
             System.err.flush();
 
@@ -4373,7 +4443,7 @@
 		refreshContents();
 	}
 	
-	void pasteInto(boolean copyit)
+	void pasteInto(boolean copyit, boolean clone)
 	{
 //		if (GrafreeD.clipboard == null)
 //			return;
@@ -4402,7 +4472,14 @@
 		if (copyit)
 		{
 		//	paste(false);
-                    CloneClipboard(false); // sept 2014
+                        if (clone)
+                        {
+                            CloneClipboard(false); // sept 2014
+                        }
+                        else
+                        {
+                            paste(false);
+                        }
 		}
 		else
 		{
@@ -4950,6 +5027,8 @@
 	cButton clearpanelButton;
 	cButton unselectButton;
 	
+	cButton oneStepButton;
+        
 	cButton screenfitButton;
 	cButton screenfitpointButton;
 	cButton snapobjectButton;
@@ -5004,6 +5083,7 @@
 	private MenuItem mergeGeometriesItem;
 	private MenuItem copyItem;
 	private MenuItem pasteItem;
+	private MenuItem pasteIntoItem;
 	private MenuItem pasteLinkItem;
 	private MenuItem pasteCloneItem;
 	private MenuItem pasteExpandItem;
@@ -5101,7 +5181,7 @@
 	private MenuItem blobItem;
 	private MenuItem latheItem;
 	private MenuItem bezierItem;
-	private MenuItem checkerItem;
+	private MenuItem overlayItem;
 	private MenuItem meshItem;
 //	private MenuItem meshGroupItem;
 	private MenuItem springItem;
diff --git a/ObjEditor.java b/ObjEditor.java
index b81d8f2..afb7487 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -309,44 +309,60 @@
         //normalLensItem.addActionListener(this);
         cameraMenu.add(revertCameraItem = new MenuItem("Revert Camera"));
         revertCameraItem.addActionListener(this);
-        cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline"));
-        toggleTimelineItem.addItemListener(this);
+        
         cameraMenu.add(toggleFullScreenItem = new CheckboxMenuItem("Full Screen"));
         toggleFullScreenItem.addItemListener(this);
         toggleFullScreenItem.setState(CameraPane.FULLSCREEN);
         cameraMenu.add("-");
+        
         cameraMenu.add(toggleTextureItem = new CheckboxMenuItem("Texture"));
         toggleTextureItem.addItemListener(this);
         toggleTextureItem.setState(CameraPane.textureon);
-        cameraMenu.add(toggleLiveItem = new CheckboxMenuItem("Live"));
-        toggleLiveItem.addItemListener(this);
-        toggleLiveItem.setState(Globals.isLIVE());
-        cameraMenu.add(stepItem = new MenuItem("Step"));
-        stepItem.addActionListener(this);
-//		cameraMenu.add(toggleDLItem = new CheckboxMenuItem("Display List"));
-//		toggleDLItem.addItemListener(this);
-//                toggleDLItem.setState(false);
-        cameraMenu.add(toggleRenderItem = new CheckboxMenuItem("Render"));
-        toggleRenderItem.addItemListener(this);
-        toggleRenderItem.setState(!CameraPane.frozen);
-        cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug"));
-        toggleDebugItem.addItemListener(this);
-        toggleDebugItem.setState(CameraPane.DEBUG);
-        cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum"));
-        toggleFrustumItem.addItemListener(this);
-        toggleFrustumItem.setState(CameraPane.FRUSTUM);
-        cameraMenu.add(toggleFootContactItem = new CheckboxMenuItem("Foot contact"));
-        toggleFootContactItem.addItemListener(this);
-        toggleFootContactItem.setState(CameraPane.FOOTCONTACT);
-        cameraMenu.add(toggleRandomItem = new CheckboxMenuItem("Random"));
-        toggleRandomItem.addItemListener(this);
-        toggleRandomItem.setState(CameraPane.RANDOM);
+        
+        if (Globals.ADVANCED)
+        {
+                cameraMenu.add(toggleLiveItem = new CheckboxMenuItem("Live"));
+                toggleLiveItem.addItemListener(this);
+                toggleLiveItem.setState(Globals.isLIVE());
+
+                cameraMenu.add(stepItem = new MenuItem("Step"));
+                stepItem.addActionListener(this);
+        //		cameraMenu.add(toggleDLItem = new CheckboxMenuItem("Display List"));
+        //		toggleDLItem.addItemListener(this);
+        //                toggleDLItem.setState(false);
+
+                cameraMenu.add(toggleRenderItem = new CheckboxMenuItem("Render"));
+                toggleRenderItem.addItemListener(this);
+                toggleRenderItem.setState(!CameraPane.frozen);
+
+                cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug"));
+                toggleDebugItem.addItemListener(this);
+                toggleDebugItem.setState(CameraPane.DEBUG);
+
+                cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum"));
+                toggleFrustumItem.addItemListener(this);
+                toggleFrustumItem.setState(CameraPane.FRUSTUM);
+
+                cameraMenu.add(toggleFootContactItem = new CheckboxMenuItem("Foot contact"));
+                toggleFootContactItem.addItemListener(this);
+                toggleFootContactItem.setState(CameraPane.FOOTCONTACT);
+                
+                cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline"));
+                toggleTimelineItem.addItemListener(this);
+        }
+        
+        cameraMenu.add(toggleSwitchItem = new CheckboxMenuItem("Switch"));
+        toggleSwitchItem.addItemListener(this);
+        toggleSwitchItem.setState(CameraPane.SWITCH);
+        
         cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Handles"));
         toggleHandleItem.addItemListener(this);
         toggleHandleItem.setState(CameraPane.HANDLES);
+        
         cameraMenu.add(togglePaintItem = new CheckboxMenuItem("Paint mode"));
         togglePaintItem.addItemListener(this);
         togglePaintItem.setState(CameraPane.PAINTMODE);
+        
 //		cameraMenu.add(toggleRootItem = new CheckboxMenuItem("Alternate Root"));
 //		toggleRootItem.addItemListener(this);
 //                    toggleRootItem.setState(false);
@@ -1469,9 +1485,12 @@
         editBar.add(clearMaterialButton = new cButton("Clear", !GrafreeD.NIMBUSLAF)); // , aConstraints);
                 clearMaterialButton.setToolTipText("Clear material");
         
-        editBar.add(resetSlidersButton = new cButton("Reset", !GrafreeD.NIMBUSLAF)); // , aConstraints);
-        editBar.add(propagateToggle = new cCheckBox("Prop", propagate)); // , aConstraints);
-        editBar.add(multiplyToggle = new cCheckBox("Mult", false)); // , aConstraints);
+        if (Globals.ADVANCED)
+        {
+                editBar.add(resetSlidersButton = new cButton("Reset", !GrafreeD.NIMBUSLAF)); // , aConstraints);
+                editBar.add(propagateToggle = new cCheckBox("Prop", propagate)); // , aConstraints);
+                editBar.add(multiplyToggle = new cCheckBox("Mult", false)); // , aConstraints);
+        }
 
         editBar.preferredHeight = 15;
         
@@ -1740,12 +1759,15 @@
         opacityPowerField.addChangeListener(this);
         /**/
 
-        resetSlidersButton.addActionListener(this);
         clearMaterialButton.addActionListener(this);
         createMaterialButton.addActionListener(this);
-
-        propagateToggle.addItemListener(this);
-        multiplyToggle.addItemListener(this);
+        
+        if (Globals.ADVANCED)
+        {
+                resetSlidersButton.addActionListener(this);
+                propagateToggle.addItemListener(this);
+                multiplyToggle.addItemListener(this);
+        }
     }
 
     void DropFile(java.io.File[] files, boolean textures)
@@ -2737,7 +2759,8 @@
             return;
         }
 
-        multiplyToggle.setSelected(mat.multiply);
+        if (multiplyToggle != null)
+                multiplyToggle.setSelected(mat.multiply);
 
         assert (object.projectedVertices != null);
 
@@ -2952,7 +2975,7 @@
             frame.validate();
 
             return;
-        } else if (event.getSource() == toggleRandomItem)
+        } else if (event.getSource() == toggleSwitchItem)
         {
             cameraView.ToggleRandom();
             cameraView.repaint();
@@ -3283,7 +3306,7 @@
     void CreateMaterial()
     {
         //copy.ClearMaterial(); // PATCH
-        copy.CreateMaterialS(multiplyToggle.isSelected());
+        copy.CreateMaterialS(multiplyToggle != null && multiplyToggle.isSelected());
         if (copy.selection.size() > 0)
         //SetMaterial(copy);
         {
@@ -3342,11 +3365,11 @@
     {
         copy.ResetBlockLoop(); // temporary problem
 
-        boolean random = CameraPane.RANDOM;
-        CameraPane.RANDOM = false; // parse everything
+        boolean random = CameraPane.SWITCH;
+        CameraPane.SWITCH = false; // parse everything
         copy.ResetDisplayList();
         copy.HardTouch();
-        CameraPane.RANDOM = random;
+        CameraPane.SWITCH = random;
     }
 
 //	public void applySelf()
@@ -4446,7 +4469,7 @@
     CheckboxMenuItem toggleFootContactItem;
     CheckboxMenuItem toggleDLItem;
     CheckboxMenuItem toggleTextureItem;
-    CheckboxMenuItem toggleRandomItem;
+    CheckboxMenuItem toggleSwitchItem;
     CheckboxMenuItem toggleRootItem;
     CheckboxMenuItem animationItem;
     CheckboxMenuItem toggleHandleItem;
diff --git a/RandomNode.java b/RandomNode.java
index d2f6489..5508ba3 100644
--- a/RandomNode.java
+++ b/RandomNode.java
@@ -27,7 +27,7 @@
     
     public int size()
     {
-        if (CameraPane.RANDOM)
+        if (CameraPane.SWITCH)
         {
             if (super.size() > 0)
                 return 1;
@@ -59,7 +59,7 @@
     
     public Object3D reserve(int i)
     {
-        if (!CameraPane.RANDOM)
+        if (!CameraPane.SWITCH)
             return super.reserve(i);
         
         //assert(rnd == -1);
@@ -126,7 +126,7 @@
 
     public void release(int i)
     {
-        if (!CameraPane.RANDOM)
+        if (!CameraPane.SWITCH)
         {
             super.release(i);
             return;
diff --git a/ScriptNode.java b/ScriptNode.java
index a7fa7df..62954c9 100644
--- a/ScriptNode.java
+++ b/ScriptNode.java
@@ -1235,8 +1235,8 @@
         }
         if (command.equals("setsupport"))
         {
-            boolean random = CameraPane.RANDOM;
-            CameraPane.RANDOM = false; // parse all random nodes
+            boolean random = CameraPane.SWITCH;
+            CameraPane.SWITCH = false; // parse all random nodes
             if (object.support instanceof Merge)
             {
                 ((Merge)object.support).renderme();
@@ -1245,7 +1245,7 @@
             object.linkVerticesThis(null);
             object.linkVerticesThis(GetObject(GetAlias(strs[index+2])));
       //      object.setMasterThis(content); // should be identity
-            CameraPane.RANDOM = random;
+            CameraPane.SWITCH = random;
             return;
         }
         if (command.equals("setchild"))
diff --git a/SuperEditor.java b/SuperEditor.java
index f3e5c59..52a920d 100644
--- a/SuperEditor.java
+++ b/SuperEditor.java
@@ -51,14 +51,14 @@
             
             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);
+		northPanel.add(northLabel = new JLabel("XY factor")); //, 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);
+                eastPanel.add(eastLabel = new JLabel("Z factor")); //, 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();
@@ -68,7 +68,7 @@
 
                 oe.ctrlPanel.Return();
                 
-                        northField.setFloat(superE.north);
+                northField.setFloat(superE.north);
 		eastField.setFloat(superE.east);
         }
 	
diff --git a/cFileSystemPane.java b/cFileSystemPane.java
index ccd740b..a446d0f 100644
--- a/cFileSystemPane.java
+++ b/cFileSystemPane.java
@@ -8,7 +8,9 @@
 
 import java.io.File;
 
-public class cFileSystemPane extends JPanel implements ActionListener, ItemListener, DragGestureListener,
+import grafeme.ui.*;
+
+public class cFileSystemPane extends cGridBag implements ActionListener, ItemListener, DragGestureListener,
         //DragSourceListener,
         DropTargetListener
 {
@@ -33,7 +35,7 @@
         setName("File system");
         //System.out.println("layout : " + getLayout());
         //setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-        setLayout(new GridBagLayout());
+        //setLayout(new GridBagLayout());
         //ToolTipManager.sharedInstance().registerComponent(jTree);
         jTree.setCellRenderer(new cFileSystemModel.Renderer());
         
@@ -58,20 +60,27 @@
 	GridBagConstraints aConstraints = new GridBagConstraints(0,0,1,1, 1.0,1.0,
         	GridBagConstraints.EAST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,1), 0,0);
 
-	aConstraints.weighty = 0;
-	aConstraints.gridwidth = 1;
-        add(refreshButton = new JButton("Refresh"), aConstraints);
-        aConstraints.gridx += 1;
-        add(loadButton = new JButton("Load"), aConstraints);
-        aConstraints.gridx += 1;
-        add(printButton = new JButton("Print"), aConstraints);
-   //     aConstraints.gridx += 1;
-   //     add(replaceButton = new JButton("Replace"), aConstraints);
+        cGridBag fileCommsnds = new cGridBag();
+        
+        fileCommsnds.add(refreshButton = new JButton("Refresh")); //, aConstraints);
+                refreshButton.setToolTipText("Refresh entire tree");
+        fileCommsnds.add(loadButton = new JButton("Load")); //, aConstraints);
+                loadButton.setToolTipText("Load selected file(s)");
         
         refreshButton.addActionListener(this);
         loadButton.addActionListener(this);
-        printButton.addActionListener(this);
+        
+        if (Globals.ADVANCED)
+        {
+                fileCommsnds.add(printButton = new JButton("Print")); //, aConstraints);
+                printButton.setToolTipText("Print file path in terminal");
+                printButton.addActionListener(this);
+                fileCommsnds.add(mergeAttributesCB = new cCheckBox("Merge", cJME.mergeAttributes)); //, aConstraints);
+                mergeAttributesCB.setToolTipText("Merge common attributes (recommended)");
+                mergeAttributesCB.addItemListener(this);
 //        replaceButton.addActionListener(this);
+   //     add(replaceButton = new JButton("Replace"), aConstraints);
+        }
 
 //        aConstraints.gridx += 1;
 //            add(trimCB = new cCheckBox("Trim", cJME.trim), aConstraints);
@@ -86,17 +95,18 @@
 //            add(genUVCB = new cCheckBox("UV", cJME.genUV), aConstraints);
 //			genUVCB.addItemListener(this);
                         
-        aConstraints.gridx += 1;
-            add(mergeAttributesCB = new cCheckBox("Merge", cJME.mergeAttributes), aConstraints);
-			mergeAttributesCB.addItemListener(this);
+        add(fileCommsnds);
+        fileCommsnds.preferredHeight = 1;
         
-        aConstraints.gridx = 0;
-        aConstraints.gridy += 1;
-	aConstraints.weighty = 1;
-	aConstraints.gridwidth = 10;
-	aConstraints.fill = GridBagConstraints.BOTH;
-
-        add(tree, aConstraints);
+        Return();
+        
+        cGridBag treeBag = new cGridBag();
+        
+        treeBag.add(tree);
+        
+        treeBag.preferredHeight = 30;
+        
+        add(treeBag); //, aConstraints);
         
             GroupEditor oe = (GroupEditor) owner;
 

--
Gitblit v1.6.2