- set selection as input for DerivateView and not the element itself
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 21 Oct 2013 07:16:58 +0000 (07:16 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 21 Oct 2013 07:16:58 +0000 (07:16 +0000)
 - use OccurenceService for saveOrUpdate of FieldUnit

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java

index 09c29b69085b2ee74e1de10201570e57aeb16e8d..7f19d3eb75f2859dcba893545d9f7c36fdb3367b 100644 (file)
@@ -9,7 +9,6 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
@@ -18,11 +17,11 @@ import org.eclipse.ui.handlers.IHandlerService;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -53,18 +52,33 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
 
                                     @Override
                                     public void widgetSelected(SelectionEvent e) {
-                                        FieldUnit fieldUnit = HibernateProxyHelper.deproxy(selectedElement, FieldUnit.class);
+                                        IOccurrenceService occurrenceService = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService();
+                                        SpecimenOrObservationBase fieldUnit = occurrenceService.load(((FieldUnit) selectedElement).getUuid());
+
                                         DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
                                         fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
                                         specimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
-                                        specimen.getTitleCache(); //update title cache
-                                        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+//                                        specimen.getTitleCache(); //update title cache
                                         IWorkbenchPart activePart = AbstractUtility.getActivePart();
-                                        CdmStore.getService(IOccurrenceService.class).saveOrUpdate(fieldUnit);
+                                        occurrenceService.saveOrUpdate(fieldUnit);
                                         if(activePart instanceof DerivateView){
                                             DerivateView derivateView = (DerivateView)activePart;
                                             derivateView.viewer.refresh();
                                         }
+//                                        DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+//                                        fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
+//                                        specimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+//                                        specimen.getTitleCache(); //update title cache
+//                                        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+//                                        IWorkbenchPart activePart = AbstractUtility.getActivePart();
+//                                        ConversationHolder conversation = CdmStore.createConversation();
+//                                        CdmStore.getService(IOccurrenceService.class).saveOrUpdate(fieldUnit);
+//                                        conversation.commit();
+//                                        conversation.close();
+//                                        if(activePart instanceof DerivateView){
+//                                            DerivateView derivateView = (DerivateView)activePart;
+//                                            derivateView.viewer.refresh();
+//                                        }
                                     }
 
                                     @Override
index 37d5e7f2f51998dd60bfa627c2625f0f006706a3..3c3c87bbf9f2ac61db817b793a4d787d6949a8f6 100644 (file)
@@ -5,6 +5,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
@@ -27,6 +28,9 @@ public class DerivateContentProvider implements ITreeContentProvider {
 
        @Override
        public Object[] getElements(Object inputElement) {
+           if(inputElement instanceof IStructuredSelection){
+               inputElement = ((IStructuredSelection) inputElement).getFirstElement();
+           }
            // return the parent FieldUnit if element is a DerivedUnit
            if(inputElement instanceof DerivedUnit){
                DerivedUnit derivedUnit = (DerivedUnit)inputElement;
@@ -50,6 +54,9 @@ public class DerivateContentProvider implements ITreeContentProvider {
 
        @Override
        public Object[] getChildren(Object parentElement) {
+           if(parentElement instanceof IStructuredSelection){
+               parentElement = ((IStructuredSelection) parentElement).getFirstElement();
+           }
            if(parentElement instanceof SpecimenOrObservationBase){
                return getDerivates((SpecimenOrObservationBase) parentElement).toArray();
            }
@@ -58,6 +65,9 @@ public class DerivateContentProvider implements ITreeContentProvider {
 
        @Override
        public Object getParent(Object element) {
+           if(element instanceof IStructuredSelection){
+               element = ((IStructuredSelection) element).getFirstElement();
+           }
            if(element instanceof DerivedUnit){
                DerivedUnit derivedUnit = (DerivedUnit)element;
                return derivedUnit.getOriginalUnit();
@@ -67,6 +77,9 @@ public class DerivateContentProvider implements ITreeContentProvider {
 
        @Override
        public boolean hasChildren(Object element) {
+           if(element instanceof IStructuredSelection){
+               element = ((IStructuredSelection) element).getFirstElement();
+           }
            if(element instanceof SpecimenOrObservationBase){
                SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element;
                for(DerivationEvent event:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
index 9547a6830222c398e2179231a5aac6cf8db0db2c..1d39782342dee9056ded110c1ff0c015a4baf0ec 100644 (file)
@@ -2,7 +2,6 @@ package eu.etaxonomy.taxeditor.editor.view.derivate;
 
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
@@ -56,8 +55,12 @@ public class DerivateView extends AbstractCdmEditorViewPart implements IPartCont
                showEmptyPage();
                return;
            }
-           else if(part instanceof BulkEditor && selection instanceof IStructuredSelection){
-               showViewer(part, (IStructuredSelection)selection);
+           else if(part instanceof BulkEditor){
+               this.part = part;
+
+               getViewer().setInput(selection);
+
+               showViewer();
                return;
            }
        }