如何在console中加入文件连接

使用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是怎么实现的,继续调研......

你可能感兴趣的:(eclipse)