X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/eecb44d0c923668da90c109fa9813c947d5e0c5a..db4344450fc82afb4021ca0e0bda77b6658047d9:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchView.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchView.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchView.java index 6da90e1e3..8a14a5a73 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchView.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchView.java @@ -9,25 +9,36 @@ */ package eu.etaxonomy.taxeditor.view.derivateSearch; +import java.util.Collection; +import java.util.List; +import java.util.Map; + import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.action.MenuManager; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IMemento; import org.eclipse.ui.part.ViewPart; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.taxeditor.model.IContextListener; +import eu.etaxonomy.taxeditor.session.ICdmEntitySession; +import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; import eu.etaxonomy.taxeditor.store.CdmStore; /** * This view allows to search for and filter {@link SpecimenOrObservationBase}s and display * the results in a list. The results can be selected and opened in an editor. */ -public class DerivateSearchView extends ViewPart implements IContextListener { +public class DerivateSearchView extends ViewPart implements IContextListener, ICdmEntitySessionEnabled { public static final String ID = "eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchView"; private DerivateSearchCompositeController derivateSearchCompositeController; private ConversationHolder conversationHolder; + private ICdmEntitySession cdmEntitySession; /** * Constructs a new DerivateSearchView and registers it to listen to context changes @@ -36,19 +47,21 @@ public class DerivateSearchView extends ViewPart implements IContextListener { CdmStore.getContextManager().addContextListener(this); } - /* (non-Javadoc) - * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) - */ @Override public void createPartControl(Composite parent) { + derivateSearchCompositeController = new DerivateSearchCompositeController(parent, this); getSite().setSelectionProvider(derivateSearchCompositeController.getResultViewer()); derivateSearchCompositeController.setEnabled(CdmStore.isActive()); + + //create context menu + MenuManager menuManager = new MenuManager(); + getSite().registerContextMenu(menuManager, derivateSearchCompositeController.getResultViewer()); + Control control = derivateSearchCompositeController.getResultViewer().getControl(); + Menu menu = menuManager.createContextMenu(control); + control.setMenu(menu); } - /* (non-Javadoc) - * @see org.eclipse.ui.part.WorkbenchPart#setFocus() - */ @Override public void setFocus() { derivateSearchCompositeController.setFocus(); @@ -56,38 +69,36 @@ public class DerivateSearchView extends ViewPart implements IContextListener { if(getConversationHolder()!=null && !getConversationHolder().isClosed() && !getConversationHolder().isBound()){ getConversationHolder().bind(); } + if(getCdmEntitySession() != null) { + getCdmEntitySession().bind(); + } } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) { } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void contextStop(IMemento memento, IProgressMonitor monitor) { derivateSearchCompositeController.setEnabled(false); derivateSearchCompositeController.reset(); } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void contextStart(IMemento memento, IProgressMonitor monitor) { derivateSearchCompositeController.setEnabled(true); } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void contextRefresh(IProgressMonitor monitor) { initConversation(); + initSession(); + } + + private void initSession() { + if(CdmStore.isActive()) { + cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true); + } } private void initConversation(){ @@ -97,20 +108,55 @@ public class DerivateSearchView extends ViewPart implements IContextListener { } } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor) - */ @Override public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) { } - /** - * @return the conversationHolder - */ public ConversationHolder getConversationHolder() { if(CdmStore.isActive() && conversationHolder==null){ initConversation(); } return conversationHolder; } + + + @Override + public void dispose() { + if(conversationHolder!=null){ + conversationHolder.close(); + } + + if(cdmEntitySession != null) { + cdmEntitySession.dispose(); + } + super.dispose(); + } + + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession() + */ + @Override + public ICdmEntitySession getCdmEntitySession() { + initSession(); + return cdmEntitySession; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities() + */ + @Override + public Collection getRootEntities() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap() + */ + @Override + public Map> getPropertyPathsMap() { + // TODO Auto-generated method stub + return null; + } }