|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.web.debug;
import java.io.*;
import javax.swing.JEditorPane;
import javax.swing.text.*;
import org.openide.ErrorManager;
import org.openide.cookies.EditorCookie;
import org.openide.nodes.Node;
import org.openide.text.*;
import org.openide.util.RequestProcessor;
import org.openide.windows.TopComponent;
import org.netbeans.modules.web.debug.util.Utils;
import org.netbeans.api.debugger.*;
import org.netbeans.api.debugger.jpda.*;
import org.openide.loaders.DataObject;
public class JspToolTipAnnotation extends Annotation implements Runnable {
private String toolTipText = null;
private StyledDocument doc;
public String getShortDescription() {
Utils.getEM().log("JspTooltip: getShortDescription");
toolTipText = null;
DebuggerEngine currentEngine = DebuggerManager.getDebuggerManager ().
getCurrentEngine ();
if (currentEngine == null) return null;
JPDADebugger d = (JPDADebugger) currentEngine.lookupFirst (null, JPDADebugger.class);
if (d == null) return null;
Line.Part lp = (Line.Part) getAttachedAnnotatable();
Line line = lp.getLine ();
DataObject dob = DataEditorSupport.findDataObject(line);
EditorCookie ec = (EditorCookie) dob.getCookie(EditorCookie.class);
if (ec != null) { // Only for editable dataobjects
try {
doc = ec.openDocument ();
RequestProcessor.getDefault().post(this);
doc.render (this);
} catch (IOException e) {
}
}
return toolTipText;
}
public void run () {
Utils.getEM().log("JspTooltip: run");
//1) get tooltip text
Line.Part lp = (Line.Part)getAttachedAnnotatable();
JEditorPane ep = Utils.getCurrentEditor();
String textForTooltip = "";
if ((lp == null) || (ep == null)) {
return;
}
//first try EL
String text = Utils.getELIdentifier(doc, ep,NbDocument.findLineOffset(doc, lp.getLine().getLineNumber()) + lp.getColumn());
Utils.getEM().log("JspTooltip: ELIdentifier = " + text);
boolean isScriptlet = Utils.isScriptlet(
doc, ep, NbDocument.findLineOffset(doc, lp.getLine().getLineNumber()) + lp.getColumn()
);
Utils.getEM().log("isScriptlet: " + isScriptlet);
//if not, try Java
if ((text == null) && (isScriptlet)) {
text = Utils.getJavaIdentifier(
doc, ep, NbDocument.findLineOffset(doc, lp.getLine().getLineNumber()) + lp.getColumn()
);
textForTooltip = text;
Utils.getEM().log("JspTooltip: javaIdentifier = " + text);
if (text == null) {
return;
}
} else {
if (text == null) {
return;
}
textForTooltip = text;
String textEscaped = org.openide.util.Utilities.replaceString(text, "\"", "\\\"");
text = "pageContext.getExpressionEvaluator().evaluate(\"" + textEscaped +
"\", java.lang.String.class, (javax.servlet.jsp.PageContext)pageContext, null)";
}
Utils.getEM().log("JspTooltip: fullWatch = " + text);
//3) obtain text representation of value of watch
String old = toolTipText;
toolTipText = null;
DebuggerEngine currentEngine = DebuggerManager.getDebuggerManager().getCurrentEngine();
if (currentEngine == null) return;
JPDADebugger d = (JPDADebugger) currentEngine.lookupFirst (null, JPDADebugger.class);
if (d == null) return;
try {
Variable v = d.evaluate(text);
if (v instanceof ObjectVariable) {
toolTipText = textForTooltip + " = (" + v.getType() + ")" + ((ObjectVariable)v).getToStringValue();
} else {
toolTipText = textForTooltip + " = (" + v.getType() + ")" + v.getValue();
}
} catch (InvalidExpressionException e) {
toolTipText = text + " = >" + e.getMessage() + "<";
}
Utils.getEM().log("JspTooltip: " + toolTipText);
firePropertyChange (PROP_SHORT_DESCRIPTION, old, toolTipText);
}
public String getAnnotationType () {
return null;
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.