1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.workbench.contenttool.search;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.ui.api.view.View;
38 import info.magnolia.ui.workbench.WorkbenchPresenter;
39 import info.magnolia.ui.workbench.contenttool.ContentToolPresenter;
40 import info.magnolia.ui.workbench.event.QueryStatementChangedEvent;
41 import info.magnolia.ui.workbench.event.SearchEvent;
42 import info.magnolia.ui.workbench.list.ListPresenterDefinition;
43 import info.magnolia.ui.workbench.search.SearchPresenterDefinition;
44
45 import javax.inject.Inject;
46
47 import org.apache.commons.lang3.StringUtils;
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
50
51
52
53
54 public class SearchContentToolPresenter implements ContentToolPresenter, SearchContentToolView.Listener {
55
56 private static final Logger log = LoggerFactory.getLogger(SearchContentToolPresenter.class);
57
58 private EventBus eventBus;
59 private SearchContentToolView view;
60 private WorkbenchPresenter workbenchPresenter;
61
62 @Inject
63 public SearchContentToolPresenter(
64 WorkbenchPresenter workbenchPresenter,
65 SearchContentToolView view,
66 EventBus eventBus) {
67 this.view = view;
68 this.eventBus = eventBus;
69 this.workbenchPresenter = workbenchPresenter;
70 }
71
72 @Override
73 public View start() {
74 view.setListener(this);
75
76 eventBus.addHandler(QueryStatementChangedEvent.class, new QueryStatementChangedEvent.Handler() {
77 @Override
78 public void onSetSearchQueryEvent(QueryStatementChangedEvent event) {
79 view.setSearchQuery(event.getQuery());
80 }
81 });
82
83 return view;
84 }
85
86 @Override
87 public void onSearch(String searchQuery) {
88 if (workbenchPresenter.hasViewType(SearchPresenterDefinition.VIEW_TYPE)) {
89 if (StringUtils.isNotBlank(searchQuery)) {
90 eventBus.fireEvent(new SearchEvent(searchQuery));
91 } else {
92
93 workbenchPresenter.onViewTypeChanged(ListPresenterDefinition.VIEW_TYPE);
94 }
95 } else {
96 log.warn("Workbench view triggered search although the search view type is not configured in this workbench {}", this);
97 }
98 }
99 }