Project

General

Profile

Download (4.16 KB) Statistics
| Branch: | Tag: | Revision:
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.BaseLabelProvider;
19
import org.eclipse.jface.viewers.CellLabelProvider;
20
import org.eclipse.jface.viewers.DoubleClickEvent;
21
import org.eclipse.jface.viewers.IDoubleClickListener;
22
import org.eclipse.jface.viewers.ILabelProvider;
23
import org.eclipse.jface.viewers.ITableLabelProvider;
24
import org.eclipse.jface.viewers.StructuredSelection;
25
import org.eclipse.jface.viewers.TableViewer;
26
import org.eclipse.swt.SWT;
27
import org.eclipse.swt.widgets.Composite;
28
import org.eclipse.swt.widgets.Control;
29
import org.eclipse.swt.widgets.Menu;
30
import org.eclipse.ui.IWorkbenchActionConstants;
31
import org.eclipse.ui.part.ViewPart;
32

    
33
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
34
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
35
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
36
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
37
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
38
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
39
import eu.etaxonomy.taxeditor.store.CdmStore;
40

    
41
/**
42
 * @author p.ciardelli
43
 * @created 19.01.2009
44
 * @version 1.0
45
 * @author n.hoffmann
46
 */
47
public class SearchResultView extends ViewPart implements IConversationEnabled{
48
	private static final Logger logger = Logger
49
			.getLogger(SearchResultView.class);
50

    
51
	public static final String ID = "eu.etaxonomy.taxeditor.navigation.search.searchResultView"; //$NON-NLS-1$
52

    
53
	private TableViewer resultViewer;
54
	
55
	private String queryString;
56

    
57
	private ConversationHolder conversation;
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
				try {
73
					IdentifiableEntity<?> selection = (IdentifiableEntity<?>) ((StructuredSelection) event.getSelection()).getFirstElement();
74
					NavigationUtil.openEditor(selection);
75
				}catch (IllegalArgumentException e){
76
					// pass
77
				}catch (Exception e) {
78
					logger.warn("Could not open editor from search result.", e);
79
				}
80
			}
81
		});
82
		
83
		// register context menu
84
		MenuManager menuMgr = new MenuManager();
85
		menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
86
		getSite().registerContextMenu(menuMgr, resultViewer);
87

    
88
		Control control = resultViewer.getControl();
89
		Menu menu = menuMgr.createContextMenu(control);
90
		control.setMenu(menu);	
91
	}
92
	
93
	protected void performSearch(String queryString) {
94
		List searchResult = CdmStore.searchTaxaByName(queryString);
95
		
96
		resultViewer.setInput(searchResult); 
97
		setPartName("Search: '" + queryString + "'");
98
	}
99

    
100
	/* (non-Javadoc)
101
	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
102
	 */
103
	@Override
104
	public void setFocus() {
105
		conversation.bind();
106
		// pass focus to resultViewer
107
		resultViewer.getControl().setFocus();
108
	}
109

    
110
	/* (non-Javadoc)
111
	 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
112
	 */
113
	public ConversationHolder getConversationHolder() {
114
		return this.conversation;
115
	}
116

    
117
	/* (non-Javadoc)
118
	 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
119
	 */
120
	public void update(CdmDataChangeMap changeEvents) {
121
		// TODO Auto-generated method stub
122
		
123
	}
124

    
125
}
(3-3/3)