diff options
author | Mickael Istria | 2019-08-05 12:53:31 +0000 |
---|---|---|
committer | Mickael Istria | 2019-08-05 13:08:52 +0000 |
commit | 6fb4f653c9bc16088a19860f235898b1b7e4fe09 (patch) | |
tree | 17e33ebd57e35b58d1eddb948e3f7e8029be12c2 /org.eclipse.ui.genericeditor | |
parent | 607288719f0b9ee2a5a9383dc71663a83d1d9c07 (diff) | |
download | eclipse.platform.text-6fb4f653c9bc16088a19860f235898b1b7e4fe09.tar.gz eclipse.platform.text-6fb4f653c9bc16088a19860f235898b1b7e4fe09.tar.xz eclipse.platform.text-6fb4f653c9bc16088a19860f235898b1b7e4fe09.zip |
Bug 513034 - Improvement to extension point
* Rename extension point to simpler "icons"
* Rename contentTypeId to just contentType (like other extensions)
* Rename class to convention
Change-Id: I57d69658cbf8998e16c3ccb7b1d6430f8e5d01e8
Signed-off-by: Mickael Istria <mistria@redhat.com>
Diffstat (limited to 'org.eclipse.ui.genericeditor')
-rw-r--r-- | org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd | 130 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor/schema/icons.exsd | 136 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java | 2 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java | 6 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/IconsRegistry.java (renamed from org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ContentTypeImagesRegistry.java) | 33 |
5 files changed, 149 insertions, 158 deletions
diff --git a/org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd b/org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd deleted file mode 100644 index e0e4a4f3a65..00000000000 --- a/org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd +++ /dev/null @@ -1,130 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.ui.genericeditor"
- xmlns="http://www.w3.org/2001/XMLSchema">
- <annotation>
- <appinfo>
- <meta.schema plugin="org.eclipse.ui.genericeditor" id="icons" name="GenericEditorIcons"/>
- </appinfo>
- <documentation>
-The icons extension point provides a way of linking different types of icons to a particular content type.
- </documentation>
- </annotation>
- <element name="extension">
- <annotation>
- <appinfo>
- <meta.element />
- </appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="icon" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation></documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation></documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation></documentation>
- <appinfo>
- <meta.attribute translatable="true"/>
- </appinfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
- <element name="icon">
- <annotation>
- <appinfo>
- <meta.element labelAttribute="contentTypeId"/>
- </appinfo>
- <documentation>
- The icon to associate with a particular content type.
- </documentation>
- </annotation>
- <complexType>
- <attribute name="contentTypeId" type="string" use="required">
- <annotation>
- <documentation>
- The identifier of the content type with which the icons should be associated.
- </documentation>
- <appinfo>
- <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/>
- </appinfo>
- </annotation>
- </attribute>
- <attribute name="icon" type="string" use="required">
- <annotation>
- <documentation>
- The path to the icon which should be used.
- </documentation>
- <appinfo>
- <meta.attribute kind="resource"/>
- </appinfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
- <annotation>
- <appinfo>
- <meta.section type="since"/>
- </appinfo>
- <documentation>
- 1.1.500
- </documentation>
- </annotation>
- <annotation>
- <appinfo>
- <meta.section type="examples"/>
- </appinfo>
- <documentation>
- <pre>
- <extension
- point="org.eclipse.ui.genericeditor.icons">
- <icon
- contentTypeId="org.eclipse.core.runtime.xml"
- icon="icons/xml_content.png" />
- </extension>
-</pre>
-<pre>
- <extension
- point="org.eclipse.ui.genericeditor.icons">
- <icon
- contentTypeId="org.eclipse.core.runtime.text"
- icon="platform:/plugin/org.eclipse.ui.test/icons/text_content.png" />
- </extension>
-</pre>
- </documentation>
- </annotation>
- <annotation>
- <appinfo>
- <meta.section type="apiInfo"/>
- </appinfo>
- <documentation>
- </documentation>
- </annotation>
- <annotation>
- <appinfo>
- <meta.section type="copyright"/>
- </appinfo>
- <documentation>
- Copyright (c) 2019 Lakshminarayana Nekkanti(narayana.nekkanti@gmail.com)
-
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License 2.0 which is available at
- http://www.eclipse.org/legal/epl-2.0.
-
- SPDX-License-Identifier: EPL-2.0 3
-
- Contributor
- Lakshminarayana Nekkanti - initial API and implementation
- </documentation>
- </annotation>
-</schema>
diff --git a/org.eclipse.ui.genericeditor/schema/icons.exsd b/org.eclipse.ui.genericeditor/schema/icons.exsd new file mode 100644 index 00000000000..873b3d786ec --- /dev/null +++ b/org.eclipse.ui.genericeditor/schema/icons.exsd @@ -0,0 +1,136 @@ +<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.ui.genericeditor" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.ui.genericeditor" id="icons" name="GenericEditorIcons"/>
+ </appinfo>
+ <documentation>
+ The icons extension point provides a way of linking different types of icons to a particular content type.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="icon" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="icon">
+ <annotation>
+ <appinfo>
+ <meta.element labelAttribute="contentTypeId"/>
+ </appinfo>
+ <documentation>
+ The icon to associate with a particular content type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="contentType" type="string" use="required">
+ <annotation>
+ <documentation>
+ The identifier of the content type with which the icons should be associated.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="icon" type="string" use="required">
+ <annotation>
+ <documentation>
+ The path to the icon which should be used.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 1.1.500
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ <pre>
+ <extension
+ point="org.eclipse.ui.genericeditor.icons">
+ <icon
+ contentType="org.eclipse.core.runtime.xml"
+ icon="icons/xml_content.png" />
+ </extension>
+</pre>
+<pre>
+ <extension
+ point="org.eclipse.ui.genericeditor.icons">
+ <icon
+ contentTypeId="org.eclipse.core.runtime.text"
+ icon="platform:/plugin/org.eclipse.ui.test/icons/text_content.png" />
+ </extension>
+</pre>
+ </documentation>
+ </annotation>
+
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2019 Lakshminarayana Nekkanti(narayana.nekkanti@gmail.com)
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ http://www.eclipse.org/legal/epl-2.0.
+
+ SPDX-License-Identifier: EPL-2.0 3
+
+ Contributor
+ Lakshminarayana Nekkanti - initial API and implementation
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java index 7159e378c2c..20da9266f48 100644 --- a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java +++ b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java @@ -36,7 +36,7 @@ import org.eclipse.ui.texteditor.ITextEditor; public class GenericContentTypeRelatedExtension<T> { private static final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$ private static final String CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$ - private static final String CONTENT_TYPE_ATTRIBUTE = "contentType"; //$NON-NLS-1$ + static final String CONTENT_TYPE_ATTRIBUTE = "contentType"; //$NON-NLS-1$ private static final String ENABLED_WHEN_ATTRIBUTE = "enabledWhen"; //$NON-NLS-1$ public final IConfigurationElement extension; diff --git a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java index 6a9bc7f9738..750d4d26393 100644 --- a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java +++ b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java @@ -47,7 +47,7 @@ public class GenericEditorPlugin extends AbstractUIPlugin { private PresentationReconcilerRegistry presentationReconcilierRegistry; private AutoEditStrategyRegistry autoEditStrategyRegistry; private CharacterPairMatcherRegistry characterPairMatcherRegistry; - private ContentTypeImagesRegistry editorImagesRegistry; + private IconsRegistry editorImagesRegistry; private IPropertyChangeListener themeListener; @@ -156,9 +156,9 @@ public class GenericEditorPlugin extends AbstractUIPlugin { /** * @return the registry allowing to access contributed images */ - public synchronized ContentTypeImagesRegistry getContentTypeImagesRegistry() { + public synchronized IconsRegistry getContentTypeImagesRegistry() { if (this.editorImagesRegistry == null) { - this.editorImagesRegistry = new ContentTypeImagesRegistry(); + this.editorImagesRegistry = new IconsRegistry(); } return this.editorImagesRegistry; } diff --git a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ContentTypeImagesRegistry.java b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/IconsRegistry.java index 38e841a1bce..d5909b9a6ba 100644 --- a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ContentTypeImagesRegistry.java +++ b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/IconsRegistry.java @@ -22,8 +22,6 @@ import java.util.Objects; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IRegistryChangeEvent; -import org.eclipse.core.runtime.IRegistryChangeListener; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; @@ -31,36 +29,28 @@ import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ResourceLocator; -public class ContentTypeImagesRegistry { +public class IconsRegistry { private static final String EXTENSION_POINT_ID = GenericEditorPlugin.BUNDLE_ID + ".icons"; //$NON-NLS-1$ private Map<IContentType, ImageDescriptor> extensions = new LinkedHashMap<>(); private boolean outOfSync = true; - public ContentTypeImagesRegistry() { - Platform.getExtensionRegistry().addRegistryChangeListener(new IRegistryChangeListener() { - @Override - public void registryChanged(IRegistryChangeEvent event) { - outOfSync = true; - } - }, EXTENSION_POINT_ID); + public IconsRegistry() { + Platform.getExtensionRegistry().addRegistryChangeListener(event -> outOfSync = true, EXTENSION_POINT_ID); } public ImageDescriptor getImageDescriptor(IContentType[] contentTypes) { if (this.outOfSync) { sync(); } - return Arrays.stream(contentTypes) - .sorted(Collections.reverseOrder(Comparator.comparingInt(ContentTypeSpecializationComparator::depth))) - .map(extensions::get).filter(Objects::nonNull).findFirst().orElse(null); + return Arrays.stream(contentTypes).sorted(Collections.reverseOrder(Comparator.comparingInt(ContentTypeSpecializationComparator::depth))).map(extensions::get).filter(Objects::nonNull).findFirst().orElse(null); } private void sync() { - Set<IContentType> toRemoveContentTypes = new HashSet<IContentType>(this.extensions.keySet()); - for (IConfigurationElement extension : Platform.getExtensionRegistry() - .getConfigurationElementsFor(EXTENSION_POINT_ID)) { + Set<IContentType> toRemoveContentTypes = new HashSet<>(this.extensions.keySet()); + for (IConfigurationElement extension : Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID)) { try { - final String contentTypeId = extension.getAttribute("contentTypeId"); //$NON-NLS-1$ + final String contentTypeId = extension.getAttribute(GenericContentTypeRelatedExtension.CONTENT_TYPE_ATTRIBUTE); if (contentTypeId == null || contentTypeId.isEmpty()) { continue; } @@ -75,15 +65,10 @@ public class ContentTypeImagesRegistry { if (icon == null || icon.isEmpty()) { continue; } - ImageDescriptor imageDescriptor = ResourceLocator - .imageDescriptorFromBundle(extension.getNamespaceIdentifier(), icon).orElse(null); - if (imageDescriptor != null) { - this.extensions.put(contentType, imageDescriptor); - } + ResourceLocator.imageDescriptorFromBundle(extension.getNamespaceIdentifier(), icon).ifPresent(imageDescriptor -> this.extensions.put(contentType, imageDescriptor)); } } catch (Exception ex) { - GenericEditorPlugin.getDefault().getLog() - .log(new Status(IStatus.ERROR, GenericEditorPlugin.BUNDLE_ID, ex.getMessage(), ex)); + GenericEditorPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, GenericEditorPlugin.BUNDLE_ID, ex.getMessage(), ex)); } } |