From 5892f05411c3d4dce2d8a59e0966dc2e1843a971 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sat, 17 Aug 2019 08:33:35 -0400
Subject: [PATCH] Fix L&F nimbus too slow.

---
 ObjEditor.java              |   81 ++++++++++++++++++--------
 GroupEditor.java            |    4 
 Checker.java                |    5 +
 icons/white-sphere-icon.png |    0 
 cButton.java                |    2 
 cToggleButton.java          |    2 
 Composite.java              |    1 
 Grafreed.java               |   51 ++++++++++++++++-
 8 files changed, 111 insertions(+), 35 deletions(-)

diff --git a/Checker.java b/Checker.java
index 1c59d2c..06f161e 100644
--- a/Checker.java
+++ b/Checker.java
@@ -11,10 +11,13 @@
         
         material = new cMaterial();
         
-        material.ambient = 100;
+        material.ambient = 1;
         material.specular = 0.001f;
         material.diffuse = 0.01f;
         material.cameralight = 0.001f;
+        material.opacity = 0.5f;
+        
+        flipV = true;
     }
 
     Object3D deepCopy()
diff --git a/Composite.java b/Composite.java
index 63b89d4..4aa0f45 100644
--- a/Composite.java
+++ b/Composite.java
@@ -401,7 +401,6 @@
         {
             child = (Object3D) e.nextElement();
         }
-
     }
 
     void createEditWindow(GroupEditor callee, boolean newWindow) //, boolean root)
diff --git a/Grafreed.java b/Grafreed.java
index 99344db..39862ba 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -5,6 +5,7 @@
 
 import java.io.*;
 
+import java.util.ArrayList;
 import javax.swing.UIManager;
 import javax.swing.plaf.metal.MetalLookAndFeel;
 import javax.swing.plaf.ColorUIResource;
