From a69bb4474a3264a9a7a7f8b8d8154ea771f167c8 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Fri, 28 Jun 2019 23:44:22 -0400
Subject: [PATCH] Fix ungroup.

---
 ObjEditor.java    |   79 ++++++++++++++++---------
 RandomEditor.java |    2 
 Torus.java        |    2 
 Cone.java         |    1 
 CameraPane.java   |   15 ++--
 Globals.java      |    2 
 GroupLeaf.java    |    7 ++
 GroupEditor.java  |   59 +++++++++++++------
 RandomNode.java   |    2 
 cButton.java      |    4 
 10 files changed, 111 insertions(+), 62 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index 88a2741..0f77a95 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -13375,9 +13375,10 @@
                 "DP3 " + dest + ".z," + "normals," + "eye;" +
                 "MAX " + dest + ".w," + dest + ".z," + "eps.x;" +
                 //"MOV " + dest + ".w," + "normal.z;" +
-                "MUL " + dest + ".z," + "params2.w," + dest + ".x;" +
-                "MUL " + dest + ".z," + dest + ".z," + dest + ".x;" +
-                //"MOV " + dest + ".z," + "params2.w;" + 
+//            "MUL " + dest + ".z," + "params2.w," + dest + ".x;" + // PRETTY HEURISTIC FOR VELVET
+//            "MUL " + dest + ".z," + dest + ".z," + dest + ".x;" +
+                
+                "MOV " + dest + ".z," + "params2.w;" + // EXACT
                 "POW " + dest + ".w," + dest + ".w," + dest + ".z;" +
                 "RCP " + dest + ".w," + dest + ".w;" +
                 //"RSQ " + dest + ".w," + dest + ".w;" +
@@ -15119,9 +15120,9 @@
             case '_':
                 kompactbit = 5;
                 break;
-            case '+':
-                kompactbit = 6;
-                break;
+//            case '+':
+//                kompactbit = 6;
+//                break;
             case ' ':
                 ObjEditor.theFrame.ToggleFullScreen();
                 repaint();
@@ -15170,8 +15171,8 @@
             case DELETE:
                 ClearSelection();
                 break;
-                /*
             case '+':
+                /*
                 //fontsize += 1;
                 bbzoom *= 2;
                 repaint();
diff --git a/Cone.java b/Cone.java
index 979cce1..3eb0ba6 100644
--- a/Cone.java
+++ b/Cone.java
@@ -2,6 +2,7 @@
 
 class Cone extends Biparam implements java.io.Serializable
 {
+    static final long serialVersionUID = -679715043452968126L;
 
     Cone()
     {
diff --git a/Globals.java b/Globals.java
index c361638..b46c997 100644
--- a/Globals.java
+++ b/Globals.java
@@ -16,7 +16,7 @@
         public static boolean TIMERRUNNING = false;
     
         // Hold on calculation when moving camera
-        public static boolean FREEZEONMOVE = false; // true;
+        public static boolean FREEZEONMOVE = false;
         
         static boolean CROWD = false;
         static public int drawMode = iCameraPane.DEFAULT; // WARNING
diff --git a/GroupEditor.java b/GroupEditor.java
index aa482be..4fa246f 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -220,7 +220,7 @@
 //        toggleSwitchItem.addItemListener(this);
 //        toggleSwitchItem.setState(CameraPane.SWITCH);
         
-        cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Handles"));
+        cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Show Handles"));
         toggleHandleItem.addItemListener(this);
         toggleHandleItem.setState(CameraPane.HANDLES);
         
@@ -582,7 +582,7 @@
          */
                 cGridBag copyOptionsPanel = new cGridBag();
                                         
-                copyOptionsPanel.preferredHeight = 2;
+                copyOptionsPanel.preferredHeight = 1;
                 
                 //this.AddOptions(oe.toolbarPanel, oe.aConstraints);
                 
