描述:此扩展点用来将新编辑器添加到工作台中。编辑器是工作台页面内的可视组件。它通常用来编辑或者浏览文档或输入对象。要打开编辑器,用户通常会调用 IFile 上的“打开”。执行此操作时,查询工作台注册表以确定文件类型的适当编辑器,然后创建该编辑器类型的新实例。实际结果取决于编辑器的类型。工作台提供了对创建内部编辑器(它们是紧密地集成到工作台中的)和创建外部编辑器(它们是在独立的框架窗口中启动的)的支持。在这两种极端情况之间还有各种级别的集成。
在内部编辑器的情况下,可实现工作台窗口与编辑器部件之间的紧密集成。工作台菜单和工具栏预装入了许多公共操作(如剪切、复制和粘贴)。活动的部件、视图或编辑器应会提供这些操作的实现。内部编辑器还可定义出现在工作台窗口中的新操作。仅当编辑器活动时,这些操作才会出现。
工作台与外部编辑器之间的集成则更为细微一些。在这种情况下, 仅在除了通过文件系统之外再没有任何办法确定外部编辑器的状态或与它合作时,工作台才可能会启动编辑器。
配置标记:
<!ELEMENT editor EMPTY>
<!ATTLIST editor
id
CDATA #REQUIRED
name
CDATA #REQUIRED
icon
CDATA #IMPLIED
class
CDATA #IMPLIED
command
CDATA #IMPLIED
launcher
CDATA #IMPLIED
contributorClass
CDATA #IMPLIED
extensions
CDATA #OPTIONAL
filenames
CDATA #OPTIONAL
default
CDATA (true|false) "false"
下面是内部编辑器扩展定义的一个示例:
<extension point="org.eclipse.ui.editors">
<editor
id="com.xyz.XMLEditor"
name="Fancy XYZ
XML editor"
icon="./icons/XMLEditor.gif"
extensions="xml"
class="com.xyz.XMLEditor"
contributorClass="com.xyz.XMLEditorContributor"
default="false">
</editor>
</extension>
API 信息:
如果使用的是 command 属性,则会将它视作将以与平台有关的方式执行的外部程序命令行。
如果使用的是 launcher 属性,则也会将编辑器视作外部程序。在这种情况下,指定的类必须实现 org.eclipse.ui.IEditorLauncher。将实例化启动板,然后将调用 open(IFile file) 来启动编辑器。
如果使用的是 class 属性,则工作台将假设它是内部编辑器且指定的类必须实现 org.eclipse.ui.IEditorPart。通常的做法是在定义新的编辑器类型时子类化 org.eclipse.ui.EditorPart 。也有必要定义 contributorClass 属性。指定的类必须实现 org.eclipse.ui.IEditorActionBarContributor,且用来将新操作添加到反映编辑器类型功能的工作台菜单和工具栏中。
在工作台内可能有某特定类型的多个打开的编辑器。例如,可能有多个打开的 Java 编辑器。要避免创建重复的操作和操作图像,将编辑器概念分为两个部分。IEditorActionBarContributor 负责创建操作。编辑器负责操作实现。而且,构建器由每个打开的编辑器所共享。此设计的结果是,一个或多个打开的编辑器只有一组操作。
构建器会将新操作添加到反映编辑器类型的工作台菜单和工具栏中。这些操作是共享的,且在调用它们时会对活动编辑器产生影响。将通过调用 IEditorActionBarContributor#setActiveEditor 来将活动编辑器传送到构建器。工作台窗口内的操作和主组的标识符是在 org.eclipse.ui.IWorkbenchActionConstants 中定义的。这些应用作添加的新操作的参考点。顶级菜单是使用 path 属性的下列值创建的:
提供的实现:工作台提供了“缺省文本编辑器”。最终用户产品可能包含作为交付内容一部分的其他编辑器。在该情况下,将使用上述语法将编辑器注册为扩展。