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
.Menu
;
27 import org
.eclipse
.swt
.widgets
.Text
;
28 import org
.eclipse
.ui
.IViewPart
;
29 import org
.eclipse
.ui
.IWorkbenchPage
;
30 import org
.eclipse
.ui
.PartInitException
;
31 import org
.eclipse
.ui
.menus
.WorkbenchWindowControlContribution
;
33 import eu
.etaxonomy
.taxeditor
.model
.ImageResources
;
34 import eu
.etaxonomy
.taxeditor
.model
.Resources
;
35 import eu
.etaxonomy
.taxeditor
.navigation
.internal
.TaxeditorNavigationPlugin
;
42 public class SearchBar
extends WorkbenchWindowControlContribution
{
43 private static final Logger logger
= Logger
.getLogger(SearchBar
.class);
44 private Text text_search
;
45 private Button button_search
;
48 private String defaultText
= "Use \"*\" for wildcard searching";
49 private Button button_configure
;
52 protected Control
createControl(Composite parent
) {
53 //parent.setLayout(new FillLayout());
55 Composite composite
= new Composite(parent
, SWT
.NONE
);
56 final GridLayout gridLayout
= new GridLayout();
57 gridLayout
.numColumns
= 3;
58 gridLayout
.marginWidth
= 0;
59 gridLayout
.marginHeight
= 0;
60 gridLayout
.verticalSpacing
= 0;
61 gridLayout
.horizontalSpacing
= 0;
62 composite
.setLayout(gridLayout
);
63 // FIXME we have this here for debugging purposes, remove color once the layout of the search bar is correct
64 composite
.setBackground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
66 text_search
= new Text(composite
, SWT
.SEARCH
);
67 GridData gridData
= new GridData(SWT
.FILL
, SWT
.FILL
, true, true);
69 text_search
.setLayoutData(gridData
);
70 text_search
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
71 text_search
.setText(defaultText
);
73 text_search
.addFocusListener(new FocusListener() {
75 public void focusGained(FocusEvent e
) {
76 text_search
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOCUS
));
77 text_search
.setText("");
80 public void focusLost(FocusEvent e
) {
81 if (text_search
.getText() == "") {
82 text_search
.setForeground(Resources
.getColor(Resources
.SEARCH_VIEW_FOREGROUND
));
83 text_search
.setText(defaultText
);
87 text_search
.addKeyListener(new KeyAdapter() {
88 public void keyReleased(KeyEvent e
) {
91 openSearchResultsView(text_search
);
93 setSearchButtonEnabled();
98 button_configure
= new Button(composite
, SWT
.DROP_DOWN
);
99 button_configure
.setImage(ImageResources
.getImage(ImageResources
.MOVE_ICON
));
101 button_search
= new Button(composite
, SWT
.PUSH
);
102 button_search
.setText("Search");
103 button_search
.setEnabled(false);
104 button_search
.addMouseListener(new MouseAdapter() {
106 // Populate search results resultsTable after clicking button
107 public void mouseUp(MouseEvent e
) {
108 openSearchResultsView(text_search
);
114 protected void setSearchButtonEnabled() {
115 if (text_search
.getText().length() == 0) {
116 button_search
.setEnabled(false);
118 button_search
.setEnabled(true);
122 private void openSearchResultsView(Text searchText
) {
123 if(searchText
.getText().length() > 0){
125 logger
.info("Opening search results window " + srv
);
127 IViewPart resultsView
= TaxeditorNavigationPlugin
.getDefault().getWorkbench()
128 .getActiveWorkbenchWindow().getActivePage().showView(SearchResultView
.ID
,
129 srv
, IWorkbenchPage
.VIEW_ACTIVATE
);
130 ((SearchResultView
) resultsView
).performSearch(searchText
.getText());
131 } catch (PartInitException e
) {
132 logger
.error("Error opening search result.", e
);