From 1e1c7fcdb3d0f8be350c5f6c32b6afa6705168ea Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 05 May 2019 08:58:54 -0400
Subject: [PATCH] Fix import OBJ

---
 GroupEditor.java |  454 +++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 264 insertions(+), 190 deletions(-)

diff --git a/GroupEditor.java b/GroupEditor.java
index 22fce0e..6995fb1 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -12,6 +12,7 @@
 import com.jme.math.Vector3f;
 import com.jme.renderer.ColorRGBA;
 
+import grafeme.ui.*;
 //import buoy.widget.BFileChooser;
 
 class GroupEditor extends ObjEditor implements //iParse, //iCallBack,
@@ -149,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"));
@@ -160,17 +163,21 @@
 		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);
+        if (Globals.ADVANCED)
+        {
 		cloneSupportItem = menu.add(new MenuItem("Clone (+supports)"));
 		cloneSupportItem.addActionListener(this);
+        }
 		menu.add("-");
 		cutItem = menu.add(new MenuItem("Cut"));
 		cutItem.addActionListener(this);
@@ -178,18 +185,31 @@
 		copyItem.addActionListener(this);
 		pasteItem = menu.add(new MenuItem("Paste"));
 		pasteItem.addActionListener(this);
+		menu.add("-");
+                
+		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"));
@@ -199,6 +219,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"));
@@ -210,19 +231,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"));
@@ -233,27 +261,32 @@
 		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);
 		menu.add("-");
-		randomItem = menu.add(new MenuItem("Random"));
+		randomItem = menu.add(new MenuItem("Switch node"));
 		randomItem.addActionListener(this);
-		physicsItem = menu.add(new MenuItem("Physics"));
-		physicsItem.addActionListener(this);
-		frameselectorItem = menu.add(new MenuItem("Frame Selector"));
-		frameselectorItem.addActionListener(this);
 		switchGeoItem = menu.add(new MenuItem("Switch Geometry"));
 		switchGeoItem.addActionListener(this);
 		switchTransfoItem = menu.add(new MenuItem("Switch Transform"));
 		switchTransfoItem.addActionListener(this);
-		morphItem = menu.add(new MenuItem("Morph"));
+		morphItem = menu.add(new MenuItem("Morph Group"));
 		morphItem.addActionListener(this);
+                
+        if (Globals.ADVANCED)
+        {
+		menu.add("-");
+		physicsItem = menu.add(new MenuItem("Physics"));
+		physicsItem.addActionListener(this);
+		frameselectorItem = menu.add(new MenuItem("Frame Selector"));
+		frameselectorItem.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"));
@@ -268,14 +301,18 @@
 		shadowYItem.addActionListener(this);
                 shadowZItem = menu.add(new MenuItem("Shadow Z"));
 		shadowZItem.addActionListener(this);
+        if (Globals.ADVANCED)
+        {
+		menu.add("-");
 		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);
@@ -293,8 +330,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"));
@@ -316,10 +356,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"));
@@ -329,10 +373,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"));
@@ -375,6 +422,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);
@@ -384,20 +433,23 @@
 		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);
-		importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D Object..."));
-		importVRMLX3DItem.addActionListener(this);
-		importOBJItem = menu.add(new MenuItem("OBJ Object..."));
+		importOBJItem = menu.add(new MenuItem("OBJ file..."));
 		importOBJItem.addActionListener(this);
-		import3DSItem = menu.add(new MenuItem("3DS Object..."));
+		menu.add("-");
+		import3DSItem = menu.add(new MenuItem("3DS file..."));
 		import3DSItem.addActionListener(this);
+		menu.add("-");
+		importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file..."));
+		importVRMLX3DItem.addActionListener(this);
+		menu.add("-");
+		importGFDItem = menu.add(new MenuItem("GrafreeD file..."));
+		importGFDItem.addActionListener(this);
 
                 oe.menuBar.add(menu = new Menu("Tools"));
 		buildToolsMenu(menu);
@@ -433,110 +485,98 @@
         oe.radioPanel.add(dummyButton);
         oe.buttonGroup.add(dummyButton);
          */
