Eclipse插件开发(二) —— 编辑器相关

继上一篇视图界面搭好以后,开始着手视图界面控件点击实现跳转到对应编辑器指定行数的需求。刚开始看到这个需求的时候觉得很简单,应该直接调用封装好的gotoLine或者LinkToLine类似的方法就好,而我只要找到对应的这个方法就可以完美解决了。但是在实践中并不是很完美,作为新手,目前我对org.eclipse.ui中的扩展点也就上篇的几个比较熟悉,所以只能老老实实去Eclipse官网中的API文档寻找合适的扩展点。现总结如下,希望可以帮助到同在路上的伙伴,也希望有机会能一起学习讨论。

这边先介绍一下,如果想跳转到对应的行数,这边其实就是使光标移动到对应位置(光标是一个比较合适的关键字)。同时想实现该功能,首先需要着重先了解一下IEditorPart、ITextEditor、IDocument这三个点(比较推荐看Eclipse中的API查看)。

在了解以上三个点时,ITextEditor提供了一个selectAndReveal的方法,官网API具体解释如图所示:

更多相关方法参数可以参考链接:https://help.eclipse.org/2019-12/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIEditorPart.html

这边贴一下相关代码:

IEditorReference[] editorReferences = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences(); 
if (editorReferences.length > 0) {
	for(int i = 0;i<editorReferences.length;i++) {
		IEditorPart tp = editorReferences[i].getEditor(true);  
		ITextEditor edt = (ITextEditor) tp.getAdapter(ITextEditor.class);
		IDocumentProvider provider=edt.getDocumentProvider(); 
		IDocument document=provider.getDocument(tp.getEditorInput()); 
		if(i==1) {  
			//选择并显示指定的范围
			//edt.selectAndReveal(10, 30);//10表示从偏移量10开始选择,长度为30
            //改变光标位置到31行(无论当前编辑器可见不可见都有效)  
			edt.selectAndReveal(document.getLineOffset(30),0); 
		}
    }
}

扩展几个个人觉得使用频率较高的点:

(1)获取编辑器的源码

String sourceStr = document.get().toString();

(2)替换相关代码

document.replace(int offset, int length, String replaceWord);

(3)获取当前编辑器名称

String titleStr = edt.getTitle();

(4)设置编辑器可见

目前实践了setFocus方法无效,看有些文章是使用了EditorPart的setActiveEditor(currentEditor)来将当前的编辑器设置成活动编辑器的(该方法是在IEditorPart中不存在的,API文档中也没有提及),多方实践后下面代码可以实现我想要的效果,如果有更好的方法,希望留言呀^-^

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showEditor(editorReferences[i]);
								

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值