001: package visualdebugger.draw2d;
002:
003: import org.eclipse.draw2d.*;
004: import org.eclipse.jdt.core.ICompilationUnit;
005: import org.eclipse.jdt.core.dom.ASTNode;
006: import org.eclipse.swt.graphics.Color;
007:
008: import de.uka.ilkd.key.logic.IteratorOfTerm;
009: import de.uka.ilkd.key.logic.ListOfTerm;
010: import de.uka.ilkd.key.logic.SLListOfTerm;
011: import de.uka.ilkd.key.logic.Term;
012: import de.uka.ilkd.key.logic.op.IteratorOfProgramVariable;
013: import de.uka.ilkd.key.logic.op.ProgramVariable;
014: import de.uka.ilkd.key.visualdebugger.VisualDebugger;
015: import de.uka.ilkd.key.visualdebugger.executiontree.ETMethodInvocationNode;
016: import de.uka.ilkd.key.visualdebugger.executiontree.ETNode;
017:
018: public class MethodInvocationFigure extends Figure {
019:
020: private boolean selected;
021:
022: static final Color gradient1 = new Color(null, 132, 132, 240);
023:
024: static final Color gradient2 = new Color(null, 76, 84, 216);
025:
026: static final Color gradient12 = new Color(null, 202, 202, 210);
027:
028: static final Color gradient22 = new Color(null, 146, 154, 186);
029:
030: static final Color corner1 = new Color(null, 200, 208, 223);
031:
032: static final Color corner2 = new Color(null, 160, 172, 200);
033:
034: static final Color blue = new Color(null, 152, 168, 200);
035:
036: static final Color shadow = new Color(null, 202, 202, 202);
037:
038: static final int CORNER_SIZE = 00;
039:
040: final ETMethodInvocationNode miNode;
041:
042: ICompilationUnit unit;
043:
044: static final Border BORDER = new LineBorder(ColorConstants.black, 1);
045:
046: private Label label = new Label();
047:
048: public MethodInvocationFigure(ETMethodInvocationNode etNode) {
049: super ();
050: setBorder(BORDER);
051: setLayoutManager(new StackLayout());
052: // label.setText("hallo");
053: add(label);
054: String st = "";
055: if (etNode.getMethodReference() != null)
056: st = VisualDebugger.getVisualDebugger().prettyPrint(
057: etNode.getMethodReference())
058: + ".";
059:
060: //etNode.getMethod().get
061: st += etNode.getMethod().getProgramElementName().toString()
062: + "(";
063: ListOfTerm param = etNode.getValues();
064:
065: for (IteratorOfTerm it = param.iterator(); it.hasNext();) {
066: st += VisualDebugger.getVisualDebugger().prettyPrint(
067: it.next());
068: if (it.hasNext())
069: st += ", ";
070:
071: }
072:
073: st += ")";
074:
075: label.setText(st);
076: miNode = etNode;
077: String toolTip = "";
078:
079: toolTip += VisualDebugger.getMethodString(etNode.getMethod()
080: .getMethodDeclaration())
081: + "\n";
082: toolTip += "@"
083: + etNode.getMethod().getContainerType().getSort()
084: + "\n";
085: if (etNode.getValues().size() > 0) {
086: toolTip += "Parameters: \n";
087: IteratorOfTerm termIt = etNode.getValues().iterator();
088: for (IteratorOfProgramVariable it = etNode.getParameters()
089: .iterator(); it.hasNext();) {
090: ProgramVariable p = it.next();
091: Term val = termIt.next();
092: toolTip += p.toString()
093: + " := "
094: + VisualDebugger.getVisualDebugger()
095: .prettyPrint(
096: SLListOfTerm.EMPTY_LIST
097: .append(val)) + "\n";
098: }
099: }
100: this .setToolTip(new Label(toolTip));
101: }
102:
103: /**
104: * @see org.eclipse.draw2d.Figure#paintFigure(org.eclipse.draw2d.Graphics)
105: */
106: protected void paintFigure(Graphics g) {
107: super .paintFigure(g);
108: if (selected) {
109: g.setForegroundColor(ColorConstants.menuBackgroundSelected);
110: g.setBackgroundColor(ColorConstants.titleGradient);
111: } else {
112: g.setForegroundColor(ColorConstants.white);
113: g.setBackgroundColor(ColorConstants.white);
114:
115: // g.setForegroundColor(gradient1);
116: // g.setBackgroundColor(gradient2);
117:
118: }
119: g.fillGradient(getBounds().getResized(-1, -1), true);
120:
121: }
122:
123: public void setSelected(boolean value) {
124: this .selected = value;
125: if (selected)
126: label.setForegroundColor(ColorConstants.white);
127: else
128: label.setForegroundColor(null);
129: repaint();
130: }
131:
132: /**
133: * @see java.lang.Object#toString()
134: */
135: public String toString() {
136: return ((Label) getChildren().get(0)).getText();
137: }
138:
139: public void validate() {
140: repaint();
141: super .validate();
142: }
143:
144: public ETNode getETNode() {
145: return miNode;
146: }
147:
148: public ICompilationUnit getUnit() {
149: //unit.get
150: return unit;
151: }
152:
153: public ASTNode getASTNode() {
154: return null;
155: }
156:
157: }
|