Eclipse org.eclipse.compare plug-in
2013-09-03 14:21
267 查看
Plug-in metedata tell eclipse runtime kernel how to create a expected object and set its perperties,
and assign these objects to defined interfce object, make these interface objects
communicate with each other.
org.eclipse.compare/plugin.xml
The description of extension-point which is contributed to other plug-ins.
<extension-point> define a extension which can be as a extension point for other plug-in. Provide the features for other plug-ins.Now you can find detailed information of the StreamMergers provided by org.eclipse.compare plug-in as follows:
The definition of <extension point>
<extension point=""> indicates that this plug-in want to extend from that point, add additional features or want that point service for this plug-in.Now we have a look at extenion-point of org.eclipse.ui.themes.
Take a look at interface ITheme.when we need a Theme object, elipse kernel can load plug-ins which define all properties of Theme through plug-in.xml of this exclipse plug-in.
Configuration Markup:
<!ELEMENT extension (theme* , colorDefinition* , fontDefinition* , themeElementCategory* , data* , categoryPresentationBinding*)>
<!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
point - a fully qualified identifier of the target extension point
id - an optional identifier of the extension instance
name - an optional name of the extension instance
<!ELEMENT theme (colorOverride* , fontOverride* , description? , data*)>
<!ATTLIST theme id CDATA #REQUIRED name CDATA #IMPLIED >
A collection of font, color and data overrides. Such a collection may be used to alter the appearance of the workbench. Many theme elements may exist with the same id. This allows component authors to contribute to existing themes.
id - a unique name that will be used to identify this theme
name - a translatable name of the theme to be presented to the user.
At least one theme definition with any given id should contain this attribute.
<!ELEMENT themeElementCategory (description?)>
<!ATTLIST themeElementCategory id CDATA #REQUIRED parentId IDREF #IMPLIED class CDATA #IMPLIED label CDATA #IMPLIED >
A logical grouping of theme element definitions. This category may include colors and fonts.
id - the id for this category
parentId - the id of the parent category, if any.
class - a class that implements org.eclipse.ui.themes.IThemePreview
label - a translatable name of the theme element category to be presented to the user
<!ELEMENT colorDefinition (colorFactory? , colorValue* , description?)>
<!ATTLIST colorDefinition id CDATA #REQUIRED label CDATA #REQUIRED defaultsTo CDATA #IMPLIED value CDATA #IMPLIED categoryId IDREF #IMPLIED colorFactory CDATA #IMPLIED isEditable (true | false) >
A symbolic color definition.
id - a unique id that can be used to identify this color definition.
label - a translatable name of the color to be presented to the user.
defaultsTo - the id of another color definition that is the default setting for the receiver. When there is no preference for this color the color registry will have the value of defaultsTo set for it in the registry. Only one of defaultsTo, value or colorFactory may be defined.
value - The default value of this color. The value may be specified in the following ways:
a String containing comma separated integers in the form red,green,blue
a String that maps to an SWT color constant (ie: COLOR_RED).
Only one of defaultsTo, value or colorFactory may be defined. If value is specified, additional value definitions may be specified on a per platform/windowing system basis via the colorValue element.
categoryId - the optional id of the themeElementCategory this color belongs to.
colorFactory - a class that implements org.eclipse.ui.themes.IColorFactory. This may be used instead of value to specify the default value of the color. Please be advised that this should be used with caution - usage of this attribute will cause plugin activation on workbench startup.
isEditable - whether the user should be allowed to edit this color in the preference page. If this is false then the contribution is not shown to the user.
<!ELEMENT fontDefinition (fontValue* , description?)> <!ATTLIST fontDefinition id CDATA #REQUIRED label CDATA #REQUIRED value CDATA #IMPLIED categoryId IDREF #IMPLIED defaultsTo CDATA #IMPLIED isEditable (true | false) > A symbolic font definition.
id - a unique name that can be used to identify this font definition. label - a translatable name of the font to be presented to the user.
value - the font value. This is in the form: fontname-style-height where fontname is the name of a font, style is a font style (one of "regular", "bold", "italic", or "bold italic") and height is an integer representing the font height.
and assign these objects to defined interfce object, make these interface objects
communicate with each other.
org.eclipse.compare/plugin.xml
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin> <!-- Compare extension point definitions --> <extension-point id="streamMergers" name="%streamMergers" schema="schema/streamMergers.exsd"/> <extension-point id="structureCreators" name="%structureCreators" schema="schema/structureCreators.exsd"/> <extension-point id="structureMergeViewers" name="%structureMergeViewers" schema="schema/structureMergeViewers.exsd"/> <extension-point id="contentMergeViewers" name="%contentMergeViewers" schema="schema/contentMergeViewers.exsd"/> <extension-point id="contentViewers" name="%contentViewers" schema="schema/contentViewers.exsd"/> <!-- Extensions --> <extension point="org.eclipse.ui.themes"> <themeElementCategory label="%textCompareAppearance.label" id="org.eclipse.compare.contentmergeviewer.TextMergeViewer"> </themeElementCategory> <colorDefinition label="%compareIncomingColor.label" categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer" value="COLOR_BLUE" id="INCOMING_COLOR"> <description> %compareIncomingColor.description </description> </colorDefinition> <colorDefinition label="%compareOutgoingColor.label" categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer" value="COLOR_BLACK" id="OUTGOING_COLOR"> <description> %compareOutgoingColor.description </description> </colorDefinition> <colorDefinition label="%compareConflictColor.label" categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer" value="COLOR_RED" id="CONFLICTING_COLOR"> <description> %compareConflictColor.description </description> </colorDefinition> <colorDefinition label="%compareResolvedColor.label" categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer" value="COLOR_GREEN" id="RESOLVED_COLOR"> <description> %compareResolvedColor.description </description> </colorDefinition> <fontDefinition label="%compareFontDefiniton.label" defaultsTo="org.eclipse.jface.textfont" categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer" id="org.eclipse.compare.contentmergeviewer.TextMergeViewer"> <description> %compareFontDefiniton.description </description> </fontDefinition> </extension> <extension id="rejectedPatchMarker" name="%rejectedPatchMarker.name" point="org.eclipse.core.resources.markers"> <super type="org.eclipse.core.resources.taskmarker"> </super> <persistent value="true"> </persistent> </extension> <extension point="org.eclipse.ui.editors"> <editor name="%defaultCompareEditor.name" icon="$nl$/icons/full/eview16/compare_view.gif" contributorClass="org.eclipse.compare.internal.CompareEditorContributor" class="org.eclipse.compare.internal.CompareEditor" id="org.eclipse.compare.CompareEditor"> </editor> </extension> <extension point="org.eclipse.ui.preferencePages"> <page name="%ComparePreferencePage.name" category="org.eclipse.ui.preferencePages.Workbench" class="org.eclipse.compare.internal.ComparePreferencePage" id="org.eclipse.compare.internal.ComparePreferencePage"> <keywordReference id="org.eclipse.compare.general"/> </page> </extension> <extension point="org.eclipse.ui.keywords"> <keyword label="%preferenceKeywords.general" id="org.eclipse.compare.general"/> </extension> <!-- commands and their bindings --> <extension point="org.eclipse.ui.contexts"> <context name="%context.name" description="%context.description" parentId="org.eclipse.ui.contexts.window" id="org.eclipse.compare.compareEditorScope"> </context> </extension> <extension point="org.eclipse.ui.commands"> <category name="%compareCategory.name" description="%compareCategory.description" id="org.eclipse.compare.ui.category.compare"> </category> <command name="%Command.copyRightToLeft.name" description="%Command.copyRightToLeft.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.copyRightToLeft"> </command> <command name="%Command.copyLeftToRight.name" description="%Command.copyLeftToRight.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.copyLeftToRight"> </command> <command name="%Command.copyAllRightToLeft.name" description="%Command.copyAllRightToLeft.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.copyAllRightToLeft"> </command> <command name="%Command.copyAllLeftToRight.name" description="%Command.copyAllLeftToRight.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.copyAllLeftToRight"> </command> <command name="%Command.selectNextChange.name" description="%Command.selectNextChange.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.selectNextChange"> </command> <command name="%Command.selectPreviousChange.name" description="%Command.selectPreviousChange.description" categoryId="org.eclipse.compare.ui.category.compare" id="org.eclipse.compare.selectPreviousChange"> </command> <command categoryId="org.eclipse.compare.ui.category.compare" description="%Command.ignoreWhiteSpace.description" id="org.eclipse.compare.ignoreWhiteSpace" name="%Command.ignoreWhiteSpace.name"> </command> <command categoryId="org.eclipse.compare.ui.category.compare" defaultHandler="org.eclipse.compare.internal.CompareWithOtherResourceHandler" description="%Command.compareWithOther.description" id="org.eclipse.compare.compareWithOther" name="%Command.compareWithOther.name"> </command> </extension> <extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.mapping.ResourceMapping" adaptable="true" id="org.eclipse.compare.MenuGroups"> <menu label="%ReplaceWithMenu.label" path="additions" id="replaceWithMenu"> <separator name="replaceWithGroup"> </separator> </menu> <menu label="%CompareWithMenu.label" path="additions" id="compareWithMenu"> <separator name="compareWithGroup"> </separator> </menu> </objectContribution> <objectContribution objectClass="org.eclipse.core.resources.IResource" adaptable="true" id="org.eclipse.compare.CompareAction"> <action label="%CompareWithEachOtherAction.label" tooltip="%CompareWithEachOtherAction.tooltip" class="org.eclipse.compare.internal.CompareAction" menubarPath="compareWithMenu/compareWithGroup" enablesFor="2+" id="compareWithEachOther"> </action> </objectContribution> <objectContribution objectClass="org.eclipse.core.resources.IFile" adaptable="true" id="org.eclipse.compare.ReplaceWithEditionAction"> <menu label="%ReplaceWithMenu.label" path="additions" id="replaceWithMenu"> <separator name="replaceWithGroup"> </separator> </menu> <action class="org.eclipse.compare.internal.ReplaceWithEditionAction" enablesFor="1" helpContextId="org.eclipse.compare.replace_with_edition_action_context" id="replaceFromHistory" label="%ReplaceFromHistoryAction.label" menubarPath="replaceWithMenu/replaceWithGroup" tooltip="%ReplaceFromHistoryAction.tooltip"> </action> <action label="%ReplaceWithPreviousFromHistoryAction.label" tooltip="%ReplaceWithPreviousFromHistoryAction.tooltip" class="org.eclipse.compare.internal.ReplaceWithPreviousEditionAction" menubarPath="replaceWithMenu/replaceWithGroup" enablesFor="1" id="replaceWithPreviousFromHistory"> </action> </objectContribution> <objectContribution objectClass="org.eclipse.core.resources.IFile" adaptable="true" id="org.eclipse.compare.CompareWithEditionAction"> <menu label="%CompareWithMenu.label" path="additions" id="compareWithMenu"> <separator name="compareWithGroup"> </separator> </menu> <action label="%CompareWithHistoryAction.label" tooltip="%CompareWithHistoryAction.tooltip" class="org.eclipse.compare.internal.CompareWithEditionAction" menubarPath="compareWithMenu/compareWithGroup" enablesFor="1" id="compareWithHistory"> </action> </objectContribution> <objectContribution objectClass="org.eclipse.core.resources.IContainer" adaptable="true" id="org.eclipse.compare.AddFromHistoryAction"> <action label="%addFromHistoryAction.label" tooltip="%addFromHistoryAction.tooltip" class="org.eclipse.compare.internal.AddFromHistoryAction" menubarPath="replaceWithMenu" enablesFor="1" id="addFromHistoryAction"> </action> </objectContribution> </extension> <extension point="org.eclipse.compare.streamMergers"> <streamMerger extensions="txt" class="org.eclipse.compare.internal.merge.TextStreamMerger" id="org.eclipse.compare.internal.merge.TextStreamMerger"> </streamMerger> <contentTypeBinding contentTypeId="org.eclipse.core.runtime.text" streamMergerId="org.eclipse.compare.internal.merge.TextStreamMerger"> </contentTypeBinding> </extension> <extension point="org.eclipse.compare.structureCreators"> <structureCreator extensions="zip" class="org.eclipse.compare.ZipFileStructureCreator" id="org.eclipse.compare.ZipFileStructureCreator"> </structureCreator> </extension> <extension point="org.eclipse.compare.contentMergeViewers"> <viewer class="org.eclipse.compare.internal.BinaryCompareViewerCreator" extensions="class,exe,dll,binary,zip,jar" id="org.eclipse.compare.BinaryCompareViewerCreator" label="%BinaryCompare.label"> </viewer> <viewer class="org.eclipse.compare.internal.TextMergeViewerCreator" extensions="txt" id="org.eclipse.compare.TextMergeViewerCreator" label="%TextCompare.label"> </viewer> <viewer class="org.eclipse.compare.internal.ImageMergeViewerCreator" extensions="gif,jpg,jpeg,png,bmp,ico,tif,tiff" id="org.eclipse.compare.ImageMergeViewerCreator" label="%ImageCompare.label"> </viewer> <contentTypeBinding contentTypeId="org.eclipse.core.runtime.text" contentMergeViewerId="org.eclipse.compare.TextMergeViewerCreator"> </contentTypeBinding> </extension> <extension point="org.eclipse.compare.contentViewers"> <viewer extensions="txt" class="org.eclipse.compare.internal.TextViewerCreator" id="org.eclipse.compare.TextViewerCreator"> </viewer> <contentTypeBinding contentTypeId="org.eclipse.core.runtime.text" contentViewerId="org.eclipse.compare.TextViewerCreator"> </contentTypeBinding> </extension> <extension point="org.eclipse.core.runtime.preferences"> <initializer class="org.eclipse.compare.internal.ComparePreferenceInitializer"> </initializer> </extension> <extension point="org.eclipse.core.runtime.adapters"> <factory adaptableType="org.eclipse.compare.CompareEditorInput" class="org.eclipse.compare.internal.AdapterFactory"> <adapter type="org.eclipse.ui.IContributorResourceAdapter"> </adapter> </factory> </extension> </plugin>
The description of extension-point which is contributed to other plug-ins.
<extension-point id="streamMergers" name="%streamMergers" schema="schema/streamMergers.exsd"/>
<extension-point> define a extension which can be as a extension point for other plug-in. Provide the features for other plug-ins.Now you can find detailed information of the StreamMergers provided by org.eclipse.compare plug-in as follows:
public interface IStreamMerger { public static final int OK= IStatus.OK; public static final int CONFLICT= 1; public static final int INTERNAL_ERROR= 2; IStatus merge(OutputStream output, String outputEncoding, InputStream ancestor, String ancestorEncoding, InputStream target, String targetEncoding, InputStream other, String otherEncoding, IProgressMonitor monitor); }
Stream Merger Identifier: org.eclipse.compare.streamMergers Since: 3.0 Description: This extension point allows a plug-in to register a stream merger for specific content types. The stream merger is expected to perform a three-way merge on three input streams and writes the result to an output stream. The extension point must implement the interface org.eclipse.compare.IStreamMerger. Configuration Markup: <!ELEMENT extension (streamMerger* , contentTypeBinding*)> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED > point - a fully qualified identifier of the target extension point id - an optional identifier of the extension instance name - an optional name of the extension instance <!ELEMENT streamMerger EMPTY> <!ATTLIST streamMerger id CDATA #REQUIRED class CDATA #REQUIRED extensions CDATA #IMPLIED > id - a unique identifier that can be used to reference the stream merger class - a fully qualified name of a class that implements org.eclipse.compare.IStreamMerger extensions - a comma separated list of file extensions e.g. "java, properties" <!ELEMENT contentTypeBinding EMPTY> <!ATTLIST contentTypeBinding contentTypeId IDREF #REQUIRED streamMergerId IDREF #REQUIRED > A contentTypeBinding binds a stream merger to a content type. contentTypeId - The id of a content type defined using the org.eclipse.core.contenttype.contentTypes extension point. streamMergerId - The id of a stream merger defined using the streamMerger element of this extension point (i.e. org.eclipse.compare.streamMergers) Examples: The following is an example of a stream merger for property files (extension "properties"): <extension point = "org.eclipse.compare.streamMergers"> <streamMerger id="org.eclipse.compare.internal.merge.TextStreamMerger" class="org.eclipse.compare.internal.merge.TextStreamMerger" extensions="properties" /> </extension> API Information: The contributed class must implement org.eclipse.compare.IStreamMerger Supplied Implementation: The Compare UI plugin defines a stream merger for line oriented text files.
The definition of <extension point>
<extension point="org.eclipse.ui.themes">
<extension point=""> indicates that this plug-in want to extend from that point, add additional features or want that point service for this plug-in.Now we have a look at extenion-point of org.eclipse.ui.themes.
Take a look at interface ITheme.when we need a Theme object, elipse kernel can load plug-ins which define all properties of Theme through plug-in.xml of this exclipse plug-in.
package org.eclipse.ui.themes; import java.util.Set; import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.util.IPropertyChangeListener; public interface ITheme { void addPropertyChangeListener(IPropertyChangeListener listener); void dispose(); boolean getBoolean(String key); ColorRegistry getColorRegistry(); FontRegistry getFontRegistry(); String getId(); public int getInt(String key); String getLabel(); String getString(String key); Set keySet(); void removePropertyChangeListener(IPropertyChangeListener listener); }
Configuration Markup:
<!ELEMENT extension (theme* , colorDefinition* , fontDefinition* , themeElementCategory* , data* , categoryPresentationBinding*)>
<!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
point - a fully qualified identifier of the target extension point
id - an optional identifier of the extension instance
name - an optional name of the extension instance
<!ELEMENT theme (colorOverride* , fontOverride* , description? , data*)>
<!ATTLIST theme id CDATA #REQUIRED name CDATA #IMPLIED >
A collection of font, color and data overrides. Such a collection may be used to alter the appearance of the workbench. Many theme elements may exist with the same id. This allows component authors to contribute to existing themes.
id - a unique name that will be used to identify this theme
name - a translatable name of the theme to be presented to the user.
At least one theme definition with any given id should contain this attribute.
<!ELEMENT themeElementCategory (description?)>
<!ATTLIST themeElementCategory id CDATA #REQUIRED parentId IDREF #IMPLIED class CDATA #IMPLIED label CDATA #IMPLIED >
A logical grouping of theme element definitions. This category may include colors and fonts.
id - the id for this category
parentId - the id of the parent category, if any.
class - a class that implements org.eclipse.ui.themes.IThemePreview
label - a translatable name of the theme element category to be presented to the user
<!ELEMENT colorDefinition (colorFactory? , colorValue* , description?)>
<!ATTLIST colorDefinition id CDATA #REQUIRED label CDATA #REQUIRED defaultsTo CDATA #IMPLIED value CDATA #IMPLIED categoryId IDREF #IMPLIED colorFactory CDATA #IMPLIED isEditable (true | false) >
A symbolic color definition.
id - a unique id that can be used to identify this color definition.
label - a translatable name of the color to be presented to the user.
defaultsTo - the id of another color definition that is the default setting for the receiver. When there is no preference for this color the color registry will have the value of defaultsTo set for it in the registry. Only one of defaultsTo, value or colorFactory may be defined.
value - The default value of this color. The value may be specified in the following ways:
a String containing comma separated integers in the form red,green,blue
a String that maps to an SWT color constant (ie: COLOR_RED).
Only one of defaultsTo, value or colorFactory may be defined. If value is specified, additional value definitions may be specified on a per platform/windowing system basis via the colorValue element.
categoryId - the optional id of the themeElementCategory this color belongs to.
colorFactory - a class that implements org.eclipse.ui.themes.IColorFactory. This may be used instead of value to specify the default value of the color. Please be advised that this should be used with caution - usage of this attribute will cause plugin activation on workbench startup.
isEditable - whether the user should be allowed to edit this color in the preference page. If this is false then the contribution is not shown to the user.
<!ELEMENT fontDefinition (fontValue* , description?)> <!ATTLIST fontDefinition id CDATA #REQUIRED label CDATA #REQUIRED value CDATA #IMPLIED categoryId IDREF #IMPLIED defaultsTo CDATA #IMPLIED isEditable (true | false) > A symbolic font definition.
id - a unique name that can be used to identify this font definition. label - a translatable name of the font to be presented to the user.
value - the font value. This is in the form: fontname-style-height where fontname is the name of a font, style is a font style (one of "regular", "bold", "italic", or "bold italic") and height is an integer representing the font height.
相关文章推荐
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.j
- Plug-in org.eclipse.jdt.ui was unable to load class
- Plug-in org.eclipse.jdt.ui was unable to load class
- org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ui was unable to load class org.ecli
- [Eclipse plug-in] org.eclipse.ui.perspectives扩展点
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- eclipse启动报错 Problems occurred when invoking code from plug-in: "org.eclipse.jface"
- Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart
- Unable to find plug-in: org.eclipse.equinox.launcher_1.0.200.v20090520.
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart. 解决方法
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.j
- eclipse 或STS提示Plug-in "org.springsource.ide.eclipse.commons.gettingstarted"
- Plug-in org.eclipse.jdt.ui was unable to load class
- android ;linux ;Plug-in org.eclipse.ajdt.ui was unable to load class
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class
- eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".