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 |  481 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 267 insertions(+), 214 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index e07d192..afb7487 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -138,34 +138,41 @@
     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);
+        
+        objEditor.ctrlPanel.remove(namePanel);
         
         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(setupPanel);
+        objEditor.ctrlPanel.remove(commandsPanel);
+        objEditor.ctrlPanel.remove(pushPanel);
+        //objEditor.ctrlPanel.remove(fillPanel);
+        
+        //Remove(normalpushField);
     }
 
     public ObjEditor GetEditor()
@@ -302,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);
@@ -353,21 +376,23 @@
         objectPanel = new JTabbedPane();
         toolbarPanel = new JPanel();
         toolbarPanel.setName("Toolbar");
-        treePanel = new JPanel();
+        treePanel = new cGridBag();
         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");
         /*JTextPane*/
         infoarea = createTextPane();
+        doc = infoarea.getStyledDocument();
+
         infoarea.setEditable(true);
         SetText();
 //            infoarea.setFont(infoarea.getFont().deriveFont(10, 14f));
 //            infoarea.setOpaque(false);
 //            //infoarea.setForeground(textcolor);
-            infoarea.setLineWrap(true);
-            infoarea.setWrapStyleWord(true);
+// TEXTAREA           infoarea.setLineWrap(true);
+// TEXTAREA           infoarea.setWrapStyleWord(true);
         infoPanel = new JScrollPane(infoarea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //AS_NEEDED);
         infoPanel.setPreferredSize(new Dimension(50, 200));
         infoPanel.setName("Info");
@@ -378,15 +403,15 @@
         mainPanel.setName("Main");
         mainPanel.setContinuousLayout(true);
         mainPanel.setOneTouchExpandable(true);
-        mainPanel.setDividerLocation(1.0);
         mainPanel.setDividerSize(9);
-        mainPanel.setResizeWeight(0);
+        mainPanel.setDividerLocation(0.5); //1.0);
+        mainPanel.setResizeWeight(0.5);
 
         //ctrlPanel.setLayout(new GridLayout(4, 1, 5, 5));
         //mainPanel.setLayout(new GridBagLayout());
         toolbarPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
-        treePanel.setLayout(new GridBagLayout());
-        ctrlPanel.setLayout(new GridBagLayout());
+//        treePanel.setLayout(new GridBagLayout());
+        //ctrlPanel.setLayout(new GridBagLayout());
         //materialPanel.setLayout(new GridBagLayout());
 
         aConstraints = new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
@@ -426,7 +451,7 @@
     static String newline = "\n";
     protected static final String buttonString = "JButton";
     StyledDocument doc;
-    JTextArea infoarea;
+    JTextPane infoarea;
 
     void ClearInfo()
     {
@@ -493,7 +518,10 @@
                 }
 
         if (full)
-            si.SendInfo("    BBox: " + minima + " - " + maxima, "regular");
+        {
+            si.SendInfo("    BBox min: " + minima, "regular");
+            si.SendInfo("    BBox max: " + maxima, "regular");
+        }
         
                 if (sel.bRep != null)
                 {
@@ -591,6 +619,9 @@
             {
                 CameraPane.pointflow = (PointFlow) sel;
             }
+            
+            si.SendInfo("_____________________", "regular");
+            si.SendInfo("", "regular");
         }
     }
 
@@ -622,52 +653,52 @@
                 cameraView.ToggleFullScreen();
         }
 
