2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.navigation
.search
;
12 import java
.util
.List
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.eclipse
.jface
.action
.GroupMarker
;
16 import org
.eclipse
.jface
.action
.MenuManager
;
17 import org
.eclipse
.jface
.viewers
.ArrayContentProvider
;
18 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
19 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
20 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
21 import org
.eclipse
.jface
.viewers
.TableViewer
;
22 import org
.eclipse
.swt
.SWT
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
24 import org
.eclipse
.swt
.widgets
.Control
;
25 import org
.eclipse
.swt
.widgets
.Menu
;
26 import org
.eclipse
.ui
.IWorkbenchActionConstants
;
27 import org
.eclipse
.ui
.part
.ViewPart
;
29 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
30 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
31 import eu
.etaxonomy
.cdm
.api
.service
.config
.ITaxonServiceConfigurator
;
32 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
33 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
34 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
35 import eu
.etaxonomy
.taxeditor
.navigation
.NavigationUtil
;
36 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
44 public class SearchResultView
extends ViewPart
implements IConversationEnabled
{
45 private static final Logger logger
= Logger
46 .getLogger(SearchResultView
.class);
48 public static final String ID
=
49 "eu.etaxonomy.taxeditor.navigation.search.searchResultView"; //$NON-NLS-1$
51 private TableViewer resultViewer
;
53 private String queryString
;
55 private ConversationHolder conversation
;
57 private ITaxonServiceConfigurator configurator
;
61 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
64 public void createPartControl(Composite parent
) {
65 conversation
= CdmStore
.NewTransactionalConversation();
67 resultViewer
= new TableViewer(parent
, SWT
.BORDER
);
68 resultViewer
.setContentProvider(new ArrayContentProvider());
69 resultViewer
.setLabelProvider(new SearchResultLabelProvider());
70 resultViewer
.addDoubleClickListener(new IDoubleClickListener() {
71 public void doubleClick(DoubleClickEvent event
) {
72 Object selection
= ((StructuredSelection
) event
.getSelection()).getFirstElement();
74 NavigationUtil
.openSearch(selection
);
78 // register context menu
79 MenuManager menuMgr
= new MenuManager();
80 menuMgr
.add(new GroupMarker(IWorkbenchActionConstants
.MB_ADDITIONS
));
81 getSite().registerContextMenu(menuMgr
, resultViewer
);
83 Control control
= resultViewer
.getControl();
84 Menu menu
= menuMgr
.createContextMenu(control
);
85 control
.setMenu(menu
);
89 protected void performSearch(String queryString
) {
90 List searchResult
= CdmStore
.searchTaxaByName(queryString
);
92 resultViewer
.setInput(searchResult
);
93 setPartName("Search: '" + queryString
+ "'");
96 protected void performSearch(ITaxonServiceConfigurator configurator
) {
97 List searchResult
= CdmStore
.findNames(configurator
);
99 resultViewer
.setInput(searchResult
);
100 setPartName("Search: '" + configurator
.getSearchString() + "'");
102 this.configurator
= configurator
;
106 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
109 public void setFocus() {
111 // pass focus to resultViewer
112 resultViewer
.getControl().setFocus();
116 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
118 public ConversationHolder
getConversationHolder() {
119 return this.conversation
;
123 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
125 public void update(CdmDataChangeMap changeEvents
) {
126 // TODO Auto-generated method stub