From 1af7d3700724834e40ad8636bc9a56cdc3b19b15 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sat, 27 Jul 2019 11:52:38 -0400
Subject: [PATCH] New layout icons

---
 ObjEditor.java |  169 +++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 112 insertions(+), 57 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index 174c859..cd7eaf9 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -44,61 +44,47 @@
     
     cButton GetButton(String name, boolean border)
     {
-        try
-        {
-            ImageIcon icon = GetIcon(name);
-            return new cButton(icon, border);
-        }
-        catch (Exception e)
-        {
-            return new cButton(name, border);
-        }
+        ImageIcon icon = GetIcon(name);
+        return new cButton(icon, border);
     }
 
     cToggleButton GetToggleButton(String name, boolean border)
     {
-        try
-        {
-            ImageIcon icon = GetIcon(name);
-            return new cToggleButton(icon, border);
-        }
-        catch (Exception e)
-        {
-            return new cToggleButton(name, border);
-        }
+        ImageIcon icon = GetIcon(name);
+        return new cToggleButton(icon, border);
     }
 
     cCheckBox GetCheckBox(String name, boolean border)
     {
+        ImageIcon icon = GetIcon(name);
+        return new cCheckBox(icon, border);
+    }
+
+    private ImageIcon GetIcon(String name)
+    {
         try
         {
-            ImageIcon icon = GetIcon(name);
-            return new cCheckBox(icon, border);
+            BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
+
+            if (image.getWidth() != 24 && image.getHeight() != 24)
+            {
+                BufferedImage resized = new BufferedImage(24, 24, image.getType());
+                Graphics2D g = resized.createGraphics();
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+                //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+                g.drawImage(image, 0, 0, 24, 24, 0, 0, image.getWidth(), image.getHeight(), null);
+                g.dispose();
+
+                image = resized;
+            }
+
+            javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image);
+            return icon;
         }
         catch (Exception e)
         {
-            return new cCheckBox(name, border);
+            return null;
         }
-    }
-
-    private ImageIcon GetIcon(String name) throws IOException
-    {
-        BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
-        
-        if (image.getWidth() != 24 && image.getHeight() != 24)
-        {
-            BufferedImage resized = new BufferedImage(24, 24, image.getType());
-            Graphics2D g = resized.createGraphics();
-            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
-            //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-            g.drawImage(image, 0, 0, 24, 24, 0, 0, image.getWidth(), image.getHeight(), null);
-            g.dispose();
-            
-            image = resized;
-        }
-        
-        javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image);
-        return icon;
     }
     
     // SCRIPT
@@ -282,6 +268,12 @@
         client = inClient;
         copy = client;
 
+        if (copy.versions == null)
+        {
+            copy.versions = new byte[100][];
+            copy.versionindex = -1;
+        }
+        
         // "this" is not called: SetupUI2(objEditor);
     }
 
@@ -295,6 +287,12 @@
         client = inClient;
         copy = client;
 
+        if (copy.versions == null)
+        {
+            copy.versions = new byte[100][];
+            copy.versionindex = -1;
+        }
+        
         SetupUI2(callee.GetEditor());
     }
 
@@ -327,6 +325,12 @@
         copy = localCopy;
         copy.editWindow = this;
 
+        if (copy.versions == null)
+        {
+//            copy.versions = new byte[100][];
+//            copy.versionindex = -1;
+        }
+        
         SetupMenu();
 
         //SetupName(objEditor); // new
@@ -419,11 +423,12 @@
     
         toolbarPanel = new JPanel();
         toolbarPanel.setName("Toolbar");
+        
         treePanel = new cGridBag();
         treePanel.setName("Tree");
         
         editPanel = new cGridBag().setVertical(true);
-        editPanel.setName("Edit");
+        //editPanel.setName("Edit");
         
         ctrlPanel = new cGridBag().setVertical(false); // new GridBagLayout());
         
@@ -432,10 +437,10 @@
         editPanel.add(ctrlPanel);
                 
         toolboxPanel = new cGridBag().setVertical(false);
-        toolboxPanel.setName("Toolbox");
+        //toolboxPanel.setName("Toolbox");
         
         materialPanel = new cGridBag().setVertical(true);
-        materialPanel.setName("Material");
+        //materialPanel.setName("Material");
         
         /*JTextPane*/
         infoarea = createTextPane();
@@ -443,6 +448,7 @@
 
         infoarea.setEditable(true);
         SetText();
+        
 //            infoarea.setFont(infoarea.getFont().deriveFont(10, 14f));
 //            infoarea.setOpaque(false);
 //            //infoarea.setForeground(textcolor);
