3 * Copyright (C) 2007 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.
11 package eu
.etaxonomy
.taxeditor
.navigation
.search
;
13 import org
.apache
.log4j
.Logger
;
14 import org
.eclipse
.swt
.SWT
;
15 import org
.eclipse
.swt
.events
.FocusEvent
;
16 import org
.eclipse
.swt
.events
.FocusListener
;
17 import org
.eclipse
.swt
.events
.KeyAdapter
;
18 import org
.eclipse
.swt
.events
.KeyEvent
;
19 import org
.eclipse
.swt
.events
.MouseAdapter
;
20 import org
.eclipse
.swt
.events
.MouseEvent
;
21 import org
.eclipse
.swt
.layout
.GridData
;
22 import org
.eclipse
.swt
.layout
.GridLayout
;
23 import org
.eclipse
.swt
.widgets
.Button
;
24 import org
.eclipse
.swt
.widgets
.Composite
;
25 import org
.eclipse
.swt
.widgets
.Control
;
26 import org
.eclipse
.swt
.widgets
.Text
;
27 import org
.eclipse
.ui
.IViewPart
;
28 import org
.eclipse
.ui
.IWorkbenchPage
;
29 import org
.eclipse
.ui
.PartInitException
;
30 import org
.eclipse
.ui
.menus
.WorkbenchWindowControlContribution
;
32 import eu
.etaxonomy
.taxeditor
.navigation
.internal
.TaxeditorNavigationPlugin
;
33 import eu
.etaxonomy
.taxeditor
.store
.model
.Resources
;
40 public class SearchBar
extends WorkbenchWindowControlContribution
{
41 private static final Logger logger
= Logger
.getLogger(SearchBar
.class);
42 private Composite searchComposite
;
43 private Text searchText
;
44 private Button searchButton
;
47 private String defaultText
= "Use \"*\" for wildcard searching";
50 protected Control
createControl(Composite parent
) {
51 //parent.setLayout(new FillLayout());
53 searchComposite
= new Composite(parent
, SWT
.NONE
);
54 final GridLayout gridLayout
= new GridLayout();
55 gridLayout
.numColumns
= 2;
56 gridLayout
.marginWidth
= 0;
57 gridLayout
.marginHeight
= 0;
58 gridLayout
.verticalSpacing
= 0;
59 gridLayout
.horizontalSpacing
= 0;
60 searchComposite
.setLayout(gridLayout
);
61 // FIXME we have this here for debugging purposes, remove color once the layout of the search bar is correct
62 searchComposite
.setBackground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
64 searchText
= new Text(searchComposite
, SWT
.SEARCH
);
65 GridData gridData
= new GridData(SWT
.FILL
, SWT
.FILL
, true, true);
67 searchText
.setLayoutData(gridData
);
68 searchText
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
69 searchText
.setText(defaultText
);
71 searchText
.addFocusListener(new FocusListener() {
73 public void focusGained(FocusEvent e
) {
74 searchText
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOCUS
));
75 searchText
.setText("");
78 public void focusLost(FocusEvent e
) {
79 if (searchText
.getText() == "") {
80 searchText
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
81 searchText
.setText(defaultText
);
85 searchText
.addKeyListener(new KeyAdapter() {
86 public void keyReleased(KeyEvent e
) {
89 openSearchResultsView(searchText
);
91 setSearchButtonEnabled();
96 searchButton
= new Button(searchComposite
, SWT
.NONE
);
97 searchButton
.setText("Search");
98 searchButton
.setEnabled(false);
99 searchButton
.addMouseListener(new MouseAdapter() {
101 // Populate search results resultsTable after clicking button
102 public void mouseUp(MouseEvent e
) {
103 openSearchResultsView(searchText
);
106 return searchComposite
;
109 protected void setSearchButtonEnabled() {
110 if (searchText
.getText().length() == 0) {
111 searchButton
.setEnabled(false);
113 searchButton
.setEnabled(true);
117 private void openSearchResultsView(Text searchText
) {
118 if(searchText
.getText().length() > 0){
120 logger
.info("Opening search results window " + srv
);
122 IViewPart resultsView
= TaxeditorNavigationPlugin
.getDefault().getWorkbench()
123 .getActiveWorkbenchWindow().getActivePage().showView(SearchResultView
.ID
,
124 srv
, IWorkbenchPage
.VIEW_ACTIVATE
);
125 ((SearchResultView
) resultsView
).performSearch(searchText
.getText());
126 } catch (PartInitException e
) {
127 logger
.error("Error opening search result.", e
);