01: /*
02: * $Id: JGraphpadGraph.java,v 1.1.1.1 2005/08/04 11:21:58 gaudenz Exp $
03: * Copyright (c) 2001-2005, Gaudenz Alder
04: *
05: * All rights reserved.
06: *
07: * See LICENSE file for license details. If you are unable to locate
08: * this file please contact info (at) jgraph (dot) com.
09: */
10: package com.jgraph.pad.graph;
11:
12: import java.awt.event.MouseEvent;
13:
14: import org.jgraph.JGraph;
15: import org.jgraph.graph.DefaultGraphModel;
16: import org.jgraph.graph.GraphLayoutCache;
17:
18: import com.jgraph.editor.JGraphEditorResources;
19:
20: /**
21: * Graph that provides tooltips.
22: */
23: public class JGraphpadGraph extends JGraph {
24:
25: /**
26: * Constructs a new graph for the specified cache.
27: *
28: * @param cache
29: * The cache to construct the graph with.
30: */
31: public JGraphpadGraph(GraphLayoutCache cache) {
32: super (cache);
33: }
34:
35: /**
36: * Overrides <code>JComponent</code> <code>getToolTipText</code> method
37: * in order to allow the graph to return a tooltip for the topmost cell
38: * under the mouse.
39: *
40: * @param event
41: * the <code>MouseEvent</code> that initiated the
42: * <code>ToolTip</code> display
43: * @return a string containing the tooltip or <code>null</code> if
44: * <code>event</code> is null
45: */
46: public String getToolTipText(MouseEvent event) {
47: if (event != null) {
48: Object cell = getFirstCellForLocation(event.getX(), event
49: .getY());
50: if (cell != null)
51: return "<html>" + getToolTipForCell(cell) + "</html>";
52: }
53: return null;
54: }
55:
56: /**
57: * Returns a tooltip for the specified cell calling
58: * {@link JGraphpadBusinessObject#getTooltip()} on business objects and
59: * adding information about children, edges, source and target
60: *
61: * @param cell
62: * The cell to return the tooltip for.
63: * @return Returns the tooltip for the specified cell.
64: */
65: protected String getToolTipForCell(Object cell) {
66: String s = "";
67: Object userObject = getModel().getValue(cell);
68: if (userObject instanceof JGraphpadBusinessObject)
69: s += ((JGraphpadBusinessObject) userObject).getTooltip();
70: if (getModel().getChildCount(cell) > 0)
71: s += JGraphEditorResources.getString("Children") + ": "
72: + getModel().getChildCount(cell) + "<br>";
73: int n = DefaultGraphModel.getEdges(getModel(),
74: new Object[] { cell }).size();
75: if (n > 0)
76: s += JGraphEditorResources.getString("Edges") + ": " + n
77: + "<br>";
78: if (getModel().getSource(cell) != null)
79: s += JGraphEditorResources.getString("Source")
80: + ": "
81: + DefaultGraphModel.getSourceVertex(graphModel,
82: cell) + "<br>";
83: if (getModel().getSource(cell) != null)
84: s += JGraphEditorResources.getString("Target")
85: + ": "
86: + DefaultGraphModel.getTargetVertex(graphModel,
87: cell) + "<br>";
88: return s;
89: }
90:
91: }
|