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