如何强制为相同的输入打开第二个编辑器?

2024-02-06

我正在编写一个 Eclipse 插件,可以更轻松地编辑 Android 资源。当用户单击项目内的任何 XML 资源文件时,将打开一个编辑器,允许一次编辑项目中的所有资源。

我想添加在单独的默认 Android 资源编辑器中打开同一文件的功能。我知道该编辑器的 ID,但我无权访问其类。

调用 IDE.openEditor 不会执行任何操作,因为已经为该文件打开了一个编辑器,即使我指定了另一个 Android 编辑器的 ID。

如何强制 Eclipse 打开另一个编辑器来输入相同的内容?

另一方面,如果我只能访问它的 id 而不能访问它的类,是否可以在 MultiPageEditorPart 中嵌入另一个编辑器?


The IDE.openEditor方法最后调用相应的IWorkbenchPage打开编辑器的方法。

对您的情况有用的方法是org.eclipse.ui.IWorkbenchPage.openEditor(IEditorInput, String, boolean, int)

    /**
     * Opens an editor on the given input.
     * <p>
     * If this page already has an editor open that matches the given input
     * and/or editor id (as specified by the matchFlags argument), that editor
     * is brought to the front; otherwise, a new editor is opened. Two editor
     * inputs are considered the same if they equal. See
     * <code>Object.equals(Object)<code>
     * and <code>IEditorInput</code>. If <code>activate == true</code> the editor
     * will be activated.  
     * </p><p>
     * The editor type is determined by mapping <code>editorId</code> to an editor
     * extension registered with the workbench.  An editor id is passed rather than
     * an editor object to prevent the accidental creation of more than one editor
     * for the same input. It also guarantees a consistent lifecycle for editors,
     * regardless of whether they are created by the user or restored from saved 
     * data.
     * </p>
     * 
     * @param input the editor input
     * @param editorId the id of the editor extension to use
     * @param activate if <code>true</code> the editor will be activated
     * @param matchFlags a bit mask consisting of zero or more of the MATCH_* constants OR-ed together
     * @return an open editor, or <code>null</code> if an external editor was opened
     * @exception PartInitException if the editor could not be created or initialized
     * 
     * @see #MATCH_NONE
     * @see #MATCH_INPUT
     * @see #MATCH_ID
     * @since 3.2
     */
    public IEditorPart openEditor(final IEditorInput input,
        final String editorId, final boolean activate, final int matchFlags)
        throws PartInitException;

你需要调用它并传递它MATCH_ID | MATCH_INPUT这样,在尝试确定是否应重用现有编辑器或应创建新编辑器时,会考虑编辑器 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制为相同的输入打开第二个编辑器? 的相关文章

