+++ /dev/null
-// $Id$
-/**
-* Copyright (C) 2015 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.view.derivative;
-
-import java.util.Collection;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-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;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.ISaveablePart2;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchPart;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
-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;
-
-/**
- * @author pplitzner
- * @date Oct 7, 2015
- *
- */
-public class OccurrenceView extends AbstractCdmViewPart implements IPartContentHasDetails, ISaveablePart2{
-
- public static String ID = "eu.etaxonomy.taxeditor.view.derivative.OccurrenceView";
-
- private TreeViewer viewer;
- private DerivateContentProvider contentProvider;
- private DerivateLabelProvider labelProvider;
-
- private ISelectionService selectionService;
-
- private ConversationHolder conversation;
-
- private boolean dirty;
-
-
- public OccurrenceView() {
- if(conversation==null && CdmStore.isActive()){
- conversation = CdmStore.createConversation();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void createPartControl(Composite parent) {
-
- //listen to selection changes
- selectionService = getSite().getWorkbenchWindow().getSelectionService();
- selectionService.addSelectionListener(this);
-
- //---tree viewer---
- viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
- GridData gridDataTree = new GridData();
- gridDataTree.horizontalAlignment = GridData.FILL;
- gridDataTree.verticalAlignment = GridData.FILL;
- gridDataTree.grabExcessVerticalSpace = true;
- gridDataTree.grabExcessHorizontalSpace = true;
- viewer.getTree().setLayoutData(gridDataTree);
- contentProvider = new DerivateContentProvider();
- viewer.setContentProvider(contentProvider);
- labelProvider = new DerivateLabelProvider();
- viewer.setLabelProvider(labelProvider);
- viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
- // Propagate selection from viewer
- getSite().setSelectionProvider(viewer);
-
- //create context menu
- MenuManager menuManager = new MenuManager();
- getSite().registerContextMenu(menuManager, viewer);
- Control control = viewer.getControl();
- Menu menu = menuManager.createContextMenu(control);
- control.setMenu(menu);
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setFocus() {
- if(!conversation.isBound()){
- conversation.bind();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void dispose() {
- selectionService.removeSelectionListener(this);
- if(conversation!=null){
- conversation.close();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if(selection instanceof IStructuredSelection){
- Object selectedElement = ((IStructuredSelection) selection).getFirstElement();
- if(selectedElement instanceof Taxon){
- Collection<SpecimenOrObservationBase> fieldUnits = CdmStore.getService(IOccurrenceService.class).listFieldUnitsByAssociatedTaxon((Taxon) selectedElement, null, null);
- viewer.setInput(fieldUnits);
- }
- }
- }
-
- @Override
- public boolean onComplete() {
- return false;
- }
-
- @Override
- public Viewer getViewer() {
- return viewer;
- }
-
- @Override
- public void createViewer(Composite parent) {
- }
-
- @Override
- public void changed(Object object) {
- this.dirty = true;
- firePropertyChange(PROP_DIRTY);
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- if(conversation.isBound()){
-// input.merge(); TODO remote merging
- conversation.commit(true);
- }
- this.dirty = false;
- firePropertyChange(PROP_DIRTY);
- }
-
- @Override
- public void doSaveAs() {
- doSave(new NullProgressMonitor());
- }
-
- @Override
- public boolean isDirty() {
- return this.dirty;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public boolean isSaveOnCloseNeeded() {
- return isDirty();
- }
-
- @Override
- public int promptToSaveOnClose() {
- return ISaveablePart2.DEFAULT;
- }
-}