栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

蚀行号状态行贡献项目如何实施?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蚀行号状态行贡献项目如何实施?

我一直在研究它,它涉及很多,而且我不确定我是否有完整的图片,但是万一这对某人有帮助…

将编辑器与对StatusLine(以及菜单和工具栏)的贡献绑定在一起的声明方式是通过IEditorActionBarContributor类。在plugin.xml中为编辑器类型声明该类-
通常为每个编辑器类型创建一个实例(相同编辑器类型的多个运行实例将共享一个

IEditorActionBarContributor
实例,并
doSetActiveEditor()
在激活时调用其方法),并将其处置当该类型的最后一个运行的编辑器关闭时。

让我们以一个示例为例,Eclipse中的默认文本编辑器如何更新状态行中的“插入/覆盖”信息(来自Eclipse 3.7)

默认的文本编辑器在

org.eclipse.ui.editors
的中被声明为
plugin.xml
(已剪裁一些行)为:

 <extension point="org.eclipse.ui.editors">      <editor  name="%Editors.DefaultTextEditor"  contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor" id="org.eclipse.ui.DefaultTextEditor">      </editor> </extension>

TextEditorActionContributor
是关键。我们感兴趣的是在父类BasicTextEditorActionContributor中实现的;它(静态)定义了4个状态字段(
STATUS_FIELD_DEFS
),并在内部将
fStatusFields
每个statusField(例如规范)的固定映射()存储到StatusLineContributionItem对象。当从Eclipse
UI调用时,它在方法的状态行(基本上是标题)中注册4个字段,
contributeToStatusLine(IStatusLineManagerstatusLineManager)
并且每次激活编辑器时,它将传递给
doSetActiveEditor(IEditorPartpart)
-完整的
StatusLineContributionItem
s
集,并准备了相应的actionHandlers。编辑者理解所有这一切,因为它实现了
ITextEditorExtension.setStatusField()


对于

AbstractTextEditor
,它具有(内部类)类型的私有字段,该私有字段
ToggleOverwriteModeAction
调用

toggleOverwriteMode()->handleInsertModeChanged()->updateStatusField("InputMode")

编辑器将查看是否

statusField
具有该类别的 存储,如果是,它将进行调用
IStatusField.setText("Insert" /"Overwrite")
,这将导致状态行消息的更新。

这是一个示例,但我想它提供了一个大致的思路:的实例

EditorActionContributor
,绑定到编辑器类型,保留要更新的StatusLineContributionItem的列表,并且当相应状态更改时,编辑器必须写入此列表的对象。
。这样,编辑器便与状态行分离(它不知道是否/如何在UI中显示状态更改)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号