这篇文章主要是讲述如何使用编辑器打开文件,跟我们平时用鼠标点击打开文件时一个效果,只不过现在是使用代码自动实现,包括打开工作区间的文件和工作区间外部的文件,在网上搜一下你会发现很多有关编辑器的文章都是自己写了一个编辑器,然后如何使用编辑器打开文件,很少说给定文件的路径使用对应编辑器打开,经过我两天的倒腾最后还给解决了
一:打开工作区间内的文件
对于打开工作工区的文件可以分为两种情况:一种是用jdt插件的java源码编辑器打开java文件,另外一种是让eclipse自动选择合适的编辑器,后面的貌似可以包含前面的,不过我弄得时候是先就像只打开java文件,所以使用过了jdt的JavaUI,下面就分别说说:
使用java编辑器打开指定的java文件:
我先把我的代码贴上,然后稍微解释下:
/**
* 调用java源码编辑器打开指定的java文件
* @param projectname 项目名称
* @param filepath 需要打开的java文件的包路径
* @param number 需要光标定位的位置
*/
public static void openJFile(String projectname, String filepath,
final int number){
try
{
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IJavaModel jModel = JavaCore.create(root);
IJavaProject jProject = jModel.getJavaProject(projectname);
if(!jProject.exists()){
throw new RuntimeException(projectname + "项目不存在");
}
if(!jProject.isOpen()){
throw new RuntimeException(projectname+"项目没有打开");
}
final IJavaElement jElement = jProject.findElement(new Path(filepath));
Display.getDefault().syncExec(new Runnable(){
@Override
public void run() {
try {
IEditorPart jEditorPart = JavaUI.openInEditor(jElement);
ITextEditor editor= (ITextEditor)jEditorPart;
if(number == 0){
IDocumentProvider provider= editor.getDocumentProvider();
IDocument document= provider.getDocument(editor.getEditorInput());
editor.selectAndReveal(document.getLength()-1 , 0);
}else{
editor.selectAndReveal(number , 0);
}
} catch (PartInitException e) {
throw new RuntimeException(e);
} catch (JavaModelException e) {
throw new RuntimeException(e);
}
}
});
}
catch(Exception e)
{
throw new RuntimeException(e);
}
}
这是打开文件的方法,方法参数说明上面已经有注释了,文件路径这里是写相对路径,至于最后那个参数是打开文件后你希望光标定位到什么位置,
首先是获得 IWorkspaceRoot根资源,然后获得 根java元素IJavaModel,它是所有具有 Java 性质的项目的父类,有了它我们就可以很方便的操作java元素了,接着我们就获得java项目了IJavaProject,这里要求项目是存在切处于打开状态的,否则抛出异常,获得了IJavaProject之后是获得我们需要打开的文件对象,这里使用的是IJavaElement,代表一个java元素,最后我们是用jdt工具类JavaUI的openInEditor方法打开就可以了,返回一个编辑器实例IEditorPart,然后就是确定光标的位置了。关于最后光标位置,完全可以不用设置,这里这不过是因为我需求有这个所以进行了,当我们调用了JavaUI的openInEditor方法的时候文件已经打开了。