1 package fr.orsay.lri.varna.applications.newGUI;
3 import java.awt.BorderLayout;
5 import java.awt.Component;
6 import java.awt.Dimension;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
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;
25 class VARNAGUIRenderer extends DefaultTreeCellRenderer {
30 private static VARNAGUIRenderer _default = new VARNAGUIRenderer(null,null);
34 public VARNAGUIRenderer (JTree j, VARNAGUITreeModel m)
40 public JComponent baseElements(JTree tree,VARNAGUITreeModel m,
41 Object value, boolean sel, boolean expanded, boolean leaf,
42 int row, boolean hasFocus)
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);
50 //renderer.setBackground(Color.blue);
51 result.setBorder(BorderFactory.createLineBorder(Color.blue));
52 result.setBackground(UIManager.getColor("Tree.selectionBackground"));
53 initValue.setOpaque(true);
57 result.setBackground(Color.white);
58 result.setBorder(BorderFactory.createLineBorder(initValue.getBackground()));
61 DefaultMutableTreeNode t = (DefaultMutableTreeNode)value;
62 Object o = t.getUserObject();
63 if (!( o instanceof VARNAGUIModel))
67 initValue.setIcon(_default.getOpenIcon());
71 initValue.setIcon(_default.getClosedIcon());
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);
80 VARNAGUIModel mod = (VARNAGUIModel) o;
81 initValue.setIcon(_default.getLeafIcon());
82 result.add(initValue,BorderLayout.WEST);
85 JButton refresh = new JButton("Refresh");
86 result.add(refresh,BorderLayout.EAST);
92 public Component getDefaultTreeCellRendererComponent(JTree tree,
93 Object value, boolean sel, boolean expanded, boolean leaf,
94 int row, boolean hasFocus)
96 return super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
99 public Component getTreeCellRendererComponent(JTree tree,
100 Object value, boolean sel, boolean expanded, boolean leaf,
101 int row, boolean hasFocus)
104 return baseElements(tree,_m,value,sel,expanded,leaf,row,hasFocus);
106 public Dimension getPreferredSize(int row) {
107 Dimension size = super.getPreferredSize();
108 size.width = _j.getWidth();
109 System.out.println(size);
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);
120 public class FolderCloses implements ActionListener{
123 VARNAGUITreeModel _m;
125 public FolderCloses(String path, JComponent p, VARNAGUITreeModel m)
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)
134 _m.removeFolder(_path);
135 System.out.println(_j);