在内部编辑器的情况下,可实现工作台窗口与编辑器部件之间的紧密集成。工作台菜单和工具栏预装入了许多公共操作(例如,剪切、复制和粘贴)。活动的部件(视图或编辑器)应会提供这些操作的实现。内部编辑器还可定义出现在工作台窗口中的新操作。仅当编辑器活动时,这些操作才会出现。
工作台与外部编辑器之间的集成则更为松散一些。在这种情况下,工作台可以启动编辑器但自此以后,除了通过文件系统之外它再没有任何办法确定外部编辑器的状态或与它合作。
<!ELEMENT extension (editor*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editor (contentTypeBinding*)>
<!ATTLIST editor
id CDATA #REQUIRED
name CDATA #REQUIRED
icon CDATA #IMPLIED
extensions CDATA #IMPLIED
class CDATA #IMPLIED
command CDATA #IMPLIED
launcher CDATA #IMPLIED
contributorClass CDATA #IMPLIED
default (true | false) "false"
filenames CDATA #IMPLIED
symbolicFontName CDATA #IMPLIED
matchingStrategy CDATA #IMPLIED>
请注意,目前只有文件名和扩展名关联才使用此属性。内容类型绑定不使用此属性。基于内容类型的解析是按前到前服务原则执行的,并且不是显式指定的。
<!ELEMENT contentTypeBinding EMPTY>
<!ATTLIST contentTypeBinding
contentTypeId CDATA #REQUIRED>
说明包含的编辑器能理解给定的内容类型,并适合用来编辑该类型的文件。
<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"
symbolicFontName=
"org.eclipse.jface.textfont"
default=
"false"
>
</editor>
</extension>
如果使用的是 launcher 属性,则也会将编辑器视作外部程序。在这种情况下,指定的类必须实现 org.eclipse.ui.IEditorLauncher。将实例化启动程序,然后将调用 open(IFile file) 来启动编辑器。
如果使用了 class 属性,则工作台将假定它是内部编辑器,而指定的类必须实现 org.eclipse.ui.IEditorPart。最常见的做法是在定义新的编辑器类型时执行 subclass org.eclipse.ui.EditorPart。还需要定义 contributorClass 属性。指定的类必须实现 org.eclipse.ui.IEditorActionBarContributor,并且用来将新的操作添加至反映编辑器类型的功能的工作台菜单和工具栏。
在工作台中,可能具有多个特定类型的已打开的编辑器。例如,可能具有一个或多个已打开的 Java 编辑器。为了避免创建重复的操作和操作映像,编辑器概念已分成两种概念。IEditorActionBarContributor 负责创建操作。该编辑器负责操作实现。而且,添加程序供每个打开的编辑器共享。这种设计的结果是,一个或多个已打开的编辑器只具有一组操作。
添加程序将会把新的操作添加至反映编辑器类型的工作台菜单和工具栏。这些操作是共享的,且当调用它们时,它们对活动编辑器起作用。通过调用 IEditorActionBarContributor.setActiveEditor,活动编辑器被传递至添加程序。工作台窗口中的操作和主组的标识是在 org.eclipse.ui.IWorkbenchActionConstants 中定义的。这些应该用作添加新操作的参考点。顶级菜单是通过使用 path 属性的下列值来创建的:
Copyright (c) 2002, 2005 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html