From f868664f7e7626f651e6ade9c9f6863851ef43b7 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Wed, 06 Nov 2019 23:12:57 -0500
Subject: [PATCH] Dangerous "reset".

---
 cFileSystemModel.java |  152 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 121 insertions(+), 31 deletions(-)

diff --git a/cFileSystemModel.java b/cFileSystemModel.java
index 1748e2b..acb8318 100644
--- a/cFileSystemModel.java
+++ b/cFileSystemModel.java
@@ -1,10 +1,12 @@
 
 import java.io.*;
+import javax.swing.Icon;
 import javax.swing.event.*;
 import javax.swing.tree.*;
 
 class cFileSystemModel implements TreeModel
 {
+
     File root;
     cFilter filter;
 
@@ -23,88 +25,176 @@
     {
     }
 
-    public Object getChild(Object parent, int index) 
+    public Object getChild(Object parent, int index)
     {
         //new Exception().printStackTrace();
-        
+
         //System.out.println("child[" + index + "] = " + ((File) parent).listFiles(filter)[index]);
-        
+
         File[] files = table.get(parent);
-        assert(files != null);
+        assert (files != null);
         //return ((File) parent).listFiles(filter)[index];
         return files[index];
-        
-    }
 
+    }
     java.util.Hashtable<File, File[]> table = new java.util.Hashtable<File, File[]>();
-    
-    public int getChildCount(Object parent) 
+
+    public int getChildCount(Object parent)
     {
-        if( isLeaf(parent) )
+        if (isLeaf(parent))
+        {
             return 0;
-        else
+        } else
         {
             //System.out.println(parent + " childcount = " + ((File) parent).listFiles(filter).length);
             File[] files = table.get(parent);
-            
-            if(files == null)
+
+            if (files == null)
             {
                 files = ((File) parent).listFiles(filter);
                 table.put(((File) parent), files);
             }
-            
+
             return files.length;
         }
     }
 
-    public int getIndexOfChild(Object parent, Object child) 
+    public int getIndexOfChild(Object parent, Object child)
     {
         assert false;
         return 0;
     }
 
-    public Object getRoot() 
+    public Object getRoot()
     {
         return root;
     }
 
-    public boolean isLeaf(Object node) 
+    public boolean isLeaf(Object node)
     {
         return !((File) node).isDirectory();
     }
 
-    public void removeTreeModelListener(TreeModelListener l) 
+    public void removeTreeModelListener(TreeModelListener l)
     {
     }
 
-    public void valueForPathChanged(TreePath path, Object newValue) 
+    public void valueForPathChanged(TreePath path, Object newValue)
     {
     }
 
+    static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>();
+    
+            
     static class Renderer extends DefaultTreeCellRenderer
     {
-        public Renderer() {
+
+        public Renderer()
+        {
         }
 
         public java.awt.Component getTreeCellRendererComponent(
-                            cTree tree,
-                            Object value,
-                            boolean sel,
-                            boolean expanded,
-                            boolean leaf,
-                            int row,
-                            boolean hasFocus)
+                //cTree tree,
+                javax.swing.JTree tree,
+                Object value,
+                boolean sel,
+                boolean expanded,
+                boolean leaf,
+                int row,
+                boolean hasFocus)
         {
-            System.out.println(value);
+            //System.out.println(value);
             super.getTreeCellRendererComponent(
-                            tree, value, sel,
-                            expanded, leaf, row,
-                            hasFocus);
+                    tree, value, sel,
+                    expanded, leaf, row,
+                    hasFocus);
+            
+            String valueString = value.toString();
+            String lcString = valueString.toLowerCase();
+            
+            if (lcString.endsWith(".gfd") || lcString.endsWith(".obj") || lcString.endsWith(".3ds"))
+            {
+                if (true)
+                {
+                    // Small icons
+                    String valueTruncated = valueString.substring(0, valueString.length()-4);
+
+                    //System.out.println("valueTruncated = " + valueTruncated);
+
+                    javax.swing.ImageIcon rendererIcon = icons.get(valueTruncated);
+
+                    if (rendererIcon == null)
+                    {
+                        if (new File(valueTruncated + ".jpg").exists())
+                        {
+                            rendererIcon = new javax.swing.ImageIcon(valueTruncated + ".jpg");
+                        }
+                        else
+                        {
+                            if (new File(valueTruncated + ".png").exists())
+                            {
+                                rendererIcon = new javax.swing.ImageIcon(valueTruncated + ".png");
+                            }
+                        }
+
+                        if (rendererIcon == null)
+                        {
+                            rendererIcon = ObjEditor.GetIcon("icons/primitives.png");
+                        }
+
+                        icons.put(valueTruncated, rendererIcon);
+                    }
+
+                    setIcon(rendererIcon);
+                }
+                else
+                {
+                    // Large icons
+                    String[] split = valueString.split("/");
+
+                    String valueTruncated = "";
+                    
+                    for (int i=1; i<split.length-1; i++)
+                    {
+                        valueTruncated += "/" + split[i];
+                    }
+                    
+                    valueTruncated += "/icon.jpg";
+                    
+                    System.out.println(valueTruncated);
+
+                    javax.swing.ImageIcon rendererIcon = icons.get(valueTruncated);
+
+                    if (rendererIcon == null)
+                    {
+                        if (new File(valueTruncated).exists())
+                        {
+                            rendererIcon = new javax.swing.ImageIcon(valueTruncated);
+                        }
+
+                        if (rendererIcon == null)
+                        {
+                            rendererIcon = new javax.swing.ImageIcon();
+                        }
+
+                        icons.put(valueTruncated, rendererIcon);
+                    }
+
+                    setIcon(rendererIcon);
+                }
+            }
+            else
+            {
+                //setIcon(null);
+//                Icon systemIcon = javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon( new File(valueString) );
+//                setIcon(systemIcon);
+            }
+            
             setToolTipText("This book is in the Tutorial series.");
 
             return this;
         }
-        
+
         public void setText(String text)
         {
             //System.out.println(text);

--
Gitblit v1.6.2