@@ -450,7 +456,7 @@
 // TEXTAREA           infoarea.setWrapStyleWord(true);
         infoPanel = new JScrollPane(infoarea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //AS_NEEDED);
         infoPanel.setPreferredSize(new Dimension(1, 1));
-        infoPanel.setName("Info");
+        //infoPanel.setName("Info");
         //infoPanel.setLayout(new BorderLayout());
         //infoPanel.add(createTextPane());
 
@@ -968,7 +974,7 @@
 //    NumberSlider vDivsField;
 //    JCheckBox endcaps;
     JCheckBox liveCB;
-    JCheckBox selectCB;
+    JCheckBox selectableCB;
     JCheckBox hideCB;
     JCheckBox link2masterCB;
     JCheckBox markCB;
@@ -1180,9 +1186,10 @@
             
         liveCB = AddCheckBox(setupPanel, "Live", copy.live);
                 liveCB.setToolTipText("Animate object");
-        selectCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
-                selectCB.setToolTipText("Make object selectable");
+        selectableCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
+                selectableCB.setToolTipText("Make object selectable");
 //            Return();
+                
         hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
                 hideCB.setToolTipText("Hide object");
         markCB = AddCheckBox(setupPanel, "Mark", copy.marked);
@@ -1474,6 +1481,7 @@
         XYZPanel.addComponent(/*BorderLayout.SOUTH,*/sideView); // Scroll);
         XYZPanel.addComponent(/*BorderLayout.CENTER,*/frontView); // Scroll);
         XYZPanel.addComponent(/*BorderLayout.NORTH,*/topView); // Scroll);
+        //XYZPanel.setName("XYZ");
 
         /*
         gridPanel = new JPanel(); //new BorderLayout());
@@ -1511,16 +1519,23 @@
         //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
         //tmp.setName("Edit");
         objectPanel.add(materialPanel);
+        objectPanel.setIconAt(0, GetIcon("icons/material.png"));
 //        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"));
         
         //if (Globals.ADVANCED)
             objectPanel.add(infoPanel);
+        objectPanel.setIconAt(2, GetIcon("icons/info.png"));
+        
+        objectPanel.add(XYZPanel);
+        objectPanel.setIconAt(3, GetIcon("icons/XYZ.png"));
         
         objectPanel.add(toolboxPanel);
+        objectPanel.setIconAt(4, GetIcon("icons/primitives.png"));
 
         /*
         aConstraints.gridx = 0;
@@ -1541,7 +1556,7 @@
         scrollpane.addMouseWheelListener(this); // Default not fast enough
 
         /*JTabbedPane*/ scenePanel = new cGridBag();
-        scenePanel.preferredWidth = 6;
+        scenePanel.preferredWidth = 5;
         
         JTabbedPane tabbedPane = new JTabbedPane();
         tabbedPane.add(scrollpane);
@@ -1617,9 +1632,9 @@
         /**/
 
         bigThree = new cGridBag();
-        bigThree.addComponent(scenePanel);
         bigThree.addComponent(centralPanel);
-        bigThree.addComponent(XYZPanel);
+        bigThree.addComponent(scenePanel);
+        //bigThree.addComponent(XYZPanel);
         
 //                // SIDE EFFECT!!!
 //		aConstraints.gridx = 0;
@@ -3236,7 +3251,7 @@
         {
             copy.live ^= true;
             return;
-        } else if (event.getSource() == selectCB)
+        } else if (event.getSource() == selectableCB)
         {
             copy.dontselect ^= true;
             return;
@@ -3731,18 +3746,42 @@
     cButton replaceButton;
     cButton redoButton;
         
+    boolean muteSlider;
+    
+    int VersionCount()
+    {
+        int count = 0;
+        
+        for (int i = copy.versions.length; --i >= 0;)
+        {
+            if (copy.versions[i] != null)
+                count++;
+        }
+        
+        return count;
+    }
+    
     void SetUndoStates()
     {
         cRadio tab = GetCurrentTab();
         
         restoreButton.setEnabled(copy.versionindex != -1);
         replaceButton.setEnabled(copy.versionindex != -1);
+        
         undoButton.setEnabled(copy.versionindex > 0);
         redoButton.setEnabled(copy.versions[copy.versionindex + 1] != null);
+        
+        muteSlider = true;
+        versionSlider.setMaximum(VersionCount() - 1);
+        versionSlider.setInteger(copy.versionindex);
+        muteSlider = false;
     }
     
     public boolean Undo()
     {
+        // Option?
+        Replace();
+        
         System.err.println("Undo");
         
         cRadio tab = GetCurrentTab();
@@ -3809,6 +3848,9 @@
 
     public void Redo()
     {
+        // Option?
+        Replace();
+        
         cRadio tab = GetCurrentTab();
         
         if (copy.versions[copy.versionindex + 1] == null)
@@ -4118,14 +4160,17 @@
         //copy.Touch();
     }
 
-    cNumberSlider versionField;
+    cNumberSlider versionSlider;
     
     public void stateChanged(ChangeEvent e)
     {
         //    assert(false);
-        if (e.getSource() == versionField)
+        if (e.getSource() == versionSlider)
         {
-            int version = versionField.getInteger();
+            if (muteSlider)
+                return;
+            
+            int version = versionSlider.getInteger();
             
             if (copy.versions[version] != null)
             {
@@ -4724,7 +4769,9 @@
             readobj.ResetDisplayList();
         } catch (Exception e)
         {
-            //e.printStackTrace();
+            if (!e.toString().contains("GZIP"))
+                e.printStackTrace();
+            
             try
             {
                 java.io.FileInputStream istream = new java.io.FileInputStream(fullname);
@@ -4844,6 +4891,7 @@
                 }
             } catch (ClassCastException e)
             {
+                e.printStackTrace();
                 assert (false);
                 Composite c = (Composite) copy;
                 c.children.clear();
@@ -4857,7 +4905,13 @@
             copy.versions = readobj.versions;
             copy.versionindex = readobj.versionindex;
             
-            SetUndoStates();
+        if (copy.versions == null)
+        {
+            copy.versions = new byte[100][];
+            copy.versionindex = -1;
+        }
+        
+            //? SetUndoStates();
             
             ResetModel();
             copy.HardTouch(); // recompile?
@@ -4968,6 +5022,7 @@
             //ps.print(buffer.toString());
         } catch (IOException e)
         {
+            e.printStackTrace();
         }
     }
     

--
Gitblit v1.6.2