大佬教程收集整理的这篇文章主要介绍了蚀行号状态行贡献项目如何实施?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在研究它,它涉及很多,而且我不确定我是否有完整的图片,但是万一这对某人有帮助…
将编辑器与对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"
class="org.eclipse.ui.editors.text.TextEditor"
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(IStatuslineManager
statuslineManager)
并且每次激活编辑器时,它将传递给doSetActiveEditor(IEditorPart
part)
-完整的StatuslineContributionItem
s
集,并准备了相应的actionHandlers。编辑者理解所有这一切,因为它实现了ITextEditorExtension.setStatusFIEld()
。
对于AbstractTextEditor
,它具有(内部类)类型的私有字段,该私有字段ToggleOverwriteModeAction
调用
toggleOverwriteMode()->handleInsertModeChanged()->updateStatusFIEld("inputMode")
编辑器将查看是否statusFIEld
具有该类别的 存储,如果是,它将进行调用IStatusFIEld.setText("Insert" /
"Overwrite")
,这将导致状态行消息的更新。
这是一个示例,但我想它提供了一个大致的思路:的实例EditorActionContributor
,绑定到编辑器类型,保留要更新的StatuslineContributionItem的列表,并且当相应状态更改时,编辑器必须写入此列表的对象。
。这样,编辑器便与状态行分离(它不知道是否/如何在UI中显示状态更改)。
我需要更新状态行编辑器特定的信息。我已经有自己的实现,但是我想看看蚀贡献项目是如何实现的,它显示了状态行中行号/列位置的实现。谁能指出我在哪里可以找到源代码?
预先感谢AlexG。
以上是大佬教程为你收集整理的蚀行号状态行贡献项目如何实施?全部内容,希望文章能够帮你解决蚀行号状态行贡献项目如何实施?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。