You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2018/08/20 18:42:23 UTC
[directory-studio] branch master updated: Change way how value
editor extensions are loaded. Allow multipe definitions with same class
name and merge syntax/attributes. Remove name and icon from 2nd definition.
This is an automated email from the ASF dual-hosted git repository.
seelmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-studio.git
The following commit(s) were added to refs/heads/master by this push:
new a2c0b41 Change way how value editor extensions are loaded. Allow multipe definitions with same class name and merge syntax/attributes. Remove name and icon from 2nd definition.
a2c0b41 is described below
commit a2c0b41c372550a41518db837c2dd8fc16d71097
Author: Stefan Seelmann <ma...@stefan-seelmann.de>
AuthorDate: Mon Aug 20 20:42:11 2018 +0200
Change way how value editor extensions are loaded. Allow multipe definitions with same class name and merge syntax/attributes. Remove name and icon from 2nd definition.
---
plugins/edirectory/plugin.xml | 16 ++-----
.../studio/valueeditors/ValueEditorManager.java | 50 ++++++++++++++--------
2 files changed, 37 insertions(+), 29 deletions(-)
diff --git a/plugins/edirectory/plugin.xml b/plugins/edirectory/plugin.xml
index 783190a..d285a4c 100644
--- a/plugins/edirectory/plugin.xml
+++ b/plugins/edirectory/plugin.xml
@@ -24,9 +24,7 @@
point="org.apache.directory.studio.valueeditors">
<valueEditor
- class="org.apache.directory.studio.valueeditors.TextValueEditor"
- icon="resources/icons/texteditor.gif"
- name="%ValueEditors_TextValueEditor_name">
+ class="org.apache.directory.studio.valueeditors.TextValueEditor">
<attribute attributeType="DirXML-ApplicationSchema"/>
<attribute attributeType="DirXML-ConfigManifest"/>
<attribute attributeType="DirXML-ConfigValues"/>
@@ -48,24 +46,18 @@
</valueEditor>
<valueEditor
- class="org.apache.directory.studio.valueeditors.image.ImageValueEditor"
- icon="resources/icons/imageeditor.gif"
- name="%ValueEditor_ImageValueEditor_name">
+ class="org.apache.directory.studio.valueeditors.image.ImageValueEditor">
<attribute attributeType="DirXML-DriverImage"/>
</valueEditor>
<valueEditor
- class="org.apache.directory.studio.valueeditors.certificate.CertificateValueEditor"
- icon="resources/icons/certificateeditor.png"
- name="%ValueEditor_CertificateValueEditor_name">
+ class="org.apache.directory.studio.valueeditors.certificate.CertificateValueEditor">
<attribute attributeType="nDSPKIPublicKeyCertificate"/>
<attribute attributeType="ndsCrossCertificatePair"/>
</valueEditor>
<valueEditor
- class="org.apache.directory.studio.valueeditors.uuid.InPlaceUuidValueEditor"
- icon="resources/icons/entryuuideditor.gif"
- name="%ValueEditor_InPlaceEntryUUIDValueEditor_name">
+ class="org.apache.directory.studio.valueeditors.uuid.InPlaceUuidValueEditor">
<attribute attributeType="GUID"/>
</valueEditor>
diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
index 866e0f9..59be2e8 100644
--- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
+++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
@@ -24,6 +24,7 @@ package org.apache.directory.studio.valueeditors;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -682,7 +683,7 @@ public class ValueEditorManager
*/
public static Collection<ValueEditorExtension> getValueEditorExtensions()
{
- Collection<ValueEditorExtension> valueEditorExtensions = new ArrayList<ValueEditorExtension>();
+ Map<String, ValueEditorExtension> valueEditorExtensions = new LinkedHashMap<>();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = registry.getExtensionPoint( EXTENSION_POINT );
@@ -691,30 +692,45 @@ public class ValueEditorManager
// For each extension:
for ( IConfigurationElement member : members )
{
- ValueEditorExtension proxy = new ValueEditorExtension();
- valueEditorExtensions.add( proxy );
+ String className = member.getAttribute( CLASS );
+ String name = member.getAttribute( NAME );
+ String iconPath = member.getAttribute( ICON );
- IExtension extension = member.getDeclaringExtension();
- String extendingPluginId = extension.getNamespaceIdentifier();
+ ValueEditorExtension proxy;
+ if ( valueEditorExtensions.containsKey( className ) )
+ {
+ proxy = valueEditorExtensions.get( className );
+ }
+ else
+ {
+ proxy = new ValueEditorExtension();
+ proxy.className = className;
+ proxy.member = member;
+ valueEditorExtensions.put( className, proxy );
+ }
- proxy.member = member;
- proxy.name = member.getAttribute( NAME );
- String iconPath = member.getAttribute( ICON );
- proxy.icon = AbstractUIPlugin.imageDescriptorFromPlugin( extendingPluginId, iconPath );
-
- if ( proxy.icon == null )
+ if ( name != null )
{
- proxy.icon = ImageDescriptor.getMissingImageDescriptor();
+ proxy.name = name;
+ }
+
+ if ( iconPath != null )
+ {
+ IExtension extension = member.getDeclaringExtension();
+ String extendingPluginId = extension.getNamespaceIdentifier();
+ proxy.icon = AbstractUIPlugin.imageDescriptorFromPlugin( extendingPluginId, iconPath );
+ if ( proxy.icon == null )
+ {
+ proxy.icon = ImageDescriptor.getMissingImageDescriptor();
+ }
}
-
- proxy.className = member.getAttribute( CLASS );
IConfigurationElement[] children = member.getChildren();
-
+
for ( IConfigurationElement child : children )
{
String type = child.getName();
-
+
if ( SYNTAX.equals( type ) )
{
String syntaxOID = child.getAttribute( SYNTAX_OID );
@@ -728,7 +744,7 @@ public class ValueEditorManager
}
}
- return valueEditorExtensions;
+ return valueEditorExtensions.values();
}
/**