3 * Copyright (C) 2013 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.view
.derivateSearch
;
12 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
13 import org
.eclipse
.swt
.widgets
.Composite
;
14 import org
.eclipse
.ui
.IMemento
;
15 import org
.eclipse
.ui
.part
.ViewPart
;
17 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
18 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
19 import eu
.etaxonomy
.taxeditor
.model
.IContextListener
;
20 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
23 * This view allows to search for and filter {@link SpecimenOrObservationBase}s and display
24 * the results in a list. The results can be selected and opened in an editor.
26 public class DerivateSearchView
extends ViewPart
implements IContextListener
{
28 public static final String ID
= "eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchView";
29 private DerivateSearchCompositeController derivateSearchCompositeController
;
30 private ConversationHolder conversationHolder
;
33 * Constructs a new DerivateSearchView and registers it to listen to context changes
35 public DerivateSearchView() {
36 CdmStore
.getContextManager().addContextListener(this);
40 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
43 public void createPartControl(Composite parent
) {
44 derivateSearchCompositeController
= new DerivateSearchCompositeController(parent
);
45 getSite().setSelectionProvider(derivateSearchCompositeController
.getResultViewer());
46 derivateSearchCompositeController
.setEnabled(CdmStore
.isActive());
50 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
53 public void setFocus() {
54 derivateSearchCompositeController
.setFocus();
55 //make sure to bind again if maybe in another view the conversation was unbound
56 if(getConversationHolder()!=null && !getConversationHolder().isBound()){
57 getConversationHolder().bind();
62 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
65 public void contextAboutToStop(IMemento memento
, IProgressMonitor monitor
) {
69 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
72 public void contextStop(IMemento memento
, IProgressMonitor monitor
) {
73 derivateSearchCompositeController
.setEnabled(false);
74 derivateSearchCompositeController
.reset();
78 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
81 public void contextStart(IMemento memento
, IProgressMonitor monitor
) {
82 derivateSearchCompositeController
.setEnabled(true);
86 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
89 public void contextRefresh(IProgressMonitor monitor
) {
93 private void initConversation(){
94 if(conversationHolder
==null){
95 conversationHolder
= CdmStore
.createConversation();
100 * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
103 public void workbenchShutdown(IMemento memento
, IProgressMonitor monitor
) {
104 if(getConversationHolder()!=null && getConversationHolder().isBound() && !getConversationHolder().isClosed()) {
105 getConversationHolder().close();
110 * @return the conversationHolder
112 public ConversationHolder
getConversationHolder() {
113 if(CdmStore
.isActive() && conversationHolder
==null){
116 return conversationHolder
;