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