From 59de607850161a26863f92961d53caae7a2dabc8 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 06 Aug 2019 21:37:03 -0400
Subject: [PATCH] Pin button.

---
 ObjEditor.java |  394 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 362 insertions(+), 32 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index 996442d..8e14d77 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -34,6 +34,7 @@
         iSendInfo
 //KeyListener
 {
+    public cToggleButton pinButton;
         boolean timeline;
         boolean wasFullScreen;
 
@@ -466,6 +467,8 @@
                 
         toolboxPanel = new cGridBag().setVertical(true);
         //toolboxPanel.setName("Toolbox");
+        
+        skyboxPanel = new cGridBag().setVertical(true);
         
         materialPanel = new cGridBag().setVertical(false);
         //materialPanel.setName("Material");
@@ -1205,6 +1208,18 @@
         
             namePanel = new cGridBag();
             
+        //if (copy.pinned)
+        {
+            pinButton = GetToggleButton("icons/pin.png", !Grafreed.NIMBUSLAF);
+            pinButton.setSelected(copy.pinned);
+            cGridBag t = new cGridBag();
+            t.preferredWidth = 2;
+            t.add(pinButton);
+            namePanel.add(t);
+            
+            pinButton.addItemListener(this);
+        }
+        
         nameField = AddText(namePanel, copy.GetName());
         namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
         oe.ctrlPanel.add(namePanel);
@@ -1556,27 +1571,26 @@
         objectPanel.setIconAt(0, GetIcon("icons/material.png"));
         objectPanel.setToolTipTextAt(0, "Material");
     
+        objectPanel.add(toolboxPanel);
+        objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
+        objectPanel.setToolTipTextAt(1, "Objects & textures");
+
+        objectPanel.add(skyboxPanel);
+        objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg"));
+        objectPanel.setToolTipTextAt(2, "Backgrounds");
+        
 //        JPanel north = new JPanel(new BorderLayout());
 //        north.setName("Edit");
 //        north.add(ctrlPanel, BorderLayout.NORTH);
 //        objectPanel.add(north);
         objectPanel.add(editPanel);
-        objectPanel.setIconAt(1, GetIcon("icons/write.png"));
-        objectPanel.setToolTipTextAt(1, "Edit controls");
-        
-        //if (Globals.ADVANCED)
-            objectPanel.add(infoPanel);
-        objectPanel.setIconAt(2, GetIcon("icons/info.png"));
-        objectPanel.setToolTipTextAt(2, "Information");
+        objectPanel.setIconAt(3, GetIcon("icons/write.png"));
+        objectPanel.setToolTipTextAt(3, "Edit controls");
         
         objectPanel.add(XYZPanel);
-        objectPanel.setIconAt(3, GetIcon("icons/XYZ.png"));
-        objectPanel.setToolTipTextAt(3, "XYZ/RGB transform");
+        objectPanel.setIconAt(4, GetIcon("icons/XYZ.png"));
+        objectPanel.setToolTipTextAt(4, "XYZ/RGB transform");
         
-        objectPanel.add(toolboxPanel);
-        objectPanel.setIconAt(4, GetIcon("icons/primitives.png"));
-        objectPanel.setToolTipTextAt(4, "Objects & backgrounds");
-
         /*
         aConstraints.gridx = 0;
         aConstraints.gridwidth = 1;
@@ -1613,6 +1627,11 @@
 
         scenePanel.add(tabbedPane);
 
+        //if (Globals.ADVANCED)
+            tabbedPane.add(infoPanel);
+        tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
+        tabbedPane.setToolTipTextAt(3, "Information");
+        
         /*
         cTree jTree = new cTree(null);
         ToolTipManager.sharedInstance().registerComponent(jTree);
@@ -1740,7 +1759,9 @@
     void SetupMaterial(cGridBag materialpanel)
     {
         cGridBag presetpanel = new cGridBag().setVertical(true);
+        
         cLabel skin = GetLabel("icons/shadericons/shadericon00000.png", !Grafreed.NIMBUSLAF);
+        skin.setToolTipText("Skin");
         skin.addMouseListener(new MouseAdapter()
         {
             public void mouseClicked(MouseEvent e)
@@ -1769,8 +1790,116 @@
         });
         presetpanel.add(skin);
         
-        cLabel rough2 = GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF);
-        rough2.addMouseListener(new MouseAdapter()
+        cLabel lambert = GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF);
+        lambert.setToolTipText("Diffuse");
+        lambert.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[2].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(lambert);
+        
+        cLabel diffuse2 = GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF);
+        diffuse2.setToolTipText("Diffuse2");
+        diffuse2.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[3].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(diffuse2);
+        
+        cLabel diffusemoon = GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF);
+        diffusemoon.setToolTipText("Moon");
+        diffusemoon.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[4].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(diffusemoon);
+        
+        cLabel diffusemoon2 = GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF);
+        diffusemoon2.setToolTipText("Moon2");
+        diffusemoon2.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[5].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(diffusemoon2);
+        
+        cLabel diffusemoon3 = GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF);
+        diffusemoon3.setToolTipText("Moon3");
+        diffusemoon3.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[6].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(diffusemoon3);
+        
+        cLabel diffusesheen = GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF);
+        diffusesheen.setToolTipText("Sheen");
+        diffusesheen.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[7].get(0);
+                cMaterial material = object.material;
+                
+                sheenField.setFloat(material.sheen);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(diffusesheen);
+        
+        cLabel rough = GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF);
+        rough.setToolTipText("Rough metal");
+        rough.addMouseListener(new MouseAdapter()
         {
             public void mouseClicked(MouseEvent e)
             {
@@ -1784,31 +1913,220 @@
                 applySelf();
             }
         });
+        presetpanel.add(rough);
+        
+        cLabel rough2 = GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF);
+        rough2.setToolTipText("Medium metal");
+        rough2.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[13].get(0);
+                cMaterial material = object.material;
+                
+                shininessField.setFloat(material.shininess);
+                lightareaField.setFloat(material.lightarea);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
         presetpanel.add(rough2);
         
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF));
-        presetpanel.add(GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF));
+        cLabel shini0 = GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF);
+        shini0.setToolTipText("Shiny");
+        shini0.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[14].get(0);
+                cMaterial material = object.material;
+                
+                shininessField.setFloat(material.shininess);
+                lightareaField.setFloat(material.lightarea);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(shini0);
+        
+        cLabel shini1 = GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF);
+        shini1.setToolTipText("Shiny2");
+        shini1.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[11].get(0);
+                cMaterial material = object.material;
+                
+                shininessField.setFloat(material.shininess);
+                lightareaField.setFloat(material.lightarea);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(shini1);
+        
+        cLabel shini2 = GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF);
+        shini2.setToolTipText("Shiny3");
+        shini2.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[12].get(0);
+                cMaterial material = object.material;
+                
+                shininessField.setFloat(material.shininess);
+                lightareaField.setFloat(material.lightarea);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(shini2);
+        
+        cLabel aniso = GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF);
+        aniso.setToolTipText("AnisoU");
+        aniso.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[8].get(0);
+                cMaterial material = object.material;
+                
+                anisoField.setFloat(material.aniso);
+                anisoVField.setFloat(material.anisoV);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(aniso);
+        
+        cLabel aniso2 = GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF);
+        aniso2.setToolTipText("AnisoV");
+        aniso2.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[9].get(0);
+                cMaterial material = object.material;
+                
+                anisoField.setFloat(material.aniso);
+                anisoVField.setFloat(material.anisoV);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(aniso2);
+        
+        cLabel aniso3 = GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF);
+        aniso3.setToolTipText("AnisoUV");
+        aniso3.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[10].get(0);
+                cMaterial material = object.material;
+                
+                anisoField.setFloat(material.aniso);
+                anisoVField.setFloat(material.anisoV);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(aniso3);
+        
+        cLabel velvet0 = GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF);
+        velvet0.setToolTipText("Velvet");
+        velvet0.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[15].get(0);
+                cMaterial material = object.material;
+                
+                diffusenessField.setFloat(material.factor);
+                selfshadowField.setFloat(material.diffuseness);
+                sheenField.setFloat(material.sheen);
+                shininessField.setFloat(material.shininess);
+                velvetField.setFloat(material.velvet);
+                shiftField.setFloat(material.shift);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(velvet0);
+        
+        cLabel bump0 = GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF);
+        bump0.setToolTipText("Bump texture");
+        bump0.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[16].get(0);
+                cMaterial material = object.material;
+                
+                bumpField.setFloat(object.projectedVertices[0].x / 1000.0);
+                noiseField.setFloat(object.projectedVertices[0].y / 1000.0);
+                powerField.setFloat(object.projectedVertices[2].x / 1000.0);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(bump0);
+        
+        cLabel halo = GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF);
+        halo.setToolTipText("Halo");
+        halo.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[17].get(0);
+                cMaterial material = object.material;
+                
+                opacityPowerField.setFloat(object.projectedVertices[2].y / 1000.0);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(halo);
+        
+        cLabel candle = GetLabel("icons/shadericons/shadericon00018.png", !Grafreed.NIMBUSLAF);
+        candle.setToolTipText("Candle");
+        candle.addMouseListener(new MouseAdapter()
+        {
+            public void mouseClicked(MouseEvent e)
+            {
+                Object3D object = Grafreed.materials.versionlist[18].get(0);
+                cMaterial material = object.material;
+                
+                subsurfaceField.setFloat(material.subsurface);
+                shadowbiasField.setFloat(material.shadowbias);
+                ambientField.setFloat(material.ambient);
+                specularField.setFloat(material.specular);
+                lightareaField.setFloat(material.lightarea);
+                shininessField.setFloat(material.shininess);
+
+                materialtouched = true;
+                applySelf();
+            }
+        });
+        presetpanel.add(candle);
         
         cGridBag panel = new cGridBag().setVertical(true);
         
         presetpanel.preferredWidth = 1;
         
-        materialpanel.add(panel);
         materialpanel.add(presetpanel);
+        materialpanel.add(panel);
         
         panel.preferredWidth = 8;
         
@@ -3275,6 +3593,17 @@
     public void itemStateChanged(ItemEvent event)
     {
         //                   System.out.println("Propagate = " + propagate);
+        if (event.getSource() == pinButton)
+        {
+            copy.pinned ^= true;
+            if (!copy.pinned && !copy.editWindow.copy.selection.contains(copy))
+            {
+                ((GroupEditor)copy.editWindow).listUI.remove(copy);
+                copy.CloseUI();
+                //copy.editWindow.refreshContents();
+            }
+        }
+        else
         if (event.getSource() == propagateToggle)
         {
             propagate ^= true;
@@ -5448,6 +5777,7 @@
     ButtonGroup buttonGroup;
     
     cGridBag toolboxPanel;
+    cGridBag skyboxPanel;
     cGridBag materialPanel;
     cGridBag ctrlPanel;
     

--
Gitblit v1.6.2