Implemented editor optimized search method
authorn.hoffmann <n.hoffmann@localhost>
Tue, 22 Feb 2011 14:58:09 +0000 (14:58 +0000)
committern.hoffmann <n.hoffmann@localhost>
Tue, 22 Feb 2011 14:58:09 +0000 (14:58 +0000)
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/NavigationUtil.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/EditHandler.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultLabelProvider.java

index e21d8aa9a89ba1eeeb50c5dec57c94492211e503..cbdf673ffd80a41dfc43f5fb67e6826072f5cab6 100644 (file)
@@ -28,7 +28,8 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.navigator.CommonViewer;
 
-import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
@@ -79,7 +80,7 @@ public class NavigationUtil extends AbstractUtility{
         *
         * @param selectedObject a {@link eu.etaxonomy.cdm.model.common.CdmBase} object.
         */
-       public static void openEditor(CdmBase selectedObject){
+       public static void openEditor(ICdmBase selectedObject){
                UUID entityUuid = selectedObject.getUuid();     
                try {   
                        if(selectedObject instanceof TaxonNode){
@@ -101,6 +102,19 @@ public class NavigationUtil extends AbstractUtility{
                }
        }
        
+       public static void openEditor(Object selectedObject){
+               if (selectedObject instanceof UuidAndTitleCache){
+                       Class type = ((UuidAndTitleCache) selectedObject).getType();
+                       if(type == Taxon.class || type == Synonym.class){
+                               try {
+                                       EditorUtil.openTaxonBase(((UuidAndTitleCache) selectedObject).getUuid());
+                               } catch (PartInitException e) {
+                                       NavigationUtil.error(NavigationUtil.class, "Error opening the editor", e);
+                               }
+                       }
+               }
+       }
+       
        /**
         * <p>openEmpty</p>
         *
index 1b913375fe91113c4362b77b483e6ade43c6fa69..07d29cda089dad18aea4a4d749d4321ee9f0f99a 100644 (file)
@@ -25,6 +25,7 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.wizard.ClassificationWizard;
@@ -64,18 +65,13 @@ public class EditHandler extends AbstractHandler implements IHandler{
                                        protected IStatus run(IProgressMonitor monitor) {
                                                for(final Object selectedObject : structuredSelection.toArray()){
                                                        
-                                                       if(selectedObject instanceof CdmBase){
-                                                               // let the openEditor() method handle everything from now on
-                                                               Display.getDefault().asyncExec(new Runnable(){
+                                                       Display.getDefault().asyncExec(new Runnable(){
 
-                                                                       public void run() {
-                                                                               NavigationUtil.openEditor((CdmBase) selectedObject);
-                                                                       }
-                                                                       
-                                                               });
-                                                       }else{
-                                                               throw new IllegalArgumentException("selectedObject is not of type CdmBase");
-                                                       }
+                                                               public void run() {
+                                                                       NavigationUtil.openEditor(selectedObject);
+                                                               }
+                                                               
+                                                       });
                                                }
                                                return Status.OK_STATUS;
                                        }
index 73583c4b26114d45eb27fff808cd43ed42d99eb9..754611f35ae73017796b04d121d15addb4a0c0de 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -34,8 +35,8 @@ public class SearchResultLabelProvider extends ColumnLabelProvider implements IL
        
        /** {@inheritDoc} */
        public String getText(Object element) {
-               if(element instanceof TaxonBase<?>){
-                       return ((TaxonBase<?>) element).getTitleCache();
+               if(element instanceof UuidAndTitleCache){
+                       return ((UuidAndTitleCache) element).getTitleCache();
                }
                return element.toString();
        }
@@ -70,13 +71,15 @@ public class SearchResultLabelProvider extends ColumnLabelProvider implements IL
        /** {@inheritDoc} */
        @Override
        public Color getForeground(Object element) {
-               if(element instanceof Taxon){
-                       return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorAccepted");
-               }else if(element instanceof Synonym){
-                       return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorSynonym");
-               }else{
-                       return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorDefault");
+               if(element instanceof UuidAndTitleCache){
+                       Class type = ((UuidAndTitleCache) element).getType();
+                       if(type == Taxon.class){
+                               return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorAccepted");
+                       }else if(type == Synonym.class){
+                               return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorSynonym");
+                       }
                }
+               return NavigationUtil.getColorRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontColorDefault");
        }
 
        /* (non-Javadoc)
@@ -85,16 +88,17 @@ public class SearchResultLabelProvider extends ColumnLabelProvider implements IL
        /** {@inheritDoc} */
        @Override
        public Image getImage(Object element) {
-               if(element instanceof Taxon){
-                       Taxon taxon = (Taxon) element;
-                       if(taxon.isMisapplication()){
-                               return ImageResources.getImage(ImageResources.MISAPPLIED_NAME_ICON);
-                       }else{
+               if(element instanceof UuidAndTitleCache){
+                       Class type = ((UuidAndTitleCache) element).getType();
+                       // unfortunately we can not distinct misapplication anymore
+//                     if(taxon.isMisapplication()){
+//                             return ImageResources.getImage(ImageResources.MISAPPLIED_NAME_ICON);
+//                     }else{
+                       if(type == Taxon.class){
                                return ImageResources.getImage(ImageResources.BLACK_SQUARE_ICON);
+                       }else if(type == Synonym.class){
+                               return ImageResources.getImage(ImageResources.HETEROTYPIC_SYN_ICON);
                        }
-               }else if(element instanceof Synonym){
-//                     Synonym synonym = (Synonym) element;
-                       return ImageResources.getImage(ImageResources.HETEROTYPIC_SYN_ICON);
                }
                return super.getImage(element);
        }