(no commit message)
[taxeditor.git] / taxeditor-navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / search / SearchResultView.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9
10 package eu.etaxonomy.taxeditor.navigation.search;
11
12 import java.util.List;
13
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;
28
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;
37
38 /**
39 * @author p.ciardelli
40 * @created 19.01.2009
41 * @version 1.0
42 * @author n.hoffmann
43 */
44 public class SearchResultView extends ViewPart implements IConversationEnabled{
45 private static final Logger logger = Logger
46 .getLogger(SearchResultView.class);
47
48 public static final String ID =
49 "eu.etaxonomy.taxeditor.navigation.search.searchResultView"; //$NON-NLS-1$
50
51 private TableViewer resultViewer;
52
53 private String queryString;
54
55 private ConversationHolder conversation;
56
57 private ITaxonServiceConfigurator configurator;
58
59
60 /* (non-Javadoc)
61 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
62 */
63 @Override
64 public void createPartControl(Composite parent) {
65 conversation = CdmStore.NewTransactionalConversation();
66
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();
73
74 NavigationUtil.openSearch(selection);
75 }
76 });
77
78 // register context menu
79 MenuManager menuMgr = new MenuManager();
80 menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
81 getSite().registerContextMenu(menuMgr, resultViewer);
82
83 Control control = resultViewer.getControl();
84 Menu menu = menuMgr.createContextMenu(control);
85 control.setMenu(menu);
86 }
87
88 @Deprecated
89 protected void performSearch(String queryString) {
90 List searchResult = CdmStore.searchTaxaByName(queryString);
91
92 resultViewer.setInput(searchResult);
93 setPartName("Search: '" + queryString + "'");
94 }
95
96 protected void performSearch(ITaxonServiceConfigurator configurator) {
97 List searchResult = CdmStore.findNames(configurator);
98
99 resultViewer.setInput(searchResult);
100 setPartName("Search: '" + configurator.getSearchString() + "'");
101
102 this.configurator = configurator;
103 }
104
105 /* (non-Javadoc)
106 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
107 */
108 @Override
109 public void setFocus() {
110 conversation.bind();
111 // pass focus to resultViewer
112 resultViewer.getControl().setFocus();
113 }
114
115 /* (non-Javadoc)
116 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
117 */
118 public ConversationHolder getConversationHolder() {
119 return this.conversation;
120 }
121
122 /* (non-Javadoc)
123 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
124 */
125 public void update(CdmDataChangeMap changeEvents) {
126 // TODO Auto-generated method stub
127
128 }
129
130 }