import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
-import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateLabelProvider;
/**
*/
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- conversation = CdmStore.createConversation();
setSite(site);
setInput(input);
+ if(input instanceof DerivateViewEditorInput){
+ conversation = ((DerivateViewEditorInput) input).getConversationHolder();
+ }
}
/* (non-Javadoc)
*/
@Override
public void setFocus() {
- // TODO Auto-generated method stub
-
+ //make sure to bind again if maybe in another view the conversation was unbound
+ if(!conversation.isBound()){
+ conversation.bind();
+ }
}
/* (non-Javadoc)
package eu.etaxonomy.taxeditor.editor.view.derivate;
import java.util.Collection;
+import java.util.UUID;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
*/
private FieldUnit fieldUnit;
+ private ConversationHolder conversationHolder;
+
/**
* Creates an editor input for the {@link DerivateView} with the currently selected derivate and the
* corresponding {@link FieldUnit} (both may be the same object).
- * @param derivate the derivate for which the derivate hierarchy should be shown
+ * @param derivateUuid the {@link UUID} of the derivate for which the derivate hierarchy should be shown
* @param fieldUnit the root of the hierarchy
*/
- public DerivateViewEditorInput(SpecimenOrObservationBase<?> derivate) {
+ public DerivateViewEditorInput(UUID derivateUuid) {
super();
- this.derivate = derivate;
+ this.conversationHolder = CdmStore.createConversation();
+ this.derivate = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().load(derivateUuid);
if(derivate instanceof FieldUnit){
this.fieldUnit = (FieldUnit) derivate;
}
else if(derivate instanceof DerivedUnit){
- Collection<FieldUnit> fieldUnits = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().getFieldUnits((DerivedUnit) derivate);
+ Collection<FieldUnit> fieldUnits = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().getFieldUnits(derivateUuid);
if(!fieldUnits.isEmpty()){
// TODO think about handling multiple parent FieldUnits
this.fieldUnit = fieldUnits.iterator().next();
return fieldUnit;
}
+ /**
+ * @return the conversationHolder
+ */
+ public ConversationHolder getConversationHolder() {
+ return conversationHolder;
+ }
+
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/