Fixes a couple of problems with user and group selection dialogs.
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / dialogs / filteredSelection / AbstractFilteredCdmResourceSelectionDialog.java
index ac6059f555b778e04fe7358dff84ef4a5fc917b7..0525acbbd6cdb37a84a69d0d2bd0f31dce3fe086 100644 (file)
@@ -11,7 +11,6 @@
 package eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection;
 
 import java.lang.reflect.Field;
-import java.security.acl.LastOwnerException;
 import java.text.Collator;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -30,7 +29,6 @@ import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -92,17 +90,36 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                
                initModel();
                
-               if (cdmObject != null) {
-                       setInitialPattern(getTitle(cdmObject));
+               String objectTitle = getTitle(cdmObject);
+               if (objectTitle != null) {
+                       setInitialPattern(objectTitle);
                }
                
-               ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
-               setListLabelProvider(labelProvider);
-               setDetailsLabelProvider(labelProvider);
+               setListLabelProvider(createListLabelProvider());
+               setDetailsLabelProvider(createDetailsLabelProvider());
                
                setSelectionHistory(new ResourceSelectionHistory());
        }
        
+       /**
+        * By default, we are returning the standard list label provider
+        * 
+        * Override in subclasses if you want different behavior 
+        * 
+        * @return
+        */
+       protected ILabelProvider createDetailsLabelProvider() {
+               return createListLabelProvider();
+       }
+
+       /**
+        * 
+        * @return
+        */
+       protected ILabelProvider createListLabelProvider() {
+               return new FilteredCdmResourceLabelProvider();
+       }
+
        /**
         * Override in subclasses.
         * Will run before initModel()
@@ -185,7 +202,9 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                if (cdmObject instanceof IIdentifiableEntity) {
                        return ((IIdentifiableEntity) cdmObject).getTitleCache();                       
                }
-               return null;
+               throw new IllegalArgumentException("Generic method only" +
+                               " supports cdmObject of type IIdentifiableEntity." +
+                               " Please implement specific method in subclass.");
        }
        
 
@@ -266,7 +285,8 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                // this also is not the nicest way to do it. 
                // I am still amazed, that FilteredSelectionDialog does not offer any methods to change its data
                // once it was opened. Am I doing it wrong?
-               ((Text) getPatternControl()).setText(getTitle(cdmObject));
+               String pattern = getTitle(cdmObject);
+               ((Text) getPatternControl()).setText(pattern);
        }
        
        /* (non-Javadoc)