-    private JTextArea createTextPane()
+    private JTextPane createTextPane()
     {
-        String[] initString =
-        {
-            "This is an editable JTextPane, ", //regular
-            "another ", //italic
-            "styled ", //bold
-            "text ", //small
-            "component, ", //large
-            "which supports embedded components..." + newline,//regular
-            " " + newline, //button
-            "...and embedded icons..." + newline, //regular
-            " ", //icon
-            newline + "JTextPane is a subclass of JEditorPane that "
-            + "uses a StyledEditorKit and StyledDocument, and provides "
-            + "cover methods for interacting with those objects."
-        };
+// TEXTAREA       String[] initString =
+//        {
+//            "This is an editable JTextPane, ", //regular
+//            "another ", //italic
+//            "styled ", //bold
+//            "text ", //small
+//            "component, ", //large
+//            "which supports embedded components..." + newline,//regular
+//            " " + newline, //button
+//            "...and embedded icons..." + newline, //regular
+//            " ", //icon
+//            newline + "JTextPane is a subclass of JEditorPane that "
+//            + "uses a StyledEditorKit and StyledDocument, and provides "
+//            + "cover methods for interacting with those objects."
+//        };
+//
+//        String[] initStyles =
+//        {
+//            "regular", "italic", "bold", "small", "large",
+//            "regular", "button", "regular", "icon",
+//            "regular"
+//        };
+//
+//        JTextPane textPane = new JTextPane();
+//        textPane.setEditable(true);
+//        /*StyledDocument*/ doc = textPane.getStyledDocument();
+//        addStylesToDocument(doc);
+//
+//        try
+//        {
+//            for (int j = 0; j < 2; j++)
+//            {
+//                for (int i = 0; i < initString.length; i++)
+//                {
+//                    doc.insertString(doc.getLength(), initString[i],
+//                            doc.getStyle(initStyles[i]));
+//                }
+//            }
+//        } catch (BadLocationException ble)
+//        {
+//            System.err.println("Couldn't insert initial text into text pane.");
+//        }
 
-        String[] initStyles =
-        {
-            "regular", "italic", "bold", "small", "large",
-            "regular", "button", "regular", "icon",
-            "regular"
-        };
-
-        JTextPane textPane = new JTextPane();
-        textPane.setEditable(true);
-        /*StyledDocument*/ doc = textPane.getStyledDocument();
-        addStylesToDocument(doc);
-
-        try
-        {
-            for (int j = 0; j < 2; j++)
-            {
-                for (int i = 0; i < initString.length; i++)
-                {
-                    doc.insertString(doc.getLength(), initString[i],
-                            doc.getStyle(initStyles[i]));
-                }
-            }
-        } catch (BadLocationException ble)
-        {
-            System.err.println("Couldn't insert initial text into text pane.");
-        }
-
-        return new JTextArea(); // textPane;
+        return new JTextPane(); // textPane;
     }
 
     protected void addStylesToDocument(StyledDocument doc)
@@ -767,54 +798,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 +847,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 +860,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 +913,7 @@
 
     /*
      */
-    void Return() // ObjEditor oe)
+    void Return0() // ObjEditor oe)
     {
         aConstraints.gridy += 1;
         aConstraints.gridx = 0;
@@ -951,37 +968,70 @@
 
     void SetupUI2(ObjEditor oe)
     {
-//            oe.aConstraints.weightx = 0;
-//            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);
+                liveCB.setToolTipText("Animate object");
+        hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
+                hideCB.setToolTipText("Hide object");
 //            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);
+        markCB.setToolTipText("Set the animation target transform");
+        
+        rewindCB = AddCheckBox(setupPanel, "Rewind", copy.rewind);
+        rewindCB.setToolTipText("Rewind animation");
+        
+        randomCB = AddCheckBox(setupPanel, "Random", copy.random);
+        randomCB.setToolTipText("Option for switch node");
+
+        if (Globals.ADVANCED)
+        {
+                link2masterCB = AddCheckBox(setupPanel, "Support", copy.link2master);
+                link2masterCB.setToolTipText("Attach to support");
+                speedupCB = AddCheckBox(setupPanel, "Speed", copy.speedup);
+                speedupCB.setToolTipText("Option motion capture");
+        }
+        
+        oe.ctrlPanel.add(setupPanel);
+        oe.ctrlPanel.Return();
+        
+            commandsPanel = new cGridBag().setVertical(false);
+        
+        resetButton = AddButton(commandsPanel, "Reset");
+        resetButton.setToolTipText("Jump to frame zero");
+        stepButton = AddButton(commandsPanel, "Step");
+        stepButton.setToolTipText("Step one frame");
 //            resetAllButton = AddButton(oe, "Reset All");
 //            stepAllButton = AddButton(oe, "Step All");
-        speedupCB = AddCheckBox(oe, "Speed", copy.speedup);
 //            Return();
-        slowerButton = AddButton(oe, "Slow");
-        fasterButton = AddButton(oe, "Fast");
-        remarkButton = AddButton(oe, "Rem");
+        slowerButton = AddButton(commandsPanel, "Slow");
+        slowerButton.setToolTipText("Decrease animation speed");
+        fasterButton = AddButton(commandsPanel, "Fast");
+        fasterButton.setToolTipText("Increase animation speed");
+        remarkButton = AddButton(commandsPanel, "Remark");
+        remarkButton.setToolTipText("Set the current transform as the target");
 
-        Return();
+        oe.ctrlPanel.add(commandsPanel);
+        oe.ctrlPanel.Return();
 
-    normalpushField = AddSlider(oe.ctrlPanel, "Push", -10, 10, 0, -1);
-    Return();
+    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 +1126,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 +1303,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 +1466,7 @@
         ctrlPanel.removeAll();
     }
 
-    void SetupMaterial(cGridBag ctrlPanel)
+    void SetupMaterial(cGridBag panel)
     {
          /*
         ctrlPanel.add(materialLabel = new JLabel("MATERIAL : "), aConstraints);
@@ -1424,18 +1475,26 @@
 
         cGridBag editBar = new cGridBag().setVertical(false);
             
-        editBar.add(createMaterialButton = new cButton("Create")); // , aConstraints);
+        editBar.add(createMaterialButton = new cButton("Create", !GrafreeD.NIMBUSLAF)); // , aConstraints);
+                createMaterialButton.setToolTipText("Create material");
 
         /*
         ctrlPanel.add(resetSlidersButton = new cButton("Reset All"), aConstraints);
          */
 
-        editBar.add(clearMaterialButton = new cButton("Clear")); // , aConstraints);
-        editBar.add(resetSlidersButton = new cButton("Reset")); // , aConstraints);
-        editBar.add(propagateToggle = new cCheckBox("Prop", propagate)); // , aConstraints);
-        editBar.add(multiplyToggle = new cCheckBox("Mult", false)); // , aConstraints);
+        editBar.add(clearMaterialButton = new cButton("Clear", !GrafreeD.NIMBUSLAF)); // , aConstraints);
+                clearMaterialButton.setToolTipText("Clear material");
+        
+        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);
+        }
 
