如何在console中加入文件连接

本文介绍如何在Eclipse的Console视图中实现文件链接功能,包括通过扩展点添加自定义控制台、设置内容及注册文件链接。并进一步探讨了JDT内部实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用eclipse的人都知道,在console中打印的异常stack信息可以连接到源文件,最近做的工具中需要相同的功能,于是调研了一下,原理很简单,看下面代码:

MessageConsole console = new MessageConsole("My Console", null);  
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();  
IConsole[] existing = manager.getConsoles();  
boolean exists = false;  
for (int i = 0; i < existing.length; i++) {  
    if (console == existing[i])  
    exists = true;  
}  
if (!exists) {  
    manager.addConsoles(new IConsole[] { console });  
}  
manager.showConsoleView(console);  
MessageConsoleStream stream = console.newMessageStream();  
System.setOut(new PrintStream(stream));  
              
//下面的代码只是说明如何向console中加入连接,没有实际意义  
IDocument document = console.getDocument();  
document.set("Test file link");  
IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject("t");  
IFile file = p.getFile("test.js");  
FileLink fl = new FileLink(file, "kaitone.wisp.kul.editor.kulJs", -1, -1, 5);  
try {  
    console.addHyperlink(fl, 0, 4);  
} catch (BadLocationException e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}  

上面代码所作的就是添加一个自己的console,将console的内容设置成“Test file link”,并且对"test"增加文件连接,连接到project t下面的test.js的第5行。最关键的就创建一个FileLink对象,并且通过console.addHyperlink(...)方法注册这个文件连接。这只是个静态的演示,其实实际情况要复杂的多,大多都是根据上下文情况动态的生成文件连接信息输出到console,就像java 打印到console的exception stack一样。还没有具体看jdt是怎么实现的,继续调研......



之前写过一篇文章大概讲了向console中加入文件链接的原理,后台调研了一下jdt的实现,发现,通过eclipse提供的扩展点可以很方便的实现。主要实现的扩展点有:

1. org.eclipse.ui.console.consolePatternMatchListeners

该扩展点需要实现org.eclipse.ui.console.IPatternMatchListenerDelegate接口,主要功能是通过正则表达式匹配console中的每一行,对匹配的行作出操作(比如增加文件链接)

2. org.eclipse.core.variables.dynamicVariables

这个扩展点需要实现org.eclipse.core.variables.IDynamicVariableResolver接口,作用就是定义一个dynamic variable,这里定义一个正则表达式,匹配console中的内容。

 

具体实现可参考org.eclipse.jdt.debug.ui插件中关于java console tracker的定义,以及JavaConsoleTracker和JavaLikeExtensionsResolver两个类的源码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值