In the case of an internal editor tight integration can be achieved between the workbench window and the editor part. The workbench menu and toolbar are pre-loaded with a number of common actions, such as cut, copy, and paste. The active part, view or editor, is expected to provide the implementation for these actions. An internal editor may also define new actions which appear in the workbench window. These actions only appear when the editor is active.
The integration between the workbench and external editors is more tenuous. In this case the workbench may launch an editor but after has no way of determining the state of the external editor or collaborating with it by any means except through the file system.
<!ELEMENT extension (editor*)>
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editor (contentTypeBinding*)>
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>
Please note that this attribute is only honored for filename and extension associations at this time. It will not be honored for content type bindings. Content type-based resolution will occur on a first come, first serve basis and is not explicitly specified.
<!ELEMENT contentTypeBinding EMPTY>
contentTypeId IDREF #REQUIRED>
Advertises that the containing editor understands the given content type and is suitable for editing files of that type.
<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>
If the launcher attribute is used the editor will also be treated as an external program. In this case the specified class must implement org.eclipse.ui.IEditorLauncher. The launcher will be instantiated and then open(IPath path) will be invoked to launch the editor on the provided local file system path.
If the class attribute is used, the workbench will assume that it is an internal editor and the specified class must implement org.eclipse.ui.IEditorPart. It is common practice to subclass org.eclipse.ui.EditorPart when defining a new editor type. It is also necessary to define a contributorClass attribute. The specified class must implement org.eclipse.ui.IEditorActionBarContributor, and is used to add new actions to the workbench menu and tool bar which reflect the features of the editor type.
Within the workbench there may be more than one open editor of a particular type. For instance, there may be one or more open Java Editors. To avoid the creation of duplicate actions and action images the editor concept has been split into two. An IEditorActionBarContributor is responsible for the creation of actions. The editor is responsible for action implementation. Furthermore, the contributor is shared by each open editor. As a result of this design there is only one set of actions for one or more open editors.
The contributor will add new actions to the workbench menu and toolbar which reflect the editor type. These actions are shared and, when invoked, act upon the active editor. The active editor is passed to the contributor by invoking IEditorActionBarContributor.setActiveEditor. The identifiers for actions and major groups within the workbench window are defined in org.eclipse.ui.IWorkbenchActionConstants. These should be used as a reference point for the addition of new actions. Top level menus are created by using the following values for the path attribute:
Copyright (c) 2002, 2007 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