diff --git a/ui-swing-basiccontrols/src/main/java/fr/cemagref/ohoui/ui/swing/basiccontrols/CommonDefaultObjectEditor.java b/ui-swing-basiccontrols/src/main/java/fr/cemagref/ohoui/ui/swing/basiccontrols/CommonDefaultObjectEditor.java
index d5bb15e158c9523761fa6a08c2ad1624e3805219..7b9251ae8a36782ce8268edb473a5bd1c98a6501 100644
--- a/ui-swing-basiccontrols/src/main/java/fr/cemagref/ohoui/ui/swing/basiccontrols/CommonDefaultObjectEditor.java
+++ b/ui-swing-basiccontrols/src/main/java/fr/cemagref/ohoui/ui/swing/basiccontrols/CommonDefaultObjectEditor.java
@@ -22,7 +22,9 @@ import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -64,8 +66,15 @@ public class CommonDefaultObjectEditor extends AbstractOhEditor<Object, JCompone
             LOGGER.log(Level.FINER, "Building editor for child {0}", object.getName());
             // Editors retrieving for other types
             List<Class> availableTypes = new ArrayList<Class>();
+            if (child.getDeclaredType().isInterface())
             availableTypes.add(child.getDeclaredType());
             availableTypes.addAll(Lookup.getDefault().lookupResult(child.getDeclaredType()).allClasses());
+            for (Iterator<Class> it  = availableTypes.iterator();it.hasNext();) {
+                Class type = it.next();
+                if (type.isInterface() || Modifier.isAbstract(type.getModifiers())) {
+                    it.remove();
+                }
+            }
             // TODO filter added types to retain only instanciable types
             if (child.getValue() == null) {
                 // object has null value, so building specific panel for instanciating it