import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IMemento;
-import org.eclipse.ui.ISaveablePart2;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorPart;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.Messages;
import eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter.DerivateSearchCompositeController;
import eu.etaxonomy.taxeditor.model.IContextListener;
+import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider;
import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
* Displays the derivate hierarchy of the specimen specified in the editor input.
*
*/
-public class DerivateView extends AbstractCdmViewPart implements IPartContentHasFactualData, ISaveablePart2,
- IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia, IContextListener {
+public class DerivateView extends EditorPart implements IPartContentHasFactualData, IConversationEnabled,
+ ICdmEntitySessionEnabled, IDirtyMarkable, IPostOperationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia,
+ IContextListener, ISelectionListener {
public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; //$NON-NLS-1$
public static final String YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION = Messages.DerivateView_YOU_NEED_TO_SAVE;
private Taxon selectedTaxon;
+ private ISelectionService selectionService;
+
/**
* Default constructor
*/
public DerivateView() {
- init();
}
+
/**
- *
+ * {@inheritDoc}
*/
- private void init() {
+ @Override
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ this.setSite(site);
+ this.setInput(input);
this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
return conversation;
}
- /**
- * @return the viewer
- */
- @Override
- public TreeViewer getViewer() {
- return viewer;
- }
-
@Override
public void changed(Object element) {
setDirty(true);
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if(viewer.getTree().isDisposed()){
+ return;
+ }
if(listenToSelectionChange && selection instanceof IStructuredSelection){
Object selectedElement = ((IStructuredSelection) selection).getFirstElement();
- if(selectedElement instanceof CdmBase && ((CdmBase) selectedElement).isInstanceOf(Taxon.class)){
- selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class);
+ if(selectedElement instanceof CdmBase){
+ if(((CdmBase) selectedElement).isInstanceOf(TaxonNode.class)){
+ selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, TaxonNode.class).getTaxon();
+ }
+ else if(((CdmBase) selectedElement).isInstanceOf(Taxon.class)){
+ selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class);
+ }
Collection<SpecimenOrObservationBase> fieldUnits = CdmStore.getService(IOccurrenceService.class).listFieldUnitsByAssociatedTaxon(selectedTaxon, null, null);
Collection<UUID> uuids = new HashSet<UUID>();
for (SpecimenOrObservationBase specimenOrObservationBase : fieldUnits) {
}
}
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
/**
* {@inheritDoc}
*/
return new ArrayList<SpecimenOrObservationBase<?>>(rootElements);
}
- @Override
- public void createViewer(Composite parent) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public boolean isSaveOnCloseNeeded() {
- return isDirty();
- }
-
- @Override
- public int promptToSaveOnClose() {
- return ISaveablePart2.DEFAULT;
- }
-
public void toggleListenToSelectionChange() {
listenToSelectionChange = !listenToSelectionChange;
derivateSearchCompositeController.setEnabled(!listenToSelectionChange);
*/
@Override
public void contextStart(IMemento memento, IProgressMonitor monitor) {
- init();
derivateSearchCompositeController.setEnabled(!listenToSelectionChange);
viewer.getTree().setEnabled(true);
refreshTree();