内部编辑器和外部编辑器

标识:org.eclipse.ui.editors

描述:此扩展点用来将新编辑器添加至工作台。编辑器是工作台页面内的可视组件。它通常用来编辑或者浏览文档或输入对象。要打开编辑器,用户通常会对 IFile 调用“Open”。执行此操作时,会查询工作台注册表以确定文件类型的适当编辑器,然后创建该编辑器类型的新实例。实际结果取决于编辑器的类型。工作台提供了对创建内部编辑器(它们是紧密地集成到工作台中的)和创建外部编辑器(它们是在独立的框架窗口中启动的)的支持。在这两种极端情况之间还有各种级别的集成。

在内部编辑器的情况下,可实现工作台窗口与编辑器部件之间的紧密集成。工作台菜单和工具栏预装入了许多公共操作(如剪切、复制和粘贴)。活动的部件、视图或编辑器应会提供这些操作的实现。内部编辑器还可定义出现在工作台窗口中的新操作。仅当编辑器活动时,这些操作才会出现。

工作台与外部编辑器之间的集成则更为细微一些。在这种情况下,工作台可以启动编辑器但自此以后,除了通过文件系统之外它再没有任何办法确定外部编辑器的状态或与它合作。

配置标记:

   <!ELEMENT extension (editor*)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!ELEMENT editor EMPTY>

   <!ATTLIST editor
     id               CDATA #REQUIRED
     name             CDATA #REQUIRED
     icon             CDATA #IMPLIED
     extensions       CDATA #IMPLIED
     class            CDATA #IMPLIED
     command          CDATA #IMPLIED
     contributorClass CDATA #IMPLIED
     default          (true | false) "false"
     filenames        CDATA #IMPLIED
     launcher         CDATA #IMPLIED
     symbolicFontName CDATA #IMPLIED
   >

示例:以下是内部编辑器扩展定义的示例:

   <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> 

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 负责创建操作。编辑器负责实现操作。而且,打开的每个编辑器都共享添加程序(Contributor)。此设计的结果是,一个或多个打开的编辑器只有一组操作。

添加程序将会把新的操作添加至反映编辑器类型的工作台菜单和工具栏。这些操作是共享的,且当调用它们时,它们对活动编辑器起作用。通过调用 IEditorActionBarContributor.setActiveEditor,活动编辑器被传递至添加程序。工作台窗口中的操作和主组的标识是在 org.eclipse.ui.IWorkbenchActionConstants 中定义的。这些应该用作用于添加新操作的引用点。顶级菜单是通过使用 path 属性的下列值来创建的:

仅当相关联的编辑器处于活动状态时,添加到这些路径中的操作和菜单才会显示出来。关闭编辑器时,将会除去菜单和操作。

提供的实现:工作台提供了“缺省文本编辑器”。最终用户产品可能包含其它编辑器,作为交货捆绑套件的一部分。在该情况下,将使用上述语法将编辑器注册为扩展。

Copyright (c) 2002,2003 IBM Corporation and others. All rights reserved. 该程序及附带提供的资料是基于“一般公共许可证”(Common Public License) v1.0 的条款提供的,本发行版中提供了该许可证条款,并且也可 在以下位置处找到该条款:http://www.eclipse.org/legal/cpl-v10.htm