@@ -726,7 +726,7 @@
                                compositeButton.addActionListener(this);
 
                 oe.toolboxPanel.add(switchButton = GetButton("icons/switch.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
-                switchButton.setToolTipText("Create switch");
+                switchButton.setToolTipText("Create item switcher");
                                switchButton.addActionListener(this);
 
                 oe.toolboxPanel.add(loopButton = GetButton("icons/loop.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
@@ -863,9 +863,13 @@
 
         if (true) // Globals.ADVANCED)
         {
-                panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints);
-                supportCB.setToolTipText("Enable rigging");
-                                supportCB.addItemListener(this);
+//                panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints);
+//                supportCB.setToolTipText("Enable rigging");
+//                                supportCB.addItemListener(this);
+
+                panel.add(freezeCB = new cCheckBox("Freeze", Globals.FREEZEONMOVE)); //, constraints);
+                freezeCB.setToolTipText("Fast moving camera");
+                                freezeCB.addItemListener(this);
 
         //        panel.add(localCB = new cCheckBox("Local", CameraPane.LOCALTRANSFORM), constraints);
         //                        localCB.addItemListener(this);
@@ -929,7 +933,7 @@
                                 toggleTextureCB.addItemListener(this);
                                 
                 panel.add(toggleSwitchCB = new cCheckBox("Switch", CameraPane.SWITCH)); //, constraints);
-                toggleSwitchCB.setToolTipText("Use switch");
+                toggleSwitchCB.setToolTipText("Choose a single item");
                                 toggleSwitchCB.addItemListener(this);
                                 
                 panel.add(autosaveCB = new cCheckBox("Auto-save", Globals.SAVEONMAKE)); //, constraints);
@@ -1000,6 +1004,7 @@
         cCheckBox slowCB;
         cCheckBox boxCB;
         cCheckBox zoomBoxCB;
+        cCheckBox freezeCB;
         //cToggleButton trackCB;
         cCheckBox trackCB;
         cCheckBox smoothfocusCB;
@@ -1117,6 +1122,10 @@
             else if(e.getSource() == shadowCB)
             {
                 Globals.COMPUTESHADOWWHENLIVE ^= true;
+            }
+            else if(e.getSource() == freezeCB)
+            {
+                Globals.FREEZEONMOVE ^= true;
             }
             else if(e.getSource() == autosaveCB)
             {
@@ -2122,25 +2131,25 @@
                         Composite csg = new GroupLeaf();
                         csg.count = 5;
 			group(csg);
-                        Composite child = new cGroup();
+                        Composite child = new cGroup("Branch");
                         csg.addChild(child);
                         child.addChild(csg);
 		} else
 		if (source == doubleItem)
 		{
-                        Composite csg = new GroupLeaf();
+                        Composite csg = new GroupLeaf("Fork");
                         csg.count = 5;
 			group(csg);
-                        Composite child = new cGroup();
+                        Composite child = new cGroup("Branch A");
                         csg.addChild(child);
                         child.addChild(csg);
-                        child = new cGroup();
+                        child = new cGroup("Branch B");
                         csg.addChild(child);
                         child.addChild(csg);
 		} else
 		if (source == tripleItem)
 		{
-                        Composite csg = new GroupLeaf();
+                        Composite csg = new GroupLeaf("Trident");
                         csg.count = 4;
 			group(csg);
                         Composite child = new cGroup();
@@ -2755,15 +2764,28 @@
 		} else
 		if (source == ungroupItem || source == ungroupButton)
 		{
-			//ungroup();
+                    boolean hasRoot = false;
+                    
                     for (int i=0; i<group.selection.size(); i++)
                     {
-                        Ungroup(group.selection.get(i));
+                        if (group.selection.get(i) == group)
+                        {
+                            hasRoot = true;
+                            break;
+                        }
                     }
 
-                    ClearSelection(false);
-                    
-                    refreshContents();
+                    if (!hasRoot)
+                    {
+                        for (int i=0; i<group.selection.size(); i++)
+                        {
+                            Ungroup(group.selection.get(i));
+                        }
+
+                        ClearSelection(false);
+
+                        refreshContents();
+                    }
 		} else
 		if (source == genUVItem)
                 {
@@ -5526,9 +5548,6 @@
 	
 	cButton restoreCameraButton;
         
-	cButton minButton;
-	cButton maxButton;
-	cButton fullButton;
 	cButton saveButton;
 	cButton oneStepButton;
         
diff --git a/GroupLeaf.java b/GroupLeaf.java
index 805acf2..98da0c9 100644
--- a/GroupLeaf.java
+++ b/GroupLeaf.java
@@ -14,7 +14,12 @@
     
     GroupLeaf()
     {
-        super("GroupLeaf");
+        this("Loop");
+    }
+
+    GroupLeaf(String name)
+    {
+        super(name);
         
         addChild(new cGroup("Leaf"));
     }
diff --git a/ObjEditor.java b/ObjEditor.java
index 559d8de..b7cf47d 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -449,7 +449,7 @@
 // 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.setPreferredSize(new Dimension(50, 200));
         infoPanel.setName("Info");
         //infoPanel.setLayout(new BorderLayout());
         //infoPanel.add(createTextPane());
@@ -721,10 +721,19 @@
         void Minimize()
         {
             frame.setState(Frame.ICONIFIED);
+            frame.validate();
         }
         
+//        artifactURI=null, type=0, property=${file.reference.jfxrt.jar}, object=org.netbeans.modules.java.api.common.classpath.ClassPathSupport$RelativePath@6767876f, broken=false, additional={}
+//        artifactURI=null, type=0, property=${file.reference.mac-ui.jar}, object=org.netbeans.modules.java.api.common.classpath.ClassPathSupport$RelativePath@16bdc817, broken=false, additional={}
+//        artifactURI=null, type=0, property=${file.reference.classes.jar}, object=org.netbeans.modules.java.api.common.classpath.ClassPathSupport$RelativePath@9daa9c17, broken=false, additional={}
         void Maximize()
         {
+            if (CameraPane.FULLSCREEN)
+            {
+                ToggleFullScreen();
+            }
+            
             if (maximized)
             {
                 frame.setBounds(keeprect.x, keeprect.y, keeprect.width, keeprect.height);
@@ -739,7 +748,13 @@
             }
             
             maximized ^= true;
+            
+            frame.validate();
         }
+        
+	cButton minButton;
+	cButton maxButton;
+	cButton fullButton;
         
         void ToggleFullScreen()
         {
@@ -748,6 +763,8 @@
                 if (!CameraPane.FULLSCREEN)
                 {
                     device.setFullScreenWindow(null);
+            frame.validate();
+                    
                     //frame.setVisible(false);
 //                frame.removeNotify();
 //                frame.setUndecorated(false);
@@ -773,6 +790,7 @@
 //                        frame.getToolkit().getScreenSize().height);
                     //frame.setVisible(false);
                     device.setFullScreenWindow(frame);
+            frame.validate();
 //                frame.removeNotify();
 //                frame.setUndecorated(true);
 //                frame.addNotify();
@@ -785,6 +803,7 @@
                     radio.layout.doClick();
                     //frame.setVisible(true);
                 }
+            frame.validate();
         }
 
     private JTextPane createTextPane()
@@ -1117,7 +1136,7 @@
             namePanel = new cGridBag();
             
         nameField = AddText(namePanel, copy.GetName());
-        namePanel.add(nameField);
+        namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
         oe.ctrlPanel.add(namePanel);
         
         oe.ctrlPanel.Return();
@@ -1142,7 +1161,7 @@
         rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind);
         rewindCB.setToolTipText("Rewind animation");
         
-        randomCB = AddCheckBox(setupPanel2, "Rand", copy.random);
+        randomCB = AddCheckBox(setupPanel2, "Random", copy.random);
         randomCB.setToolTipText("Randomly Rewind (or Go back and forth)");
 
         if (Globals.ADVANCED)
@@ -1686,24 +1705,6 @@
                 texture.add(textureField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
         colorSection.add(texture);
 
-        cGridBag anisoU = new cGridBag();
-                anisoU.add(anisoLabel = new JLabel("AnisoU")); // , aConstraints);
-                anisoLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-                anisoU.add(anisoField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
-        colorSection.add(anisoU);
-
-        cGridBag anisoV = new cGridBag();
-                anisoV.add(anisoVLabel = new JLabel("AnisoV")); // , aConstraints);
-                anisoVLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-                anisoV.add(anisoVField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
-        colorSection.add(anisoV);
-
-        cGridBag shadowbias = new cGridBag();
-                shadowbias.add(shadowbiasLabel = new JLabel("Shadowbias")); // , aConstraints);
-                shadowbiasLabel.setHorizontalAlignment(SwingConstants.TRAILING);
-                shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
-        colorSection.add(shadowbias);
-
         panel.add(new JSeparator());
         
         panel.add(colorSection);
@@ -1753,6 +1754,12 @@
                 fakedepthLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 fakedepth.add(fakedepthField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
         diffuseSection.add(fakedepth);
+
+        cGridBag shadowbias = new cGridBag();
+                shadowbias.add(shadowbiasLabel = new JLabel("Shadowbias")); // , aConstraints);
+                shadowbiasLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
+        diffuseSection.add(shadowbias);
 
         panel.add(new JSeparator());
         
@@ -1804,6 +1811,18 @@
 //		aConstraints.gridy += 1;
 //		aConstraints.gridwidth = 1;
 
+        cGridBag anisoU = new cGridBag();
+                anisoU.add(anisoLabel = new JLabel("AnisoU")); // , aConstraints);
+                anisoLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                anisoU.add(anisoField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        specularSection.add(anisoU);
+
+        cGridBag anisoV = new cGridBag();
+                anisoV.add(anisoVLabel = new JLabel("AnisoV")); // , aConstraints);
+                anisoVLabel.setHorizontalAlignment(SwingConstants.TRAILING);
+                anisoV.add(anisoVField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
+        specularSection.add(anisoV);
+
 
         panel.add(new JSeparator());
         
@@ -1811,35 +1830,35 @@
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
-        cGridBag globalSection = new cGridBag().setVertical(true);
+        //cGridBag globalSection = new cGridBag().setVertical(true);
 
         cGridBag camera = new cGridBag();
                 camera.add(cameraLabel = new JLabel("GlobalLight")); // , aConstraints);
                 cameraLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 camera.add(cameraField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
-        globalSection.add(camera);
+        colorSection.add(camera);
 
         cGridBag ambient = new cGridBag();
                 ambient.add(ambientLabel = new JLabel("Ambient")); // , aConstraints);
                 ambientLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 ambient.add(ambientField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
-        globalSection.add(ambient);
+        colorSection.add(ambient);
 
         cGridBag backlit = new cGridBag();
                 backlit.add(backlitLabel = new JLabel("Backlit")); // , aConstraints);
                 backlitLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
-        globalSection.add(backlit);
+        colorSection.add(backlit);
 
         cGridBag opacity = new cGridBag();
                 opacity.add(opacityLabel = new JLabel("Opacity")); // , aConstraints);
                 opacityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
                 opacity.add(opacityField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
-        globalSection.add(opacity);
+        colorSection.add(opacity);
 
-        panel.add(new JSeparator());
+        //panel.add(new JSeparator());
         
-        panel.add(globalSection);
+        //panel.add(globalSection);
         
         //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
         
@@ -3538,8 +3557,10 @@
         
         copy.ExtractBigData(hashtable);
         
+        byte[] compress = Compress(copy);
+        
         //EditorFrame.m_MainFrame.requestFocusInWindow();
-        tab.graphs[tab.undoindex++] = Compress(copy);
+        tab.graphs[tab.undoindex++] = compress;
 
         copy.RestoreBigData(hashtable);
 
diff --git a/RandomEditor.java b/RandomEditor.java
index 7e433cf..85b7563 100644
--- a/RandomEditor.java
+++ b/RandomEditor.java
@@ -60,7 +60,7 @@
 	void SetupUI2(ObjEditor oe)
 	{
             super.SetupUI2(oe);
-                childPanel = AddSlider(oe.ctrlPanel, "Child: ", 0, switchnode.Size()-1, switchnode.rnd);
+                childPanel = AddSlider(oe.ctrlPanel, "Item: ", 0, switchnode.Size()-1, switchnode.rnd);
                 
             childField = (cNumberSlider)childPanel.getComponent(1);
             oe.ctrlPanel.Return();
diff --git a/RandomNode.java b/RandomNode.java
index b1c0107..7d0d7b3 100644
--- a/RandomNode.java
+++ b/RandomNode.java
@@ -5,7 +5,7 @@
     
     RandomNode()
     {
-        this("Random");
+        this("Switch");
     }
     
     RandomNode(String name)
diff --git a/Torus.java b/Torus.java
index 04aba57..9e5fb59 100644
--- a/Torus.java
+++ b/Torus.java
@@ -2,6 +2,8 @@
 
 class Torus extends Biparam implements java.io.Serializable
 {
+        static final long serialVersionUID = -7637054329820073252L;
+
     Torus()
     {
         inPnt = new cVector();
diff --git a/cButton.java b/cButton.java
index faeb185..2022871 100644
--- a/cButton.java
+++ b/cButton.java
@@ -12,7 +12,7 @@
     {
         super(name);
         
-        setMargin(new java.awt.Insets(1, -8, 1, -8));
+        setMargin(new java.awt.Insets(1, -1, 1, -1));
         
         if (border)
                 setBorder(new javax.swing.border.EtchedBorder());
@@ -26,7 +26,7 @@
     {
         super(icon);
         
-        setMargin(new java.awt.Insets(-1, -8, -1, -8));
+        setMargin(new java.awt.Insets(-1, -1, -1, -1));
         
 //result = new JButton( icon );
 //result.setBorderPainted( false );

--
Gitblit v1.6.2