-                aConstraints.gridy += 1;
-                
                 //this.AddOptions(oe.toolbarPanel, oe.aConstraints);
                 
-		oe.aConstraints.gridwidth = 1;
-        	oe.aConstraints.gridx = 0;
-                
-                oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE()), oe.aConstraints);
+                oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE())); //, oe.aConstraints);
                 liveCB.setToolTipText("Enabled animation");
                                 liveCB.addItemListener(this);
 
-        	oe.aConstraints.gridx += 1;
-                oe.toolbarPanel.add(trackCB = new cCheckBox("Track", CameraPane.TRACK), oe.aConstraints);
+		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);
+                                
+                oe.toolbarPanel.add(trackCB = new cCheckBox("Track", CameraPane.TRACK)); //, oe.aConstraints);
                 trackCB.setToolTipText("Enable tracking");
                                 trackCB.addItemListener(this);
 
-        	oe.aConstraints.gridx += 1;
-		oe.toolbarPanel.add(screenfitButton = new cButton("@ ")); //, oe.aConstraints);
+		oe.toolbarPanel.add(screenfitButton = new cButton("@", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 screenfitButton.setToolTipText("Screen fit");
 		screenfitButton.addActionListener(this);
-			oe.aConstraints.gridx += 1;
+
 //		oe.toolbarPanel.add(screenfitpointButton = new cButton(" @+ ")); //, oe.aConstraints);
 //		screenfitpointButton.addActionListener(this);
-//			oe.aConstraints.gridx += 1;
-		oe.toolbarPanel.add(snapobjectButton = new cButton(" O+ ")); //, oe.aConstraints);
-		snapobjectButton.addActionListener(this);
-                snapobjectButton.setToolTipText("Snap Object");
-			oe.aConstraints.gridx += 1;
 
-                //aConstraints.gridx = 0;
-                //aConstraints.gridy += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
-		
-		oe.toolbarPanel.add(flashSelectionButton = new cButton(" ? ")); //, oe.aConstraints);
+                if (Globals.ADVANCED)
+                {
+                        oe.toolbarPanel.add(snapobjectButton = new cButton("O+", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                        snapobjectButton.addActionListener(this);
+                        snapobjectButton.setToolTipText("Snap Object");
+                }
+
+		oe.toolbarPanel.add(flashSelectionButton = new cButton("?", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 flashSelectionButton.setToolTipText("Show selection");
 		flashSelectionButton.addActionListener(this);
                 
-		oe.toolbarPanel.add(new cButton("     ", false));
+		oe.toolbarPanel.add(new JSeparator(SwingConstants.VERTICAL));
                 
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
-                
-                //
-		oe.toolbarPanel.add(twoButton = new cButton(" |+| ")); //, oe.aConstraints);
+		oe.toolbarPanel.add(twoButton = new cButton("|+|", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 twoButton.setToolTipText("Show center view only");
 		twoButton.addActionListener(this);
-		oe.toolbarPanel.add(fourButton = new cButton("+|| ")); //, oe.aConstraints);
+		oe.toolbarPanel.add(fourButton = new cButton("+||", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
 		fourButton.addActionListener(this);
                 fourButton.setToolTipText("Show left panel only");
-		oe.toolbarPanel.add(sixButton = new cButton("+|+| ")); //, oe.aConstraints);
+		oe.toolbarPanel.add(sixButton = new cButton("+|+|", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 sixButton.setToolTipText("2-column layout left");
 		sixButton.addActionListener(this);
-		oe.toolbarPanel.add(threeButton = new cButton(" |+|+")); //, oe.aConstraints);
+		oe.toolbarPanel.add(threeButton = new cButton("|+|+", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 threeButton.setToolTipText("2-column layout right");
 		threeButton.addActionListener(this);
-		oe.toolbarPanel.add(sevenButton = new cButton("+|+|+")); //, oe.aConstraints);
+		oe.toolbarPanel.add(sevenButton = new cButton("+|+|+", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 sevenButton.setToolTipText("3-column layout");
 		sevenButton.addActionListener(this);
                 //
 
-		oe.toolbarPanel.add(rootButton = new cButton(" o o o ")); //, oe.aConstraints);
-                rootButton.setToolTipText("Edit object in new tab");
+		oe.toolbarPanel.add(rootButton = new cButton("o o o", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                rootButton.setToolTipText("Edit selection in new tab");
 		rootButton.addActionListener(this);
-			oe.aConstraints.gridx += 1;
-		oe.toolbarPanel.add(closeButton = new cButton("  X  ")); //, oe.aConstraints);
+
+                oe.toolbarPanel.add(closeButton = new cButton("X", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
                 closeButton.setToolTipText("Close tab");
 		closeButton.addActionListener(this);
 		//oe.treePanel.add(clearButton = new cButton("X"), oe.aConstraints);
 		//clearButton.addActionListener(this);
-			oe.aConstraints.gridx += 1;
                         
-		oe.aConstraints.gridx = 1; //
-		oe.treePanel.add(editButton = new cButton("+"), oe.aConstraints);
+                cGridBag commandsPanel = new cGridBag();
+                
+		commandsPanel.add(editButton = new cButton("+", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                editButton.setToolTipText("Edit selection");
 		editButton.addActionListener(this);
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
 
-		oe.treePanel.add(uneditButton = new cButton("-"), oe.aConstraints);
+		commandsPanel.add(uneditButton = new cButton("-", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                uneditButton.setToolTipText("Unedit selection");
 		uneditButton.addActionListener(this);
 
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
-                
-		oe.treePanel.add(clearPanelButton = new cButton("C"), oe.aConstraints);
-		clearPanelButton.addActionListener(this);
-
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
-                
-		oe.treePanel.add(allParamsButton = new cButton("A"), oe.aConstraints);
+		commandsPanel.add(allParamsButton = new JCheckBox("All", allparams)); //, oe.aConstraints);
+                allParamsButton.setToolTipText("Edit all params");
 		allParamsButton.addActionListener(this);
 
-		oe.aConstraints.gridx += 1;
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 1;
-                
-		oe.treePanel.add(unselectButton = new cButton("U"), oe.aConstraints);
+		commandsPanel.add(clearPanelButton = new cButton("C", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                clearPanelButton.setToolTipText("Clear edit panel");
+		clearPanelButton.addActionListener(this);
+
+		commandsPanel.add(unselectButton = new cButton("U", !GrafreeD.NIMBUSLAF)); //, oe.aConstraints);
+                unselectButton.setToolTipText("Unselect");
 		unselectButton.addActionListener(this);
 
+                commandsPanel.preferredHeight = 1;
+                
+                oe.treePanel.add(commandsPanel);
+                oe.treePanel.Return();
+                
 //		oe.aConstraints.gridx += 1;
 //		oe.aConstraints.weighty = 0;
 //		oe.aConstraints.gridwidth = 1;
@@ -548,40 +588,37 @@
 //		oe.treePanel.add(gcButton = new cButton("GC"), oe.aConstraints);
 //		gcButton.addActionListener(this);
                 
-                oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
-                
-		//ctrlPanel.add(objList = new List(5, true));
-		oe.aConstraints.gridwidth = 100;
-	//	oe.aConstraints.gridheight = 100;
-		oe.aConstraints.fill = GridBagConstraints.BOTH; // HORIZONTAL;
-		oe.aConstraints.gridheight = 1;
-		oe.aConstraints.weighty = 0.5;
-		oe.aConstraints.gridx = 0;
-		JScrollPane jSP;
+                cGridBag jSPPanel = new cGridBag();
+
+                JScrollPane jSP;
 		//ctrlPanel.add(new JScrollPane(jTree = new cTree(new cTreeModel(this))), aConstraints);
-		oe.treePanel.add(jSP = new JScrollPane(oe.jTree = new cTree(null)), oe.aConstraints);
+		jSPPanel.add(jSP = new JScrollPane(oe.jTree = new cTree(null))); //, oe.aConstraints);
                 ResetModel();
-		oe.aConstraints.weighty = 0.5;
-		oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
-		oe.aConstraints.gridy += 1;
-		oe.aConstraints.gridwidth = 1;
+                
+                oe.treePanel.add(jSPPanel);
+                oe.treePanel.Return();
 
-		oe.aConstraints.weighty = 0;
-		oe.aConstraints.gridwidth = 2;
-
-                oe.treePanel.add(colorCB = new cCheckBox("Color", (dropAttributes&Object3D.COLOR)!=0), oe.aConstraints);
+                cGridBag copyOptionsPanel = new cGridBag();
+                
+                copyOptionsPanel.add(colorCB = new cCheckBox("Color", (dropAttributes&Object3D.COLOR)!=0)); //, oe.aConstraints);
+                colorCB.setToolTipText("Copy color when dropped");
                 colorCB.addItemListener(this);
-                oe.aConstraints.gridx += 2;
-                oe.treePanel.add(materialCB = new cCheckBox("Material", (dropAttributes&Object3D.MATERIAL)!=0), oe.aConstraints);
+
+                copyOptionsPanel.add(materialCB = new cCheckBox("Material", (dropAttributes&Object3D.MATERIAL)!=0)); //, oe.aConstraints);
+                materialCB.setToolTipText("Copy material when dropped");
                 materialCB.addItemListener(this);
-                oe.aConstraints.gridx += 2;
-                oe.treePanel.add(textureCB = new cCheckBox("Texture", (dropAttributes&Object3D.TEXTURE)!=0), oe.aConstraints);
+
+                copyOptionsPanel.add(textureCB = new cCheckBox("Texture", (dropAttributes&Object3D.TEXTURE)!=0)); //, oe.aConstraints);
+                textureCB.setToolTipText("Copy texture when dropped");
                 textureCB.addItemListener(this);
                         
-                oe.aConstraints.gridx = 0;
-		oe.aConstraints.gridy += 1;
+                copyOptionsPanel.preferredHeight = 1;
+                oe.treePanel.add(copyOptionsPanel);
+                oe.treePanel.Return();
                 
+//        mainPanel.setDividerLocation(0.5); //1.0);
+//        mainPanel.setResizeWeight(0.5);
+        
 		//jList.addListSelectionListener(this);
 		oe.jTree.addTreeSelectionListener(this);
 		//jTree.setRootVisible(false);
@@ -604,45 +641,37 @@
         oe.toolbarPanel.add(radioPanel); //, oe.aConstraints);
 	}
         
-        void AddOptions(JPanel panel, GridBagConstraints constraints)
+        void AddOptions(cGridBag panel) //, GridBagConstraints constraints)
         {
-        	constraints.gridx = 0;
-        	constraints.gridy = 0;
-                panel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST), constraints);
-                fastCB.setToolTipText("Fast mode");
-                                fastCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT), constraints);
-                supportCB.setToolTipText("Enabled rigging");
-                                supportCB.addItemListener(this);
-
-        //	constraints.gridy += 1;
-        //        panel.add(localCB = new cCheckBox("Local", CameraPane.LOCALTRANSFORM), constraints);
-        //                        localCB.addItemListener(this);
-
-        	constraints.gridy += 1;
-                panel.add(crowdCB = new cCheckBox("Crowd", Globals.CROWD), constraints);
-                crowdCB.setToolTipText("Used for crowds");
-                                crowdCB.addItemListener(this);
-
-        	constraints.gridy += 1;
-                panel.add(smoothCB = new cCheckBox("Inertia", CameraPane.INERTIA), constraints);
-                smoothCB.setToolTipText("Snapping delay");
-                                smoothCB.addItemListener(this);
-
-        	constraints.gridy += 1;
-                panel.add(slowCB = new cCheckBox("Slow", CameraPane.SLOWPOSE), constraints);
-                slowCB.setToolTipText("Smooth interpolation");
-                                slowCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE), constraints);
+                panel.add(boxCB = new cCheckBox("Box", CameraPane.BOXMODE)); //, constraints);
                 boxCB.setToolTipText("Display bounding boxes");
                                 boxCB.addItemListener(this);
-        	constraints.gridy += 1;
-                panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE), constraints);
+                                
+                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("Enable rigging");
+                                supportCB.addItemListener(this);
+
+        //        panel.add(localCB = new cCheckBox("Local", CameraPane.LOCALTRANSFORM), constraints);
+        //                        localCB.addItemListener(this);
+
+                panel.add(crowdCB = new cCheckBox("Crowd", Globals.CROWD)); //, constraints);
+                crowdCB.setToolTipText("Used for crowds");
+                                crowdCB.addItemListener(this);
+
+                panel.add(smoothCB = new cCheckBox("Inertia", CameraPane.INERTIA)); //, constraints);
+                smoothCB.setToolTipText("Snapping delay");
+                                smoothCB.addItemListener(this);
+
+                panel.add(slowCB = new cCheckBox("Slow", CameraPane.SLOWPOSE)); //, constraints);
+                slowCB.setToolTipText("Smooth interpolation");
+                                slowCB.addItemListener(this);
+                                
 //        	constraints.gridy += 1;
 //                panel.add(speakerMocapCB = new cCheckBox("Mocap", CameraPane.SPEAKERMOCAP), constraints);
 //                                speakerMocapCB.addItemListener(this);
@@ -650,16 +679,16 @@
             if (false)
             {
                 // handled in scripts
-        	constraints.gridy += 1;
-                panel.add(speakerCameraCB = new cCheckBox("Cam", CameraPane.SPEAKERCAMERA), constraints);
+        	//constraints.gridy += 1;
+                panel.add(speakerCameraCB = new cCheckBox("Cam", CameraPane.SPEAKERCAMERA)); //, constraints);
                                 speakerCameraCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(speakerFocusCB = new cCheckBox("Focus", CameraPane.SPEAKERFOCUS), constraints);
+        	//constraints.gridy += 1;
+                panel.add(speakerFocusCB = new cCheckBox("Focus", CameraPane.SPEAKERFOCUS)); //, constraints);
                                 speakerFocusCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(smoothfocusCB = new cCheckBox("Smooth", CameraPane.SMOOTHFOCUS), constraints);
+        	//constraints.gridy += 1;
+                panel.add(smoothfocusCB = new cCheckBox("Smooth", CameraPane.SMOOTHFOCUS)); //, constraints);
                                 smoothfocusCB.addItemListener(this);
             }
 
@@ -667,14 +696,20 @@
 //panel.add(debugCB = new cCheckBox("Debug", CameraPane.DEBUG), constraints);
 //                debugCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(oeilCB = new cCheckBox("Eye", CameraPane.OEIL), constraints);
+                panel.add(oeilCB = new cCheckBox("Eye", CameraPane.OEIL)); //, constraints);
                                 oeilCB.addItemListener(this);
 
-        	constraints.gridy += 1;
-                panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT), constraints);
+                panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT)); //, constraints);
                 lookAtCB.setToolTipText("Look-at target");
                                 lookAtCB.addItemListener(this);
+                
+        }
+                                
+                cGridBag fill = new cGridBag();
+                                
+                fill.preferredHeight = 200;
+                
+                panel.add(fill);
 
         }
 	
@@ -959,11 +994,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) 
@@ -1085,27 +1120,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("-");
@@ -1115,34 +1156,39 @@
 		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)
 	{
 		menu.add(animationItem = new CheckboxMenuItem("Animation..."));
 		animationItem.addItemListener(this);
-                animationItem.setState(CameraPane.ANIMATION);
+                animationItem.setState(Globals.ANIMATION);
                 
 		menu.add("-");
 		parseverticesItem = menu.add(new MenuItem("Multiplicity"));
 		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 Objects"));
 		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)"));
 		reduce34MorphItem.addActionListener(this);
-                
+		menu.add("-");
 		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"));
@@ -1165,6 +1211,7 @@
 		menu.add("-");
 		menu.add(editScriptItem = new MenuItem("Edit Script..."));
 		editScriptItem.addActionListener(this);
+        }
         }
         
         void ScreenFit()
@@ -1666,7 +1713,7 @@
 		{
 			makeSomething(new BezierSurface());
 		} else
-		if (source == checkerItem)
+		if (source == overlayItem)
 		{
                     /*
 			Object3D obj = new BezierSurface(5,8);
@@ -1815,7 +1862,15 @@
 		} else
 		if (source == importOBJItem)
 		{
-			objEditor.ImportJME(new com.jmex.model.converters.ObjToJme(), "obj", "Import OBJ");
+			//objEditor.ImportJME(new com.jmex.model.converters.ObjToJme(), "obj", "Import OBJ");
+                            FileDialog browser = new FileDialog(frame, "Import OBJ", FileDialog.LOAD);
+                            browser.setVisible(true);
+                            String filename = browser.getFile();
+                            if (filename != null && filename.length() > 0)
+                            {
+                                String fullname = browser.getDirectory() + filename;
+                                makeSomething(ReadOBJ(fullname), true);
+                            }
 		} else
 		if (source == computeAOItem)
 		{
@@ -1853,6 +1908,11 @@
 		if (source == dumpItem)
 		{
                     DumpObject();
+		} else
+		if (source == oneStepButton)
+		{
+                    Globals.ONESTEP = true;
+                    cameraView.repaint();
 		} else
 		if (source == screenfitButton)
 		{
@@ -1926,13 +1986,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)
 		{
@@ -2134,11 +2198,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();
@@ -2148,20 +2212,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
@@ -2259,7 +2323,7 @@
                         RandomNode random = new RandomNode();
 			group(random);
                         if (random.size() > 0)
-                            random.name = random.get(0).name + "Rnd";
+                            random.name = random.get(0).name + "Switch";
 		} else
 		if (source == physicsItem)
                 {
@@ -2916,7 +2980,7 @@
                                 
                                 child.editWindow = null; // ???????????
 			}
-			objEditor.ctrlPanel.revalidate();
+			objEditor.ctrlPanel.FlushUI();
 			//objEditor.jTree.clearSelection();
 			//objEditor.ResetSliders();
                     refreshContents(true);
@@ -3635,11 +3699,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();
 
@@ -4124,12 +4188,12 @@
             System.err.println("info : " + child.GetPath());
 				}
 			}
-			else
-                        {
-				objEditor.SetMaterial(group); // .GetMaterial());
-				objEditor.AddInfo(group, this, true); // .GetMaterial());
-            System.err.println("info : " + group.GetPath());
-                        }
+//			else
+//                        {
+//				objEditor.SetMaterial(group); // .GetMaterial());
+//				objEditor.AddInfo(group, this, true); // .GetMaterial());
+//            System.err.println("info : " + group.GetPath());
+//                        }
 			
                         objEditor.SetText(); // jan 2014
                         
@@ -4397,7 +4461,7 @@
 		refreshContents();
 	}
 	
-	void pasteInto(boolean copyit)
+	void pasteInto(boolean copyit, boolean clone)
 	{
 //		if (GrafreeD.clipboard == null)
 //			return;
@@ -4426,7 +4490,14 @@
 		if (copyit)
 		{
 		//	paste(false);
-                    CloneClipboard(false); // sept 2014
+                        if (clone)
+                        {
+                            CloneClipboard(false); // sept 2014
+                        }
+                        else
+                        {
+                            paste(false);
+                        }
 		}
 		else
 		{
@@ -4970,10 +5041,12 @@
 	cButton flashSelectionButton;
 	cButton editButton;
 	cButton uneditButton;
+	JCheckBox allParamsButton;
 	cButton clearpanelButton;
-	cButton allParamsButton;
 	cButton unselectButton;
 	
+	cButton oneStepButton;
+        
 	cButton screenfitButton;
 	cButton screenfitpointButton;
 	cButton snapobjectButton;
@@ -5028,6 +5101,7 @@
 	private MenuItem mergeGeometriesItem;
 	private MenuItem copyItem;
 	private MenuItem pasteItem;
+	private MenuItem pasteIntoItem;
 	private MenuItem pasteLinkItem;
 	private MenuItem pasteCloneItem;
 	private MenuItem pasteExpandItem;
@@ -5125,7 +5199,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;

--
Gitblit v1.6.2