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
;
12 import org
.apache
.log4j
.Logger
;
13 import org
.eclipse
.jface
.action
.IToolBarManager
;
14 import org
.eclipse
.jface
.viewers
.ArrayContentProvider
;
15 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
16 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
17 import org
.eclipse
.jface
.viewers
.LabelProvider
;
18 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
19 import org
.eclipse
.jface
.viewers
.TableViewer
;
20 import org
.eclipse
.swt
.SWT
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.eclipse
.ui
.part
.ViewPart
;
24 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
25 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
26 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
27 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
28 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
29 import eu
.etaxonomy
.taxeditor
.controller
.EditorController
;
36 public class SearchResultView
extends ViewPart
{
37 private static final Logger logger
= Logger
38 .getLogger(SearchResultView
.class);
40 public static final String ID
= "eu.etaxonomy.taxeditor.navigation.searchresultview"; //$NON-NLS-1$
42 private TableViewer resultViewer
;
45 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
48 public void createPartControl(Composite parent
) {
49 resultViewer
= new TableViewer(parent
, SWT
.BORDER
);
50 resultViewer
.setContentProvider(new ArrayContentProvider());
51 resultViewer
.setLabelProvider(new LabelProvider() {
52 public String
getText(Object element
) {
53 if (element
instanceof IdentifiableEntity
) {
54 // TODO we want to stylize the text (color, font-style etc.)
55 if(element
instanceof Taxon
){
56 return "Taxon: " + ((TaxonBase
) element
).getTitleCache();
58 return "Synonym: " + ((TaxonBase
) element
).getTitleCache();
61 return super.getText(element
);
64 resultViewer
.addDoubleClickListener(new IDoubleClickListener() {
65 public void doubleClick(DoubleClickEvent event
) {
66 TaxonBase taxonBase
= null;
69 IdentifiableEntity selection
= (IdentifiableEntity
) ((StructuredSelection
) event
.getSelection()).getFirstElement();
71 if(selection
instanceof TaxonBase
){
72 openTaxonEditor((TaxonBase
) selection
);
74 } catch (Exception e
) {
75 logger
.error("Error opening editor from search result", e
);
81 protected void openTaxonEditor(TaxonBase taxonBase
) {
84 if (taxonBase
instanceof Synonym
) {
85 // TODO: in case of pro parte synonym or any other where we might have multiple
86 // accepted taxa we have to provide a mechanism that can deal with that
87 // TODO set focus to the synonym
88 taxon
= (Taxon
) ((Synonym
) taxonBase
).getAcceptedTaxa().toArray()[0];
90 taxon
= (Taxon
) taxonBase
;
93 // Open a taxon editor
94 EditorController
.open(taxon
);
99 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
102 public void setFocus() {
103 // TODO Auto-generated method stub
106 private void initializeToolBar() {
107 IToolBarManager toolBarManager
= getViewSite().getActionBars().getToolBarManager();
110 public void setResult(SearchResult searchResult
) {
111 resultViewer
.setInput(searchResult
);
112 setPartName("Search: '" + searchResult
.getSearchString() + "'");