原文:http://www.cnblogs.com/youngerbaby/articles/380100.html
eclipse中打开一个编辑器要调用
IWorkbenchPage.openEditor(IEditorInput input, String editorId)
因此要打开一个编辑器要获得3个对象,IWorkbenchPage实例、IEditorInput实例、editorId
1. 获得IWorkbenchPage实例
1
IWorkbenchWindow dwindow
=
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
2 IWorkbenchPage wbPage = dwindow.getActivePage();
2 IWorkbenchPage wbPage = dwindow.getActivePage();
2. 获得IEditorInput实例
private
IProject getActiveProject()
{
IEditorPart editor = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (editor.getEditorInput() instanceof FileEditorInputProxy) {
FileEditorInputProxy fei = (FileEditorInputProxy) editor
.getEditorInput();
IFile f = fei.getFile();
return f.getProject();
}
return null ;
}
IEditorPart editor = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (editor.getEditorInput() instanceof FileEditorInputProxy) {
FileEditorInputProxy fei = (FileEditorInputProxy) editor
.getEditorInput();
IFile f = fei.getFile();
return f.getProject();
}
return null ;
}
private
IFile getFile(String fileName)
{
IProject prj = getActiveProject();
if (prj == null )
return null ;
try {
IResource[] members = prj.members();
for (IResource r : members) {
if (r.getName().equals(fileName)) {
return (IFile) r;
}
}
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null ;
}
IProject prj = getActiveProject();
if (prj == null )
return null ;
try {
IResource[] members = prj.members();
for (IResource r : members) {
if (r.getName().equals(fileName)) {
return (IFile) r;
}
}
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null ;
}
3. 获得打开Editor的editorId
editor plugin.xml里面定义的editorId,如果不知道的话可以用下面代码获得:
private
String getEditorID(IFile file)
{
IEditorDescriptor desc = null ;
try {
desc = IDE.getEditorDescriptor(file);
} catch (PartInitException e) {
// TODO Auto-generated catch block
}
if (desc == null )
return YourPlugin.getDefault().getWorkbench()
.getEditorRegistry().findEditor(
IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID).getId();
else
return desc.getId();
}
IEditorDescriptor desc = null ;
try {
desc = IDE.getEditorDescriptor(file);
} catch (PartInitException e) {
// TODO Auto-generated catch block
}
if (desc == null )
return YourPlugin.getDefault().getWorkbench()
.getEditorRegistry().findEditor(
IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID).getId();
else
return desc.getId();
}
三个对象实例都有了,就可以调用上面第一行代码打开编辑器了!
IWorkbenchPage.openEditor( new FileEditorInput(IFile), editorId)