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.framework.ioc.AdmincentralFlavour;
38 import info.magnolia.ui.imageprovider.definition.ImageProviderDefinition;
39 import info.magnolia.ui.workbench.WorkbenchPresenter;
40 import info.magnolia.ui.workbench.WorkbenchView;
41 import info.magnolia.ui.workbench.definition.ConfiguredWorkbenchDefinition;
42 import info.magnolia.ui.workbench.definition.WorkbenchDefinition;
43 import info.magnolia.ui.workbench.event.SearchEvent;
44 import info.magnolia.ui.workbench.event.SelectionChangedEvent;
45
46 import com.vaadin.ui.Component;
47 import com.vaadin.v7.data.Item;
48 import com.vaadin.v7.ui.CustomField;
49
50
51
52
53
54 public class WorkbenchField extends CustomField<Object> {
55
56 private static final String DEFAULT_HEIGHT = "400px";
57
58 private ImageProviderDefinition imageProvider;
59
60 private WorkbenchDefinition workbenchDefinition;
61
62 private WorkbenchPresenter presenter;
63
64 private EventBus workbenchEventbus;
65
66 private WorkbenchView view;
67
68 public WorkbenchField(WorkbenchDefinition definition, ImageProviderDefinition imageProvider, WorkbenchPresenter presenter, EventBus eventBus) {
69 this.workbenchDefinition = definition;
70 this.imageProvider = imageProvider;
71 this.presenter = presenter;
72 this.workbenchEventbus = eventBus;
73 }
74
75 @Override
76 protected Component initContent() {
77 ((ConfiguredWorkbenchDefinition) workbenchDefinition).setDialogWorkbench(true);
78 view = presenter.start(workbenchDefinition, imageProvider, workbenchEventbus);
79
80 if (AdmincentralFlavour.get().isM5()) {
81 view.asVaadinComponent().setHeight(DEFAULT_HEIGHT);
82 }
83
84 presenter.select(getValue());
85
86 workbenchEventbus.addHandler(SelectionChangedEvent.class, event -> setValue(event.getFirstItemId(), false));
87
88 workbenchEventbus.addHandler(SearchEvent.class, event -> presenter.doSearch(event.getSearchExpression()));
89
90 return view.asVaadinComponent();
91 }
92
93 @Override
94 public void setPropertyDataSource(com.vaadin.v7.data.Property newDataSource) {
95 super.setPropertyDataSource(null);
96 }
97
98 @Override
99 public Class<? extends Item> getType() {
100 return Item.class;
101 }
102
103 public WorkbenchPresenter getPresenter() {
104 return presenter;
105 }
106 }