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.vaadin.gwt.client.postmessage;
35
36 import com.google.gwt.event.shared.EventBus;
37 import com.google.gwt.event.shared.SimpleEventBus;
38 import com.vaadin.client.ServerConnector;
39 import com.vaadin.client.communication.RpcProxy;
40 import com.vaadin.client.extensions.AbstractExtensionConnector;
41 import com.vaadin.shared.ui.Connect;
42 import info.magnolia.ui.vaadin.editor.PostMessageExtension;
43 import info.magnolia.ui.vaadin.gwt.client.editor.event.ComponentActionEvent;
44 import info.magnolia.ui.vaadin.gwt.client.editor.event.ComponentStartMoveEvent;
45 import info.magnolia.ui.vaadin.gwt.client.editor.event.ComponentStopMoveEvent;
46 import info.magnolia.ui.vaadin.gwt.client.editor.event.EditAreaEvent;
47 import info.magnolia.ui.vaadin.gwt.client.editor.event.EditComponentEvent;
48 import info.magnolia.ui.vaadin.gwt.client.editor.event.NewComponentEvent;
49 import info.magnolia.ui.vaadin.gwt.client.editor.event.SelectElementEvent;
50 import info.magnolia.ui.vaadin.gwt.client.editor.event.SortComponentEvent;
51 import info.magnolia.ui.vaadin.gwt.client.rpc.PageEditorClientRpc;
52 import info.magnolia.ui.vaadin.gwt.client.rpc.PageEditorServerRpc;
53 import info.magnolia.ui.vaadin.gwt.client.shared.AbstractElement;
54 import info.magnolia.ui.vaadin.gwt.client.shared.AreaElement;
55 import info.magnolia.ui.vaadin.gwt.client.shared.ComponentElement;
56 import info.magnolia.ui.vaadin.gwt.client.shared.PageElement;
57
58
59
60
61 @SuppressWarnings("serial")
62 @Connect(PostMessageExtension.class)
63 public class PostMessageHandlerConnector extends AbstractExtensionConnector {
64
65 PageEditorServerRpc rpc = RpcProxy.create(
66 PageEditorServerRpc.class, this);
67
68 private PostMessageHandler postMessageHandler;
69
70 private final EventBus eventBus = new SimpleEventBus();
71
72 @Override
73 protected void init() {
74 super.init();
75 postMessageHandler = new PostMessageHandler(eventBus);
76 eventBus.addHandler(SelectElementEvent.TYPE, event -> {
77 AbstractElement selectedElement = event.getElement();
78 if (selectedElement instanceof PageElement) {
79 rpc.selectPage((PageElement) selectedElement);
80 } else if (selectedElement instanceof AreaElement) {
81 rpc.selectArea((AreaElement) selectedElement);
82 } else if (selectedElement instanceof ComponentElement) {
83 rpc.selectComponent((ComponentElement) selectedElement);
84 }
85 });
86
87 eventBus.addHandler(NewComponentEvent.TYPE, newComponentEvent -> {
88 if (!getConnection().getMessageSender().hasActiveRequest()) {
89 rpc.newComponent(newComponentEvent.getParentAreaElement());
90 }
91 });
92
93 eventBus.addHandler(EditAreaEvent.TYPE, editAreaEvent -> {
94 if (!getConnection().getMessageSender().hasActiveRequest()) {
95 rpc.editArea(editAreaEvent.getAreaElement());
96 }
97 });
98
99 eventBus.addHandler(EditComponentEvent.TYPE, editComponentEvent -> {
100 if (!getConnection().getMessageSender().hasActiveRequest()) {
101 rpc.editComponent(editComponentEvent.getComponentElement());
102 }
103 });
104
105 eventBus.addHandler(ComponentActionEvent.TYPE, actionEvent -> {
106 rpc.onClientAction(actionEvent.getElement(), actionEvent.getActionName(), actionEvent.getParameters());
107 });
108
109 eventBus.addHandler(ComponentStartMoveEvent.TYPE, componentStartMoveEvent -> rpc.startMoveComponent(componentStartMoveEvent.getComponentElement()));
110
111 eventBus.addHandler(SortComponentEvent.TYPE, sortComponentEvent -> rpc.sortComponent(sortComponentEvent.getAreaElement()));
112
113 eventBus.addHandler(ComponentStopMoveEvent.TYPE, stopMoveEvent -> {
114 rpc.stopMoveComponent();
115 });
116
117 registerRpc(PageEditorClientRpc.class,
118 new PageEditorClientRpc() {
119 @Override
120 public void refresh() {
121 postMessageHandler.refresh();
122 }
123
124 @Override
125 public void startMoveComponent(ComponentElement moveComponent) {
126 postMessageHandler.startMoveComponent(moveComponent);
127 }
128
129 @Override
130 public void cancelMoveComponent() {
131 postMessageHandler.cancelMoveComponent();
132 }
133 });
134 }
135
136 @Override
137 public void onUnregister() {
138 super.onUnregister();
139 postMessageHandler.remove();
140 }
141
142 @Override
143 protected void extend(ServerConnector target) {
144
145 }
146
147 }