随机推荐

  • 输入材料芯片——初始形式数组

    我想用输入数据初始化我的垫芯片输入 但是当我有两个芯片时 它仅形成一种形式 组件 ts Component selector app pps dialog templateUrl pps dialog component html expo
  • 将 pandas 日期时间月份转换为字符串表示形式

    我想要一个带有时间戳列的 pandas DataFrame 并且想要创建一个仅包含月份的列 我想要月份列包含月份的字符串表示形式 而不是整数 我做了这样的事情 df Dates pd to datetime df Dates df Mont
  • pythonlogging.FileHandler默认使用块缓冲吗?

    The logging处理程序类有一个flush 方法 并看着code https github com python cpython blob 2 7 Lib logging init py logging FileHandler调用时不
  • bash: /bin/tar: 使用 tar 压缩多个文件时参数列表太长

    我正在尝试使用以下命令压缩存档中的文件 tar czvf compress file tar gz cat file list txt 我有一个错误 bash bin tar Argument list too long 文件编号太长 如何
  • 在Android中生成并打印特定尺寸的PDF

    我正在使用 Android 应用程序 我想生成并打印 PDF 但我遇到了一些麻烦 我需要生成PDF与 80 毫米width 以及height可能会有所不同 我正在尝试这个 public class PDFGenerator implemen
  • 为位于系统托盘中的 Java 程序创建键盘挂钩

    基本上我有一个在系统托盘中运行的java程序 并且想添加它 因此如果用户按下CTRL SHIFT 1 它会选择位于托盘中的java程序的右键单击选项之一 我想我正在寻找的是有关执行此操作的教程 或者最简单的方法是什么 我以前从未做过这样的事
  • 删除不在远程的分支

    gt git branch a master test remotes origin master remotes origin test 当有人删除remotes origin test 我的电脑上仍然可以看到它 我知道我可以做到这一点并
  • Java 正则表达式 (java.util.regex)。搜索美元符号

    我有一个搜索字符串 当它包含美元符号时 我想捕获此后的所有字符 但不包括点或后续的美元符号 后者将构成后续匹配 因此 对于这些搜索字符串中的任何一个 bla V N XYZ bla bla V N XYZ 我想返回 V N XYZ 如果搜索
  • 让 CMake include_directories SYSTEM dirs 前缀带有等于字符 (=)

    有没有办法让CMakeinclude directories使用 equals 包含系统目录前缀 特点 这样我就可以让 gcc 为关联的目录添加前缀 isysroot交叉编译的标志 当我尝试使用 equals 前缀 假定相对路径和当前源路径
  • 从 C# 应用程序打开 txt 文件

    以下代码假设从我的 C 应用程序打开 CMD 并打开文件 text txt 我尝试将文件路径设置为环境变量 但是当记事本打开时 它会查找 file txt 而不是 text txt 知道为什么吗 System Diagnostics Pro
  • 命名空间“React”没有导出成员“FC”。在“@types/reactour”中

    我正在一个反应 应用程序中工作 我有我的包 json文件如下 dependencies storybook addon backgrounds 3 4 8 storybook react 4 0 0 alpha 4 types d3 5 0
  • Jekyll自动重新加载

    第一次使用 Jekyll 看起来像是自动重新加载功能 运行jekyll auto server 仅由 Markdown 文件更新触发 这是正常行为吗 有什么方法可以更改其他类型的文件 例如 css 我使用的是 scss 或 html 文件
  • IIS 作为反向代理 - 压缩来自后端服务器的重写响应

    我正在实现一个反向代理 用于将请求路由到后端服务器 从功能上讲 一切正常 但我担心来自后端服务器的所有响应都会在未经压缩的情况下传输到客户端 Web 浏览器 设置如下 内部域上的后端服务器 不可公开访问 在以下位置托管 Web 应用程序ht
  • 使用 Javascript 在 Photoshop 中保存文件而不提示?

    我正在使用一个简单的脚本来编辑现有图像 无论我做什么 总会出现保存提示 我希望这是 100 自动化的 save 给我一个 saveAs 提示 将其保存为副本 close SaveOptions SAVECHANGES 只是给我一个通用的 您
  • NullInjectorError:没有 MatDialog 的提供者 - 尝试为 MatDialog 创建包装服务

    我是编码新手 也是 Angular 新手 所以我想我会寻求一些帮助 这是我的第一个问题 所以请耐心等待 我想为 Angular Material Dialog Service 创建一个包装服务 我只是想自学 这不是用于生产应用程序 所以我在
  • 你能改变颤动文本主题吗?

    如果主题在 main dart 中设置为 return MaterialApp title MY APP theme ThemeData primarySwatch Colors blue fontFamily Cabin textThem
  • 使用 SqlCommand 执行非查询,您可以获取通常发布到“消息”的文本吗?

    当使用 SqlCommand 执行非查询 例如数据库恢复 时 如果使用 Management Studio 是否可以以编程方式获取通常发布到 消息 选项卡的文本 如果是的话怎么办 是的 SqlCommand 对象上有一个名为 SqlInfo
  • AWS Lambda 性能问题

    我使用与 aws lambda java 集成的 aws api gateway 但我发现这种方法存在一些严重问题 删除服务器并让您的应用程序开箱即用的概念非常好 但这是我面临的问题 我的 lambda 正在做两件简单的事情 验证从客户端接
  • 日期 java.lang.IllegalArgumentException

    出现错误 java lang IllegalArgumentException 位于 java util Date parse 未知来源 位于 java util Date 未知来源 这是我的java代码 import java util
  • 如何强制为相同的输入打开第二个编辑器?

    我正在编写一个 Eclipse 插件 可以更轻松地编辑 Android 资源 当用户单击项目内的任何 XML 资源文件时 将打开一个编辑器 允许一次编辑项目中的所有资源 我想添加在单独的默认 Android 资源编辑器中打开同一文件的功能