Eclipse插件开发编辑器篇

  • 介绍
看着现有的编辑器有缺陷?想扩展不知道该从哪里下手?请看下文。
  • 添加扩展点
[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/

转载于:https://my.oschina.net/surenpi/blog/481950

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值