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();
     }
 
     /**