当前位置: 首页 > news >正文

Eclipse 插件开发 5.2 编辑器 获取当前编辑器

Eclipse 插件开发 5.2 编辑器 获取当前编辑器

  • 1 获取活跃编辑器
  • 2 获取全部编辑器

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Click1
Bundle-SymbolicName: com.xu.click1;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: com.xu.click1.Activator
Bundle-Vendor: XU
Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.ui.editors,org.eclipse.ui.workbench.texteditor,org.eclipse.core.resources,org.eclipse.text
Bundle-RequiredExecutionEnvironment: JavaSE-24
Automatic-Module-Name: com.xu.click1
Bundle-ActivationPolicy: lazy

1 获取活跃编辑器

在 Eclipse RCP 插件开发中,获取编辑区(Editor)及其内容、判断当前活跃的编辑器,需要使用 Eclipse Platform 提供的 API,特别是 IWorkbench, IWorkbenchWindow, IWorkbenchPage, IEditorPart 等接口。

package com.xu.click1.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;public class SampleHandler extends AbstractHandler {@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();IEditorPart part = page.getActiveEditor();if (part instanceof ITextEditor) {ITextEditor editor = (ITextEditor) part;IDocumentProvider provider = editor.getDocumentProvider();IDocument document = provider.getDocument(editor.getEditorInput());System.out.println(String.format("%s:%s", editor.getTitle(), document.get()));}return null;}}

2 获取全部编辑器

package com.xu.click1.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;public class SampleHandler extends AbstractHandler {@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();for (IEditorReference ref : page.getEditorReferences()) {IEditorPart editor = ref.getEditor(false);if (null == editor) {System.out.println(String.format("%s未被编辑", ref.getTitle()));continue;}System.out.println(String.format("%s正在编辑:%s", ref.getTitle(), getEditContent(editor)));}return null;}private String getEditContent(IEditorPart part) {if (part instanceof ITextEditor) {ITextEditor editor = (ITextEditor) part;IDocumentProvider provider = editor.getDocumentProvider();IDocument document = provider.getDocument(editor.getEditorInput());return document.get();}return null;}}

在这里插入图片描述

相关文章:

  • 1.2 掌握CSS样式表
  • style scoped作用域
  • MySQL8.4主从复制
  • Android 云手机横屏模式下真机键盘遮挡输入框问题处理
  • pycharm生成图片
  • 力扣-找到字符串中所有字母异位符
  • 力扣面试150题--二叉树的最近公共祖先
  • JWT安全:假密钥.【签名随便写实现越权绕过.】
  • 动态规划-LCR 091.粉刷房子-力扣(LeetCode)
  • Vim文本编辑器快捷键用法以及简单介绍
  • 【前端】PWA
  • 随机游动算法解决kSAT问题
  • JWT安全:接收无签名令牌.【签名算法设置为none绕过验证】
  • 理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后
  • 文件服务端加密—minio配置https
  • .NET 9正式发布,亮点是.NET Aspire和AI
  • RabbitMQ监控:关键技术、技巧与最佳实践
  • Java从入门到精通 - 面向对象编程基础
  • 懒人云电脑方案:飞牛NAS远程唤醒 + 节点小宝一键唤醒、远程控制Windows!
  • 使用 Syncfusion 在 .NET 8 中生成 PDF/DOC/XLS/PPT
  • 网站在线客服插件代码/国际新闻最新消息2022
  • 基于html5的旅游网站开发/推广app软件
  • 网上宿迁官方网站/百度客服人工服务电话
  • txt电子书下载网站推荐/建站网站关键词优化
  • 滕州外贸网站建设/四川专业网络推广
  • 深圳网站建设公司多吗/软文经典案例