9 ***************************************************************************/ |
9 ***************************************************************************/ |
10 |
10 |
11 package GraphBrowser; |
11 package GraphBrowser; |
12 |
12 |
13 import java.awt.*; |
13 import java.awt.*; |
14 import awtUtilities.ScrollCanvas; |
14 import java.awt.event.*; |
15 import java.util.*; |
15 import java.util.*; |
16 |
16 |
17 |
17 |
18 public class TreeBrowser extends ScrollCanvas |
18 public class TreeBrowser extends Canvas implements MouseListener |
19 { |
19 { |
20 TreeNode t; |
20 TreeNode t; |
21 TreeNode selected; |
21 TreeNode selected; |
22 GraphView gv; |
22 GraphView gv; |
23 long timestamp; |
23 long timestamp; |
|
24 Dimension size; |
|
25 boolean parent_needs_layout; |
24 |
26 |
25 public TreeBrowser(TreeNode tn,GraphView gr) { |
27 public TreeBrowser(TreeNode tn, GraphView gr) { |
26 t=tn;gv=gr; |
28 t=tn;gv=gr; |
|
29 size = new Dimension(0, 0); |
|
30 parent_needs_layout = true; |
|
31 addMouseListener(this); |
27 } |
32 } |
28 |
33 |
29 public boolean mouseDown(Event e,int x,int y) |
34 public Dimension getPreferredSize() { |
|
35 return size; |
|
36 } |
|
37 |
|
38 public void mouseEntered(MouseEvent evt) {} |
|
39 |
|
40 public void mouseExited(MouseEvent evt) {} |
|
41 |
|
42 public void mouseReleased(MouseEvent evt) {} |
|
43 |
|
44 public void mousePressed(MouseEvent evt) {} |
|
45 |
|
46 public void mouseClicked(MouseEvent e) |
30 { |
47 { |
31 TreeNode l=t.lookup(y); |
48 TreeNode l=t.lookup(e.getY()); |
32 |
49 |
33 if (l!=null) |
50 if (l!=null) |
34 { |
51 { |
35 if (l.select()) { |
52 if (l.select()) { |
36 Vector v=new Vector(10,10); |
53 Vector v=new Vector(10,10); |
39 gv.relayout(); |
56 gv.relayout(); |
40 } else { |
57 } else { |
41 Vertex vx=gv.getGraph().getVertexByNum(l.getNumber()); |
58 Vertex vx=gv.getGraph().getVertexByNum(l.getNumber()); |
42 gv.focusToVertex(l.getNumber()); |
59 gv.focusToVertex(l.getNumber()); |
43 vx=gv.getOriginalGraph().getVertexByNum(l.getNumber()); |
60 vx=gv.getOriginalGraph().getVertexByNum(l.getNumber()); |
44 if (e.when-timestamp < 400 && !(vx.getPath().equals(""))) |
61 if (e.getWhen()-timestamp < 400 && !(vx.getPath().equals(""))) |
45 gv.getBrowser().viewFile(vx.getPath()); |
62 gv.getBrowser().viewFile(vx.getPath()); |
46 timestamp=e.when; |
63 timestamp=e.getWhen(); |
47 |
64 |
48 } |
65 } |
49 selected=l;repaint(); |
66 selected=l; |
50 |
67 parent_needs_layout = true; |
|
68 repaint(); |
51 } |
69 } |
52 return true; |
|
53 } |
70 } |
54 |
71 |
55 public void selectNode(TreeNode nd) { |
72 public void selectNode(TreeNode nd) { |
56 Vector v=new Vector(10,10); |
73 Vector v=new Vector(10,10); |
57 nd.select(); |
74 nd.select(); |
58 t.collapsedDirectories(v); |
75 t.collapsedDirectories(v); |
59 gv.collapseDir(v); |
76 gv.collapseDir(v); |
60 gv.relayout(); |
77 gv.relayout(); |
61 selected=nd;repaint(); |
78 selected=nd; |
|
79 parent_needs_layout = true; |
|
80 repaint(); |
62 } |
81 } |
63 |
82 |
64 public void paintCanvas(Graphics g) |
83 public void paint(Graphics g) |
65 { |
84 { |
66 Dimension d=t.draw(g,5,5,selected); |
85 Dimension d = t.draw(g,5,5,selected); |
67 set_size(5+d.width,5+d.height); |
86 if (parent_needs_layout) { |
|
87 size = new Dimension(5+d.width, 5+d.height); |
|
88 parent_needs_layout = false; |
|
89 getParent().doLayout(); |
|
90 } |
68 } |
91 } |
69 } |
92 } |
70 |
93 |