Java 11 integration;
[jalview.git] / src2 / fr / orsay / lri / varna / applications / newGUI / VARNAGUIRenderer.java
diff --git a/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUIRenderer.java b/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUIRenderer.java
new file mode 100644 (file)
index 0000000..9ea6a47
--- /dev/null
@@ -0,0 +1,141 @@
+package fr.orsay.lri.varna.applications.newGUI;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.plaf.basic.BasicTreeUI;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+class VARNAGUIRenderer extends DefaultTreeCellRenderer {  
+          
+       JTree _j;
+       VARNAGUITreeModel _m;
+       
+       private static VARNAGUIRenderer _default = new VARNAGUIRenderer(null,null);
+
+       
+
+       public VARNAGUIRenderer (JTree j, VARNAGUITreeModel m)
+       {
+               _j = j;
+               _m = m;
+       }
+       
+       public JComponent baseElements(JTree tree,VARNAGUITreeModel m,  
+            Object value, boolean sel, boolean expanded, boolean leaf,  
+            int row, boolean hasFocus)
+       {
+               JLabel initValue = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
+        JPanel result = new JPanel();
+        result.setLayout(new BorderLayout());
+        initValue.setBorder(null);
+        if (hasFocus)
+        { 
+               //renderer.setBackground(Color.blue);            
+               result.setBorder(BorderFactory.createLineBorder(Color.blue));
+            result.setBackground(UIManager.getColor("Tree.selectionBackground"));
+            initValue.setOpaque(true);
+        }
+        else
+        {
+               result.setBackground(Color.white);
+               result.setBorder(BorderFactory.createLineBorder(initValue.getBackground()));
+            
+        }
+        DefaultMutableTreeNode t = (DefaultMutableTreeNode)value;
+        Object o = t.getUserObject();
+        if (!( o instanceof VARNAGUIModel))    
+        {  
+            if (expanded)  
+            {  
+               initValue.setIcon(_default.getOpenIcon());  
+            }  
+            else  
+            {  
+               initValue.setIcon(_default.getClosedIcon());  
+            }  
+            result.add(initValue,BorderLayout.WEST);
+               JButton del = new JButton("X");
+               del.addActionListener(new FolderCloses((String)o,tree,m));
+            result.add(del,BorderLayout.EAST);
+        }  
+        else  
+        {  
+               VARNAGUIModel mod = (VARNAGUIModel) o;
+               initValue.setIcon(_default.getLeafIcon());  
+            result.add(initValue,BorderLayout.WEST);
+            if (mod.hasChanged())
+            {
+                 JButton refresh = new JButton("Refresh");
+              result.add(refresh,BorderLayout.EAST);
+            }
+        }
+        return result;
+       }
+       
+    public Component getDefaultTreeCellRendererComponent(JTree tree,  
+            Object value, boolean sel, boolean expanded, boolean leaf,  
+            int row, boolean hasFocus)  
+    {
+      return super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
+    }
+
+       public Component getTreeCellRendererComponent(JTree tree,  
+            Object value, boolean sel, boolean expanded, boolean leaf,  
+            int row, boolean hasFocus)  
+    {
+       
+        return baseElements(tree,_m,value,sel,expanded,leaf,row,hasFocus);  
+    }  
+    public Dimension getPreferredSize(int row) {
+        Dimension size = super.getPreferredSize();
+        size.width = _j.getWidth();
+        System.out.println(size);
+        return size;
+    }
+
+
+//    @Override
+//    public void setBounds(final int x, final int y, final int width, final int height) {
+//    super.setBounds(x, y, Math.min(_j.getWidth()-x, width), height);
+//    }
+    
+    
+    public class FolderCloses implements ActionListener{
+       String _path;
+       JComponent _p;
+       VARNAGUITreeModel _m;
+       
+       public FolderCloses(String path, JComponent p, VARNAGUITreeModel m)
+       {
+               _path = path;
+               _p = p;
+               _m = m;
+       }
+               public void actionPerformed(ActionEvent e) {
+                       if (JOptionPane.showConfirmDialog(_p, "This folder will cease to be watched. Confirm?", "Closing folder", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
+                       {
+                               _m.removeFolder(_path);
+                               System.out.println(_j);
+                               _j.updateUI();
+                       }
+               }
+                   
+    }
+}  
\ No newline at end of file