fix the problem of referencingObjectsView and deletion in bulk editor
authorKatja Luther <k.luther@bgbm.org>
Mon, 1 Dec 2014 11:35:40 +0000 (11:35 +0000)
committerKatja Luther <k.luther@bgbm.org>
Mon, 1 Dec 2014 11:35:40 +0000 (11:35 +0000)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java

index 364dcdf72fbe1c59416a1d528febc125e6ac5c8b..76ec680bd44ac5c8ac8a63eebf0da97ffe42a56a 100644 (file)
@@ -34,7 +34,10 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IViewPart;
 import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.texteditor.ITextEditorActionConstants;
 
 import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
@@ -42,6 +45,7 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -278,7 +282,20 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        @Override
        public void doSave(IProgressMonitor progressMonitor) {
            isDirty = false;
+           IViewPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+                           .findView("eu.etaxonomy.taxeditor.bulkeditor.view.referencingobjects");
+           if (part != null){
+                       ((ReferencingObjectsView)part).dispose();
+               }
            super.doSave(progressMonitor);
+           
+           selectFirstItem();
+           if (part != null){
+                       ((ReferencingObjectsView)part).refresh();
+                       
+               }
+               getSourceViewer().getTextWidget().setFocus();
+               
        }
 
        /** {@inheritDoc} */
index dbe390743330598982811dc0a9a6ee9ecf9be97a..8f87f7d2ba2b6841160c07d859a7fca309870b06 100644 (file)
@@ -19,8 +19,11 @@ import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.IWorkbenchPage;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IAgentService;
@@ -45,6 +48,8 @@ import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
+import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
+
 
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
@@ -129,7 +134,7 @@ public class DeleteHandler extends AbstractHandler {
                                        } catch (Exception e){
                                                MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
                                        }
-                                       if (result.isError()){
+                                       if (result.isError() || !result.getExceptions().isEmpty()){
                                                if (!result.getExceptions().isEmpty()) {
                                                        MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().get(0).getMessage(), null);
                                                }else{
@@ -137,10 +142,9 @@ public class DeleteHandler extends AbstractHandler {
                                                        
                                                }
                                        }
-                                       if (result.isOk()){
+                                       if (result.isOk() && result.getExceptions().isEmpty()){
                                                ((BulkEditor) editor).removeAnnotatedLine(annotation);
-                                               
-                                               System.out.println("Test");
+
                                        }
                                }                               
                        }
index 450bc705229e64c2ee9e16d4697d17fcbd65aa2d..df5ba8d8d222d35627f77fb0b5c38610ffb749f7 100644 (file)
@@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
@@ -112,7 +113,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                
                final Display display = Display.getCurrent();
                
-       //      Job job = new Job("Update Referencing Objects") {
+               //Job job = new Job("Update Referencing Objects") {
 //                     
 //                     @Override
 //                     protected IStatus run(IProgressMonitor monitor) {
@@ -146,17 +147,18 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
         try {
                if(entity instanceof CdmBase){
                        referencedObject = (CdmBase) entity;
-                       if (referencedObject instanceof AgentBase){
+                       if (referencedObject instanceof TeamOrPersonBase){
                                referencedObject = CdmStore.getService(IAgentService.class).load(referencedObject.getUuid());
                        }
                        //referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid());
                        Set<CdmBase> setOfReferencingObjects = CdmStore.getService(ICommonService.class).getReferencingObjects(referencedObject);
-                       
-                       List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);                     
-                       
-                       Collections.sort(referencingObjects, new ReferencingClassComparator());
-                       
-                       return referencingObjects;
+                       if (setOfReferencingObjects != null){
+                               List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);                     
+                               
+                               Collections.sort(referencingObjects, new ReferencingClassComparator());
+                               
+                               return referencingObjects;
+                       }
                }
         } catch (Exception e) {
             logger.error("Error retrieving referencing objects", e);
@@ -233,6 +235,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                super.dispose();
+               
        }
 
        /* (non-Javadoc)
@@ -261,6 +264,14 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        public boolean onComplete() {
                return false;
        }
+       
+       public void refresh(){
+               selectionService.removePostSelectionListener(this);
+               selectionService.removeSelectionListener(this);
+               selectionService.addPostSelectionListener(this);
+               selectionService.addSelectionListener(this);
+               
+       }
 
 
 }