JAL-3026 srcjar files for VARNA and log4j
[jalview.git] / srcjar / fr / orsay / lri / varna / applications / newGUI / VARNAGUIRenderer.java
1 package fr.orsay.lri.varna.applications.newGUI;
2
3 import java.awt.BorderLayout;
4 import java.awt.Color;
5 import java.awt.Component;
6 import java.awt.Dimension;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9 import java.io.File;
10
11 import javax.swing.BorderFactory;
12 import javax.swing.JButton;
13 import javax.swing.JComponent;
14 import javax.swing.JLabel;
15 import javax.swing.JOptionPane;
16 import javax.swing.JPanel;
17 import javax.swing.JScrollPane;
18 import javax.swing.JTree;
19 import javax.swing.UIManager;
20 import javax.swing.border.Border;
21 import javax.swing.plaf.basic.BasicTreeUI;
22 import javax.swing.tree.DefaultMutableTreeNode;
23 import javax.swing.tree.DefaultTreeCellRenderer;
24
25 class VARNAGUIRenderer extends DefaultTreeCellRenderer {  
26            
27         JTree _j;
28         VARNAGUITreeModel _m;
29         
30         private static VARNAGUIRenderer _default = new VARNAGUIRenderer(null,null);
31
32         
33
34         public VARNAGUIRenderer (JTree j, VARNAGUITreeModel m)
35         {
36                 _j = j;
37                 _m = m;
38         }
39         
40         public JComponent baseElements(JTree tree,VARNAGUITreeModel m,  
41             Object value, boolean sel, boolean expanded, boolean leaf,  
42             int row, boolean hasFocus)
43         {
44                 JLabel initValue = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
45         JPanel result = new JPanel();
46         result.setLayout(new BorderLayout());
47         initValue.setBorder(null);
48         if (hasFocus)
49         { 
50                 //renderer.setBackground(Color.blue);            
51                 result.setBorder(BorderFactory.createLineBorder(Color.blue));
52             result.setBackground(UIManager.getColor("Tree.selectionBackground"));
53             initValue.setOpaque(true);
54         }
55         else
56         {
57                 result.setBackground(Color.white);
58                 result.setBorder(BorderFactory.createLineBorder(initValue.getBackground()));
59             
60         }
61         DefaultMutableTreeNode t = (DefaultMutableTreeNode)value;
62         Object o = t.getUserObject();
63         if (!( o instanceof VARNAGUIModel))    
64         {  
65             if (expanded)  
66             {  
67                 initValue.setIcon(_default.getOpenIcon());  
68             }  
69             else  
70             {  
71                 initValue.setIcon(_default.getClosedIcon());  
72             }  
73             result.add(initValue,BorderLayout.WEST);
74                 JButton del = new JButton("X");
75                 del.addActionListener(new FolderCloses((String)o,tree,m));
76             result.add(del,BorderLayout.EAST);
77         }  
78         else  
79         {  
80                 VARNAGUIModel mod = (VARNAGUIModel) o;
81                 initValue.setIcon(_default.getLeafIcon());  
82             result.add(initValue,BorderLayout.WEST);
83             if (mod.hasChanged())
84             {
85                   JButton refresh = new JButton("Refresh");
86               result.add(refresh,BorderLayout.EAST);
87             }
88         }
89         return result;
90         }
91         
92     public Component getDefaultTreeCellRendererComponent(JTree tree,  
93             Object value, boolean sel, boolean expanded, boolean leaf,  
94             int row, boolean hasFocus)  
95     {
96       return super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
97     }
98
99         public Component getTreeCellRendererComponent(JTree tree,  
100             Object value, boolean sel, boolean expanded, boolean leaf,  
101             int row, boolean hasFocus)  
102     {
103         
104         return baseElements(tree,_m,value,sel,expanded,leaf,row,hasFocus);  
105     }  
106     public Dimension getPreferredSize(int row) {
107         Dimension size = super.getPreferredSize();
108         size.width = _j.getWidth();
109         System.out.println(size);
110         return size;
111     }
112
113
114 //    @Override
115 //    public void setBounds(final int x, final int y, final int width, final int height) {
116 //    super.setBounds(x, y, Math.min(_j.getWidth()-x, width), height);
117 //    }
118     
119     
120     public class FolderCloses implements ActionListener{
121         String _path;
122         JComponent _p;
123         VARNAGUITreeModel _m;
124         
125         public FolderCloses(String path, JComponent p, VARNAGUITreeModel m)
126         {
127                 _path = path;
128                 _p = p;
129                 _m = m;
130         }
131                 public void actionPerformed(ActionEvent e) {
132                         if (JOptionPane.showConfirmDialog(_p, "This folder will cease to be watched. Confirm?", "Closing folder", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
133                         {
134                                 _m.removeFolder(_path);
135                                 System.out.println(_j);
136                                 _j.updateUI();
137                         }
138                 }
139                     
140     }
141 }