@@ -15,7 +16,7 @@
 //import com.jamonapi.*;
 public class Grafreed extends Applet implements ActionListener
 {
-        static boolean NIMBUSLAF = true;
+        static boolean NIMBUSLAF = false; // true;
         
     static int RENDERME = 0;
 
@@ -898,6 +899,13 @@
             //UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
             //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                         //UIManager.put("nimbusBase", new Color(0,0,0));
+                        
+                    javax.swing.UIDefaults ui = UIManager.getDefaults();
+                    for (java.util.Enumeration e = ui.keys(); e.hasMoreElements();)
+                    {
+                        Object key = e.nextElement();
+                        System.out.println(key + " --> " + ui.get(key));
+                    }
                 }
                 catch (Exception e)
                 {
@@ -907,12 +915,49 @@
         {
                 try
                 {
-                    MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
-                    MetalLookAndFeel.setCurrentTheme(new Theme(Constants.yellowTheme));
+                    //Object o = UIManager.getInstalledLookAndFeels();
+                    
+                    MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.DefaultMetalTheme());
+                    //MetalLookAndFeel.setCurrentTheme(new Theme(Constants.yellowTheme));
+                    //UIManager.put("ScrollBar.background", new javax.swing.plaf.ColorUIResource(100,0,0));
                     UIManager.setLookAndFeel(new MetalLookAndFeel());
                     //UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
                     //UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
+                    //UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                     //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+                    
+                    javax.swing.UIDefaults ui = UIManager.getDefaults();
+                    ArrayList gradient = new java.util.ArrayList(5);
+                    gradient.add(1.0);
+                    gradient.add(0.0);
+                    gradient.add(new javax.swing.plaf.ColorUIResource(255,255,255));
+                    gradient.add(new javax.swing.plaf.ColorUIResource(192,192,192));
+                    gradient.add(new javax.swing.plaf.ColorUIResource(0,0,0));
+                    
+                    ui.put("Button.gradient", gradient);
+                    ui.put("TabbedPane.tabInsets", new javax.swing.plaf.InsetsUIResource(0,8,0,0));
+                    ui.put("Slider.foreground", new javax.swing.plaf.ColorUIResource(0,0,0));
+                    ui.put("Slider.horizontalThumbIcon", ObjEditor.GetIcon("icons/white-sphere-icon.png"));
+                    
+                    //javax.swing.plaf.metal.MetalIconFactory.getHorizontalSliderThumbIcon().
+                    Object o = ui.get("Slider.horizontalThumbIcon");
+                    
+                    gradient = new java.util.ArrayList(5);
+                    gradient.add(1.0);
+                    gradient.add(0.0);
+                    gradient.add(new javax.swing.plaf.ColorUIResource(192,192,192));
+                    gradient.add(new javax.swing.plaf.ColorUIResource(255,255,255));
+                    gradient.add(new javax.swing.plaf.ColorUIResource(0,0,0));
+                    
+                    ui.put("ToggleButton.gradient", gradient);
+                    //ui.put("Button[MouseOver].backgroundPainter", new com.sun.java.swing.plaf.nimbus.ButtonPainter());
+                    //ui.put("Button.highlight", new javax.swing.plaf.ColorUIResource(155,155,155));
+                    
+                    for (java.util.Enumeration e = ui.keys(); e.hasMoreElements();)
+                    {
+                        Object key = e.nextElement();
+                        //System.out.println(key + " --> " + ui.get(key));
+                    }
                 } catch (Exception e)
                 {
                 }
diff --git a/GroupEditor.java b/GroupEditor.java
index 09250cb..08097bc 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -1040,7 +1040,7 @@
          */
                 cGridBag copyOptionsPanel = new cGridBag();
                                         
-                copyOptionsPanel.preferredHeight = 2;
+                copyOptionsPanel.preferredHeight = 3;
                 
                 //this.AddOptions(oe.toolbarPanel, oe.aConstraints);
                 
@@ -1323,7 +1323,7 @@
                 oe.treePanel.Return();
         cGridBag sliderPane = AddSlider(oe.treePanel, "Version", 0, 0, 0);
             versionSlider = (cNumberSlider)sliderPane.getComponent(1);
-            sliderPane.preferredHeight = 1;
+            sliderPane.preferredHeight = 2;
                 
 //        mainPanel.setDividerLocation(0.1); //1.0);
         mainPanel.setResizeWeight(0.4);
diff --git a/ObjEditor.java b/ObjEditor.java
index 2b68312..7bec816 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -106,7 +106,7 @@
 
     static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>();
     
-    ImageIcon GetIcon(String name)
+    static ImageIcon GetIcon(String name)
     {
         javax.swing.ImageIcon iconCache = icons.get(name);
         if (iconCache != null)
@@ -116,7 +116,7 @@
         
         try
         {
-            BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
+            BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
 
 //            if (image.getWidth() > 48 && image.getHeight() > 48)
 //            {
@@ -1715,7 +1715,7 @@
         scrollpane.addMouseWheelListener(this); // Default not fast enough
 
         /*JTabbedPane*/ scenePanel = new cGridBag();
-        scenePanel.preferredWidth = 5;
+        scenePanel.preferredWidth = 6;
         
         JTabbedPane tabbedPane = new JTabbedPane();
         tabbedPane.add(scrollpane);
@@ -4738,6 +4738,12 @@
 //            else
 //		applySelf(true);
 //	}
+    
+    boolean Equal(double a, double b)
+    {
+        return Math.abs(a - b) < 0.001;
+    }
+    
     void applySelf0(boolean name)
     {
         if (name)
@@ -4787,29 +4793,52 @@
                 {
                     cMaterial mat = copy.material;
                             
-                    colorField.SetToolTipValue((mat.color));
-                    saturationField.SetToolTipValue((mat.modulation));
-                    metalnessField.SetToolTipValue((mat.metalness));
-                    diffuseField.SetToolTipValue((mat.diffuse));
-                    specularField.SetToolTipValue((mat.specular));
-                    shininessField.SetToolTipValue((mat.shininess));
-                    shiftField.SetToolTipValue((mat.shift));
-                    ambientField.SetToolTipValue((mat.ambient));
-                    lightareaField.SetToolTipValue((mat.lightarea));
-                    diffusenessField.SetToolTipValue((mat.factor));
-                    velvetField.SetToolTipValue((mat.velvet));
-                    sheenField.SetToolTipValue((mat.sheen));
-                    subsurfaceField.SetToolTipValue((mat.subsurface));
-                    backlitField.SetToolTipValue((mat.bump));
-                    anisoField.SetToolTipValue((mat.aniso));
-                    anisoVField.SetToolTipValue((mat.anisoV));
-                    cameraField.SetToolTipValue((mat.cameralight));
-                    selfshadowField.SetToolTipValue((mat.diffuseness));
-                    shadowField.SetToolTipValue((mat.shadow));
-                    textureField.SetToolTipValue((mat.texture));
-                    opacityField.SetToolTipValue((mat.opacity));
-                    fakedepthField.SetToolTipValue((mat.fakedepth));
-                    shadowbiasField.SetToolTipValue((mat.shadowbias));
+                    if (!Equal(colorField.getFloat(), mat.color))
+                        colorField.SetToolTipValue((mat.color));
+                    if (!Equal(saturationField.getFloat(), mat.modulation))
+                        saturationField.SetToolTipValue((mat.modulation));
+                    if (!Equal(metalnessField.getFloat(), mat.metalness))
+                        metalnessField.SetToolTipValue((mat.metalness));
+                    if (!Equal(diffuseField.getFloat(), mat.diffuse))
+                        diffuseField.SetToolTipValue((mat.diffuse));
+                    if (!Equal(specularField.getFloat(), mat.specular))
+                        specularField.SetToolTipValue((mat.specular));
+                    if (!Equal(shininessField.getFloat(), mat.shininess))
+                        shininessField.SetToolTipValue((mat.shininess));
+                    if (!Equal(shiftField.getFloat(), mat.shift))
+                        shiftField.SetToolTipValue((mat.shift));
+                    if (!Equal(ambientField.getFloat(), mat.ambient))
+                        ambientField.SetToolTipValue((mat.ambient));
+                    if (!Equal(lightareaField.getFloat(), mat.lightarea))
+                        lightareaField.SetToolTipValue((mat.lightarea));
+                    if (!Equal(diffusenessField.getFloat(), mat.factor))
+                        diffusenessField.SetToolTipValue((mat.factor));
+                    if (!Equal(velvetField.getFloat(), mat.velvet))
+                        velvetField.SetToolTipValue((mat.velvet));
+                    if (!Equal(sheenField.getFloat(), mat.sheen))
+                        sheenField.SetToolTipValue((mat.sheen));
+                    if (!Equal(subsurfaceField.getFloat(), mat.subsurface))
+                        subsurfaceField.SetToolTipValue((mat.subsurface));
+                    if (!Equal(backlitField.getFloat(), mat.bump))
+                        backlitField.SetToolTipValue((mat.bump));
+                    if (!Equal(anisoField.getFloat(), mat.aniso))
+                        anisoField.SetToolTipValue((mat.aniso));
+                    if (!Equal(anisoVField.getFloat(), mat.anisoV))
+                        anisoVField.SetToolTipValue((mat.anisoV));
+                    if (!Equal(cameraField.getFloat(), mat.cameralight))
+                        cameraField.SetToolTipValue((mat.cameralight));
+                    if (!Equal(selfshadowField.getFloat(), mat.diffuseness))
+                        selfshadowField.SetToolTipValue((mat.diffuseness));
+                    if (!Equal(shadowField.getFloat(), mat.shadow))
+                        shadowField.SetToolTipValue((mat.shadow));
+                    if (!Equal(textureField.getFloat(), mat.texture))
+                        textureField.SetToolTipValue((mat.texture));
+                    if (!Equal(opacityField.getFloat(), mat.opacity))
+                        opacityField.SetToolTipValue((mat.opacity));
+                    if (!Equal(fakedepthField.getFloat(), mat.fakedepth))
+                        fakedepthField.SetToolTipValue((mat.fakedepth));
+                    if (!Equal(shadowbiasField.getFloat(), mat.shadowbias))
+                        shadowbiasField.SetToolTipValue((mat.shadowbias));
                 }
                 
                 if (copy.material != null && copy.projectedVertices.length > 0 && copy.projectedVertices[0] != null)
diff --git a/cButton.java b/cButton.java
index 2022871..9357d5b 100644
--- a/cButton.java
+++ b/cButton.java
@@ -26,7 +26,7 @@
     {
         super(icon);
         
-        setMargin(new java.awt.Insets(-1, -1, -1, -1));
+        setMargin(new java.awt.Insets(1, 10, 1, 10)); // ??
         
 //result = new JButton( icon );
 //result.setBorderPainted( false );
diff --git a/cToggleButton.java b/cToggleButton.java
index a9a562a..06b84ac 100644
--- a/cToggleButton.java
+++ b/cToggleButton.java
@@ -37,7 +37,7 @@
             //if (getWidth() > image.getWidth(null) + 8)
             {
                 g.drawImage(image, this.getWidth()/2 - 12, this.getHeight()/2 - 12, this);
-                g.drawRect(0, 0, this.getWidth()-1, this.getHeight()-1);
+                g.drawRect(2, 2, this.getWidth()-5, this.getHeight()-5);
             }
         }
     }
diff --git a/icons/white-sphere-icon.png b/icons/white-sphere-icon.png
new file mode 100644
index 0000000..c4349a6
--- /dev/null
+++ b/icons/white-sphere-icon.png
Binary files differ

--
Gitblit v1.6.2