Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2019-08-05 08:53:31 -0400
committerMickael Istria2019-08-05 09:08:52 -0400
commit6fb4f653c9bc16088a19860f235898b1b7e4fe09 (patch)
tree17e33ebd57e35b58d1eddb948e3f7e8029be12c2
parent607288719f0b9ee2a5a9383dc71663a83d1d9c07 (diff)
downloadeclipse.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>
-rw-r--r--org.eclipse.ui.genericeditor.tests/plugin.xml6
-rw-r--r--org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd130
-rw-r--r--org.eclipse.ui.genericeditor/schema/icons.exsd136
-rw-r--r--org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericContentTypeRelatedExtension.java2
-rw-r--r--org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/GenericEditorPlugin.java6
-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
6 files changed, 152 insertions, 161 deletions
diff --git a/org.eclipse.ui.genericeditor.tests/plugin.xml b/org.eclipse.ui.genericeditor.tests/plugin.xml
index 5d45eb65a..c2a259aa1 100644
--- a/org.eclipse.ui.genericeditor.tests/plugin.xml
+++ b/org.eclipse.ui.genericeditor.tests/plugin.xml
@@ -266,13 +266,13 @@
<extension
point="org.eclipse.ui.genericeditor.icons">
<icon
- contentTypeId="org.eclipse.ui.genericeditor.tests.content-type"
+ contentType="org.eclipse.ui.genericeditor.tests.content-type"
icon="icons/newfile_wiz.png"/>
<icon
- contentTypeId="org.eclipse.ui.genericeditor.tests.specialized-content-type"
+ contentType="org.eclipse.ui.genericeditor.tests.specialized-content-type"
icon="icons/newfolder_wiz.png"/>
<icon
- contentTypeId="org.eclipse.ui.genericeditor.tests.sub-specialized-content-type"
+ contentType="org.eclipse.ui.genericeditor.tests.sub-specialized-content-type"
icon="platform:/plugin/org.eclipse.ui.ide/icons/full/etool16/newprj_wiz.png"/>
</extension>
</plugin>
diff --git a/org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd b/org.eclipse.ui.genericeditor/schema/genericEditorIcons.exsd
deleted file mode 100644
index e0e4a4f3a..000000000
--- 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>
- &lt;pre&gt;
- &lt;extension
- point=&quot;org.eclipse.ui.genericeditor.icons&quot;&gt;
- &lt;icon
- contentTypeId=&quot;org.eclipse.core.runtime.xml&quot;
- icon=&quot;icons/xml_content.png&quot; /&gt;
- &lt;/extension&gt;
-&lt;/pre&gt;
-&lt;pre&gt;
- &lt;extension
- point=&quot;org.eclipse.ui.genericeditor.icons&quot;&gt;
- &lt;icon
- contentTypeId=&quot;org.eclipse.core.runtime.text&quot;
- icon=&quot;platform:/plugin/org.eclipse.ui.test/icons/text_content.png&quot; /&gt;
- &lt;/extension&gt;
-&lt;/pre&gt;
- </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 000000000..873b3d786
--- /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>
+ &lt;pre&gt;
+ &lt;extension
+ point=&quot;org.eclipse.ui.genericeditor.icons&quot;&gt;
+ &lt;icon
+ contentType=&quot;org.eclipse.core.runtime.xml&quot;
+ icon=&quot;icons/xml_content.png&quot; /&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;pre&gt;
+ &lt;extension
+ point=&quot;org.eclipse.ui.genericeditor.icons&quot;&gt;
+ &lt;icon
+ contentTypeId=&quot;org.eclipse.core.runtime.text&quot;
+ icon=&quot;platform:/plugin/org.eclipse.ui.test/icons/text_content.png&quot; /&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+ </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 7159e378c..20da9266f 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 6a9bc7f97..750d4d263 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 38e841a1b..d5909b9a6 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));
}
}

Back to the top