-        ctrlPanel.add(editBar);
+        editBar.preferredHeight = 15;
+        
+        panel.add(editBar);
         
         /**/
         //aConstraints.weighty = 0;
@@ -1445,17 +1504,13 @@
         //aConstraints.gridx += 1;
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
 
-        JPanel colorPanel = new JPanel(new BorderLayout());
-        colorPanel.setBorder(BorderFactory.createLineBorder(Color.black));
-        
         cGridBag colorSection = new cGridBag().setVertical(true);
-        
-        colorPanel.add(colorSection);
         
         cGridBag color = new cGridBag();
                 color.add(colorLabel = new JLabel("Color/hue")); // , aConstraints);
                 colorLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 color.add(colorField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        //colorField.preferredWidth = 200;
         colorSection.add(color);
 
         cGridBag modulation = new cGridBag();
@@ -1488,16 +1543,13 @@
                 shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         colorSection.add(shadowbias);
 
-        ctrlPanel.add(colorPanel);
+        panel.add(new JSeparator());
+        
+        panel.add(colorSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
-        JPanel diffusePanel = new JPanel(new BorderLayout());
-        diffusePanel.setBorder(BorderFactory.createLineBorder(Color.black));
-        
         cGridBag diffuseSection = new cGridBag().setVertical(true);
-        
-        diffusePanel.add(diffuseSection);
         
         cGridBag diffuse = new cGridBag();
                 diffuse.add(diffuseLabel = new JLabel("Diffuse")); // , aConstraints);
@@ -1541,16 +1593,13 @@
                 fakedepth.add(fakedepthField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         diffuseSection.add(fakedepth);
 
-        ctrlPanel.add(diffusePanel);
+        panel.add(new JSeparator());
+        
+        panel.add(diffuseSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
-        JPanel specularPanel = new JPanel(new BorderLayout());
-        specularPanel.setBorder(BorderFactory.createLineBorder(Color.black));
-        
         cGridBag specularSection = new cGridBag().setVertical(true);
-        
-        specularPanel.add(specularSection);
 
         cGridBag specular = new cGridBag();
                 specular.add(specularLabel = new JLabel("Specular")); // , aConstraints);
@@ -1582,7 +1631,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);
@@ -1595,16 +1644,13 @@
 //		aConstraints.gridwidth = 1;
 
 
-        ctrlPanel.add(specularPanel);
+        panel.add(new JSeparator());
+        
+        panel.add(specularSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
-        JPanel globalPanel = new JPanel(new BorderLayout());
-        globalPanel.setBorder(BorderFactory.createLineBorder(Color.black));
-        
         cGridBag globalSection = new cGridBag().setVertical(true);
-        
-        globalPanel.add(globalSection);
 
         cGridBag camera = new cGridBag();
                 camera.add(cameraLabel = new JLabel("GlobalLight")); // , aConstraints);
@@ -1630,16 +1676,13 @@
                 opacity.add(opacityField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
         globalSection.add(opacity);
 
-        ctrlPanel.add(globalPanel);
+        panel.add(new JSeparator());
+        
+        panel.add(globalSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
-        JPanel texturePanel = new JPanel(new BorderLayout());
-        texturePanel.setBorder(BorderFactory.createLineBorder(Color.black));
-        
         cGridBag textureSection = new cGridBag().setVertical(true);
-        
-        texturePanel.add(textureSection);
 
         cGridBag bump = new cGridBag();
                 bump.add(bumpLabel = new JLabel("Bump")); // , aConstraints);
@@ -1677,7 +1720,9 @@
                 opacityPower.add(opacityPowerField = new cNumberSlider(this, 0.0, 10 /*10 dec 2013*/)); // , aConstraints);
         textureSection.add(opacityPower);
 
-        ctrlPanel.add(texturePanel);
+        panel.add(new JSeparator());
+        
+        panel.add(textureSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
 
@@ -1714,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)
@@ -2496,6 +2544,7 @@
                 }
                 if (input == null)
                 {
+                new Exception().printStackTrace();
                     System.exit(0);
                 }
 
@@ -2710,7 +2759,8 @@
             return;
         }
 
-        multiplyToggle.setSelected(mat.multiply);
+        if (multiplyToggle != null)
+                multiplyToggle.setSelected(mat.multiply);
 
         assert (object.projectedVertices != null);
 
@@ -2925,7 +2975,7 @@
             frame.validate();
 
             return;
-        } else if (event.getSource() == toggleRandomItem)
+        } else if (event.getSource() == toggleSwitchItem)
         {
             cameraView.ToggleRandom();
             cameraView.repaint();
@@ -2970,6 +3020,7 @@
         if (event.getSource() == randomCB)
         {
             copy.random ^= true;
+            objEditor.refreshContents();
             return;
         }
         if (event.getSource() == speedupCB)
@@ -3193,7 +3244,7 @@
         if (!Globals.ANIMATION)
         {
             FileDialog browser = new FileDialog(frame, "Save Animation As...", FileDialog.SAVE);
-            browser.show();
+            browser.setVisible(true);
             String filename = browser.getFile();
             if (filename != null && filename.length() > 0)
             {
@@ -3225,6 +3276,7 @@
             callee.refreshContents();
         } else
         {
+                new Exception().printStackTrace();
             System.exit(0);
         }
     }
@@ -3254,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);
         {
@@ -3313,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()
@@ -3435,6 +3487,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;
@@ -4406,8 +4459,8 @@
     //MenuItem normalLensItem;
     MenuItem editCameraItem;
     MenuItem revertCameraItem;
-    CheckboxMenuItem toggleLiveItem;
     MenuItem stepItem;
+    CheckboxMenuItem toggleLiveItem;
     CheckboxMenuItem toggleFullScreenItem;
     CheckboxMenuItem toggleTimelineItem;
     CheckboxMenuItem toggleRenderItem;
@@ -4416,7 +4469,7 @@
     CheckboxMenuItem toggleFootContactItem;
     CheckboxMenuItem toggleDLItem;
     CheckboxMenuItem toggleTextureItem;
-    CheckboxMenuItem toggleRandomItem;
+    CheckboxMenuItem toggleSwitchItem;
     CheckboxMenuItem toggleRootItem;
     CheckboxMenuItem animationItem;
     CheckboxMenuItem toggleHandleItem;
@@ -4424,7 +4477,7 @@
     JSplitPane mainPanel;
     JScrollPane scrollpane;
     JPanel toolbarPanel;
-    JPanel treePanel;
+    cGridBag treePanel;
     JPanel radioPanel;
     ButtonGroup buttonGroup;
     cGridBag ctrlPanel;

--
Gitblit v1.6.2