Eclipse插件开发编辑器篇

时间:2022-05-24 06:13:13
  • 介绍

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

  • 添加扩展点

[codesyntax lang="xml"]

<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 lang="java"]

/**
* @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 lang="java"]

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/

查看原文:http://surenpi.com/2015/07/16/eclipse%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91%e7%bc%96%e8%be%91%e5%99%a8%e7%af%87/