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

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;}}

在这里插入图片描述

http://www.xdnf.cn/news/9486.html

相关文章:

  • C语言循环结构实战:while和for到底用哪个?
  • 时序数据库IoTDB如何快速高效地存储时序数据
  • 芯科科技推出首批第三代无线开发平台SoC,高度集成的解决方案推动下一波物联网实现突破
  • 国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
  • 如何在网页中嵌入UE/Unity/WebGL程序,并与网页端通信
  • 第 85 场周赛:矩阵重叠、推多米诺、新 21 点、相似字符串组
  • CMake指令:source_group()
  • 【数据分析】特征工程-特征选择
  • Git 使用规范
  • 关于git的使用流程
  • 2025年中国电商618年中大促策略分析:存量博弈与生态重构
  • 深度 |推动公共数据按需有序安全流动
  • mock库知识笔记(持续更新)
  • 如何解决网站服务器的异常问题?
  • 班翎流程平台 | 流程变量赋值事件,简化流程配置,灵活构建流程
  • 8.8 Primary ODSA service without ODSA Portal
  • LLaDa——基于 Diffusion 的大语言模型 打平 LLama 3
  • DM达梦数据库开启SQL日志记录功能
  • java导入excel
  • 2025超全面Redis笔记!!!
  • Redis缓存设计与性能优化
  • 题目 3316: 蓝桥杯2025年第十六届省赛真题-数组翻转
  • mac 下安装Rust Toolchain(Nightly)
  • Redis--缓存穿透与缓存雪崩详解及解决方案
  • Cloudera Manager 学习笔记
  • 程序的 “内存舞台”:深入解析虚拟地址空间与内存管理
  • 3D Tiles高级样式设置与条件渲染(4)
  • 8Manage PM、Trello与飞书对比评测:哪款项目管理软件更适合企业使用?
  • 《仿盒马》app开发技术分享-- 确认订单页(数据展示)(端云一体)
  • 程序开发的 “瑞士军刀”:深入解析库文件的原理与实践