author | wenzelm |
Fri, 16 Nov 2001 22:11:19 +0100 | |
changeset 12229 | bfba0eb5124b |
parent 11873 | 38dc46b55d7e |
child 14981 | e73f8140af78 |
permissions | -rw-r--r-- |
3599 | 1 |
/*************************************************************************** |
2 |
Title: GraphBrowser/TreeBrowser.java |
|
3 |
ID: $Id$ |
|
4 |
Author: Stefan Berghofer, TU Muenchen |
|
11873
38dc46b55d7e
Moved font settings from TreeNode to TreeBrowser.
berghofe
parents:
6541
diff
changeset
|
5 |
License: GPL (GNU GENERAL PUBLIC LICENSE) |
3599 | 6 |
|
7 |
This class defines the browser window which is used to display directory |
|
8 |
trees. It contains methods for handling events. |
|
9 |
***************************************************************************/ |
|
10 |
||
11 |
package GraphBrowser; |
|
12 |
||
13 |
import java.awt.*; |
|
6541 | 14 |
import java.awt.event.*; |
3599 | 15 |
import java.util.*; |
16 |
||
17 |
||
6541 | 18 |
public class TreeBrowser extends Canvas implements MouseListener |
3599 | 19 |
{ |
20 |
TreeNode t; |
|
21 |
TreeNode selected; |
|
22 |
GraphView gv; |
|
23 |
long timestamp; |
|
6541 | 24 |
Dimension size; |
25 |
boolean parent_needs_layout; |
|
11873
38dc46b55d7e
Moved font settings from TreeNode to TreeBrowser.
berghofe
parents:
6541
diff
changeset
|
26 |
Font font; |
3599 | 27 |
|
11873
38dc46b55d7e
Moved font settings from TreeNode to TreeBrowser.
berghofe
parents:
6541
diff
changeset
|
28 |
public TreeBrowser(TreeNode tn, GraphView gr, Font f) { |
38dc46b55d7e
Moved font settings from TreeNode to TreeBrowser.
berghofe
parents:
6541
diff
changeset
|
29 |
t = tn; gv = gr; font = f; |
6541 | 30 |
size = new Dimension(0, 0); |
31 |
parent_needs_layout = true; |
|
32 |
addMouseListener(this); |
|
3599 | 33 |
} |
34 |
||
6541 | 35 |
public Dimension getPreferredSize() { |
36 |
return size; |
|
37 |
} |
|
38 |
||
39 |
public void mouseEntered(MouseEvent evt) {} |
|
40 |
||
41 |
public void mouseExited(MouseEvent evt) {} |
|
42 |
||
43 |
public void mouseReleased(MouseEvent evt) {} |
|
44 |
||
45 |
public void mousePressed(MouseEvent evt) {} |
|
46 |
||
47 |
public void mouseClicked(MouseEvent e) |
|
3599 | 48 |
{ |
6541 | 49 |
TreeNode l=t.lookup(e.getY()); |
3599 | 50 |
|
51 |
if (l!=null) |
|
52 |
{ |
|
53 |
if (l.select()) { |
|
54 |
Vector v=new Vector(10,10); |
|
55 |
t.collapsedDirectories(v); |
|
56 |
gv.collapseDir(v); |
|
57 |
gv.relayout(); |
|
58 |
} else { |
|
59 |
Vertex vx=gv.getGraph().getVertexByNum(l.getNumber()); |
|
60 |
gv.focusToVertex(l.getNumber()); |
|
61 |
vx=gv.getOriginalGraph().getVertexByNum(l.getNumber()); |
|
6541 | 62 |
if (e.getWhen()-timestamp < 400 && !(vx.getPath().equals(""))) |
3599 | 63 |
gv.getBrowser().viewFile(vx.getPath()); |
6541 | 64 |
timestamp=e.getWhen(); |
3599 | 65 |
|
66 |
} |
|
6541 | 67 |
selected=l; |
68 |
parent_needs_layout = true; |
|
69 |
repaint(); |
|
3599 | 70 |
} |
71 |
} |
|
72 |
||
73 |
public void selectNode(TreeNode nd) { |
|
74 |
Vector v=new Vector(10,10); |
|
75 |
nd.select(); |
|
76 |
t.collapsedDirectories(v); |
|
77 |
gv.collapseDir(v); |
|
78 |
gv.relayout(); |
|
6541 | 79 |
selected=nd; |
80 |
parent_needs_layout = true; |
|
81 |
repaint(); |
|
3599 | 82 |
} |
83 |
||
6541 | 84 |
public void paint(Graphics g) |
3599 | 85 |
{ |
11873
38dc46b55d7e
Moved font settings from TreeNode to TreeBrowser.
berghofe
parents:
6541
diff
changeset
|
86 |
g.setFont(font); |
6541 | 87 |
Dimension d = t.draw(g,5,5,selected); |
88 |
if (parent_needs_layout) { |
|
89 |
size = new Dimension(5+d.width, 5+d.height); |
|
90 |
parent_needs_layout = false; |
|
91 |
getParent().doLayout(); |
|
92 |
} |
|
3599 | 93 |
} |
94 |
} |
|
95 |