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.contentapp.field;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.ui.imageprovider.definition.ImageProviderDefinition;
38 import info.magnolia.ui.workbench.WorkbenchPresenter;
39 import info.magnolia.ui.workbench.WorkbenchView;
40 import info.magnolia.ui.workbench.definition.WorkbenchDefinition;
41 import info.magnolia.ui.workbench.event.SearchEvent;
42 import info.magnolia.ui.workbench.event.SelectionChangedEvent;
43 import info.magnolia.ui.workbench.tree.TreePresenterDefinition;
44
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48 import com.vaadin.data.Item;
49 import com.vaadin.ui.Component;
50 import com.vaadin.ui.CustomField;
51
52
53
54
55
56 public class WorkbenchField extends CustomField<Object> {
57
58 private static final String DEFAULT_HEIGHT = "400px";
59
60 private Logger log = LoggerFactory.getLogger(getClass());
61
62 private ImageProviderDefinition imageProvider;
63
64 private WorkbenchDefinition workbenchDefinition;
65
66 private WorkbenchPresenter presenter;
67
68 private EventBus workbenchEventbus;
69
70 private WorkbenchView view;
71
72 public WorkbenchField(WorkbenchDefinition definition, ImageProviderDefinition imageProvider, WorkbenchPresenter presenter, EventBus eventBus) {
73 this.workbenchDefinition = definition;
74 this.imageProvider = imageProvider;
75 this.presenter = presenter;
76 this.workbenchEventbus = eventBus;
77 }
78
79 @Override
80 protected Component initContent() {
81 this.view = presenter.start(workbenchDefinition, imageProvider, workbenchEventbus);
82 this.view.setViewType(TreePresenterDefinition.VIEW_TYPE);
83 this.view.asVaadinComponent().setHeight(DEFAULT_HEIGHT);
84 presenter.select(getValue());
85
86 workbenchEventbus.addHandler(SelectionChangedEvent.class, new SelectionChangedEvent.Handler() {
87 @Override
88 public void onSelectionChanged(SelectionChangedEvent event) {
89 setValue(event.getFirstItemId(), false);
90 }
91 });
92
93 workbenchEventbus.addHandler(SearchEvent.class, new SearchEvent.Handler() {
94 @Override
95 public void onSearch(SearchEvent event) {
96 presenter.doSearch(event.getSearchExpression());
97 }
98 });
99
100 return this.view.asVaadinComponent();
101 }
102
103 @Override
104 public void setPropertyDataSource(com.vaadin.data.Property newDataSource) {
105 super.setPropertyDataSource(null);
106 }
107
108 @Override
109 public Class<? extends Item> getType() {
110 return Item.class;
111 }
112
113 public WorkbenchPresenter getPresenter() {
114 return presenter;
115 }
116 }