Eclipse插件开发编辑器篇

  • 介绍

看着现有的编辑器有缺陷?想扩展不知道该从哪里下手?请看下文。

  • 添加扩展点

[codesyntax]

<extension  point="org.eclipse.ui.editors"> <editor     name="Bundle Editor"     extensions="bundle"     icon="icons/bird.gif"     contributorClass="org.eclipse.ui.part.EditorActionBarContributor"     class="org.suren.littlebird.editors.BundleEditor"     id="org.suren.littlebird.editors.BundleEditor"> </editor> </extension>

[/codesyntax]

  • 编辑器实现类

[codesyntax]

/**  * @author http://surenpi.com  * @date 2015年7月16日  */ package org.suren.littlebird.editors; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.EditorPart; /**  * 查看bundle详情  *   * @author http://surenpi.com  *   * @2015年7月16日  */ public class BundleEditor extends EditorPart { @Override public void createPartControl(Composite parent) { TabFolder mainCom = new TabFolder(parent, SWT.None); TabItem metaDataItem = new TabItem(mainCom, SWT.None); metaDataItem.setText("MetaData"); TabItem headersItem = new TabItem(mainCom, SWT.None); headersItem.setText("Headers"); } /*  *   */ @Override public void doSave(IProgressMonitor arg0) { // TODO Auto-generated method stub } /*  *   */ @Override public void doSaveAs() { // TODO Auto-generated method stub } /*  *   */ @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { setSite(site); setInput(input); } /*  *   */ @Override public boolean isDirty() { // TODO Auto-generated method stub return false; } /*  *   */ @Override public boolean isSaveAsAllowed() { // TODO Auto-generated method stub return false; } /*  *   */ @Override public void setFocus() { // TODO Auto-generated method stub } }

[/codesyntax]

特别要注意init方法,如果不那么写的话,可能报错哦。

  • 通过代码打开editor

通过前面的代码我们已经可以看到,接口IEditorInput就是文件(或者其他数据源)与编辑器的数据交换通道。所以,如果要通过代码来打开一个editor的话,必须就需要这样一个参数。还是一睹为快吧:

[codesyntax]

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); try { BundleEditorInput input = new BundleEditorInput(); input.setBundleStorage(new BundleStorage(bundle)); window.getActivePage().openEditor(input, "org.suren.littlebird.editors.BundleEditor"); } catch (PartInitException ex) { ex.printStackTrace(); }

[/codesyntax]

上面的代码片段中的org.suren.littlebird.editors.BundleEditor就是你要打开的编辑器的id。

  • 参考

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-rcprich/


你可能感兴趣的:(Eclipse插件开发编辑器篇)