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.objectfactory.Components;
38 import info.magnolia.ui.api.context.UiContext;
39 import info.magnolia.ui.api.event.AdmincentralEventBus;
40 import info.magnolia.ui.api.event.ChooseDialogEventBus;
41 import info.magnolia.ui.api.event.ContentChangedEvent;
42 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
43 import info.magnolia.ui.form.field.factory.AbstractFieldFactory;
44 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
45 import info.magnolia.ui.vaadin.integration.contentconnector.DefaultContentConnector;
46 import info.magnolia.ui.workbench.WorkbenchPresenter;
47
48 import javax.inject.Inject;
49 import javax.inject.Named;
50
51 import com.vaadin.v7.data.Item;
52 import com.vaadin.v7.ui.Field;
53
54
55
56
57 public class WorkbenchFieldFactory extends AbstractFieldFactory<WorkbenchFieldDefinition, Object> {
58
59 private final WorkbenchFieldDefinition definition;
60
61 private final WorkbenchPresenter workbenchPresenter;
62 private final ContentConnector contentConnector;
63
64 private final EventBus chooseDialogEventBus;
65 private final EventBus admincentralEventBus;
66
67 @Inject
68 public WorkbenchFieldFactory(
69 WorkbenchFieldDefinition definition, Item relatedFieldItem, UiContext uiContext, I18NAuthoringSupport i18nAuthoringSupport,
70 WorkbenchPresenter workbenchPresenter,
71 ContentConnector contentConnector,
72 @Named(ChooseDialogEventBus.NAME) EventBus chooseDialogEventBus,
73 @Named(AdmincentralEventBus.NAME) EventBus admincentralEventBus) {
74
75 super(definition, relatedFieldItem, uiContext, i18nAuthoringSupport);
76 this.definition = definition;
77 this.workbenchPresenter = workbenchPresenter;
78 this.contentConnector = contentConnector;
79 this.chooseDialogEventBus = chooseDialogEventBus;
80 this.admincentralEventBus = admincentralEventBus;
81 }
82
83
84
85
86 @Deprecated
87 public WorkbenchFieldFactory(WorkbenchFieldDefinition definition, Item relatedFieldItem, WorkbenchPresenter workbenchPresenter, ContentConnector contentConnector, @Named(ChooseDialogEventBus.NAME) EventBus chooseDialogEventBus, @Named(AdmincentralEventBus.NAME) EventBus admincentralEventBus) {
88 this(definition, relatedFieldItem, null, Components.getComponent(I18NAuthoringSupport.class), workbenchPresenter, contentConnector, chooseDialogEventBus, admincentralEventBus);
89 }
90
91
92
93
94
95 @Deprecated
96 public WorkbenchFieldFactory(WorkbenchFieldDefinition definition, Item relatedFieldItem, WorkbenchPresenter workbenchPresenter, @Named(ChooseDialogEventBus.NAME) EventBus eventBus) {
97 this(definition, relatedFieldItem, null, Components.getComponent(I18NAuthoringSupport.class), workbenchPresenter, new DefaultContentConnector(), eventBus, null);
98 }
99
100 @Override
101 protected Field<Object> createFieldComponent() {
102 final WorkbenchField workbenchField = new WorkbenchField(definition.getWorkbench(), definition.getImageProvider(), workbenchPresenter, chooseDialogEventBus);
103
104
105
106 if (admincentralEventBus != null) {
107 admincentralEventBus.addHandler(ContentChangedEvent.class, new ContentChangedEvent.Handler() {
108
109 @Override
110 public void onContentChanged(ContentChangedEvent event) {
111 Object itemId = event.getItemId();
112 if (contentConnector.canHandleItem(itemId)) {
113 workbenchField.getPresenter().refresh();
114 workbenchField.getPresenter().select(itemId);
115 }
116 }
117 });
118 }
119 return workbenchField;
120 }
121 }