import com.vaadin.event.MouseEvents.ClickListener;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.ui.AbsoluteLayout;
+import com.vaadin.ui.Component;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
+import com.vaadin.ui.Layout;
import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
public class TestListeners extends Application implements LayoutClickListener,
public void init() {
Window w = new Window("main window");
setMainWindow(w);
-
+ HorizontalLayout hl = new HorizontalLayout();
+ w.setContent(hl);
// Panel p = new Panel("My panel");
// p.addListener(new ClickListener() {
//
// }
// VerticalLayout vl = new VerticalLayout();
- AbsoluteLayout al = new AbsoluteLayout();
+ final AbsoluteLayout al = new AbsoluteLayout();
al.setWidth("200px");
al.setHeight("200px");
al.addComponent(new TextField("This is its caption",
al.addComponent(new TextField("Antoerh caption",
"This is another textfield"),
"top: 120px; left: 0px; width: 100px;");
- al.addListener(new LayoutClickListener() {
+
+ final LayoutClickListener lcl = new LayoutClickListener() {
public void layoutClick(LayoutClickEvent event) {
- System.out.println("Click on " + event.getChildComponent());
+ System.out.println("AL: Click on " + event.getChildComponent());
+ // al.removeListener(this);
}
- });
+ };
+ al.addListener(lcl);
- GridLayout vl = new GridLayout();
+ final GridLayout vl = new GridLayout();
vl.addComponent(al);
vl.setSpacing(true);
for (int i = 0; i < 10; i++) {
public void layoutClick(LayoutClickEvent event) {
TestListeners.this.layoutClick(event);
-
+ vl.removeListener(this);
}
});
vl.setMargin(true);
- w.setContent(vl);
+ hl.addComponent(vl);
+ hl.addComponent(createClickableGridLayout());
+ hl.addComponent(createClickableVerticalLayout());
+ }
+
+ private Layout createClickableGridLayout() {
+
+ GridLayout gl = new GridLayout(3, 3);
+ addContent(gl, 5);
+
+ gl.addListener(new LayoutClickListener() {
+
+ public void layoutClick(LayoutClickEvent event) {
+ getMainWindow().showNotification(
+ "GL-click on " + event.getChildComponent());
+
+ }
+ });
+
+ return wrap(gl, "Clickable GridLayout");
+ }
+
+ private Layout createClickableVerticalLayout() {
+
+ VerticalLayout gl = new VerticalLayout();
+ addContent(gl, 5);
+
+ gl.addListener(new LayoutClickListener() {
+
+ public void layoutClick(LayoutClickEvent event) {
+ getMainWindow().showNotification(
+ "VL-click on " + event.getChildComponent());
+
+ }
+ });
+
+ return wrap(gl, "Clickable VerticalLayout");
+ }
+
+ private void addContent(Layout gl, int nr) {
+ for (int i = 1; i < nr; i++) {
+ Label l = new Label("This is label " + i);
+ l.setWidth(null);
+ gl.addComponent(l);
+ }
+ for (int i = nr; i < nr * 2; i++) {
+ gl.addComponent(new TextField("This is tf" + i, "this is tf " + i));
+ }
+ }
+
+ private Layout wrap(Component c, String caption) {
+ VerticalLayout vl = new VerticalLayout();
+ Label l = new Label(caption);
+ l.setWidth(null);
+ vl.addComponent(l);
+ vl.addComponent(c);
+
+ return vl;
}
public void layoutClick(LayoutClickEvent event) {
getMainWindow().showNotification(
"Clicked on " + event.getChildComponent() + "!");
// getMainWindow().removeComponent(event.getChildComponent());
-
}
}
--- /dev/null
+package com.vaadin.terminal.gwt.client.ui;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import com.google.gwt.dom.client.NativeEvent;\r
+import com.google.gwt.event.dom.client.ClickEvent;\r
+import com.google.gwt.event.dom.client.ClickHandler;\r
+import com.google.gwt.event.dom.client.ContextMenuEvent;\r
+import com.google.gwt.event.dom.client.ContextMenuHandler;\r
+import com.google.gwt.event.dom.client.DomEvent;\r
+import com.google.gwt.event.dom.client.DoubleClickEvent;\r
+import com.google.gwt.event.dom.client.DoubleClickHandler;\r
+import com.google.gwt.event.dom.client.MouseUpEvent;\r
+import com.google.gwt.event.dom.client.MouseUpHandler;\r
+import com.google.gwt.event.shared.EventHandler;\r
+import com.google.gwt.event.shared.HandlerRegistration;\r
+import com.vaadin.terminal.gwt.client.ApplicationConnection;\r
+import com.vaadin.terminal.gwt.client.MouseEventDetails;\r
+import com.vaadin.terminal.gwt.client.Paintable;\r
+\r
+abstract class ClickEventHandler implements ClickHandler, DoubleClickHandler,\r
+ ContextMenuHandler, MouseUpHandler {\r
+\r
+ private HandlerRegistration clickHandlerRegistration;\r
+ private HandlerRegistration doubleClickHandlerRegistration;\r
+ private HandlerRegistration mouseUpHandlerRegistration;\r
+ private HandlerRegistration contextMenuHandlerRegistration;\r
+\r
+ protected String clickEventIdentifier;\r
+ protected Paintable paintable;\r
+\r
+ ClickEventHandler(Paintable paintable, String clickEventIdentifier) {\r
+ this.paintable = paintable;\r
+ this.clickEventIdentifier = clickEventIdentifier;\r
+ }\r
+\r
+ public void handleHandlerRegistration() {\r
+ // Handle registering/unregistering of click handler depending on if\r
+ // server side listeners have been added or removed.\r
+ if (hasEventListener()) {\r
+ if (clickHandlerRegistration == null) {\r
+ clickHandlerRegistration = registerHandler(this, ClickEvent\r
+ .getType());\r
+ mouseUpHandlerRegistration = registerHandler(this, MouseUpEvent\r
+ .getType());\r
+ contextMenuHandlerRegistration = registerHandler(this,\r
+ ContextMenuEvent.getType());\r
+ doubleClickHandlerRegistration = registerHandler(this,\r
+ DoubleClickEvent.getType());\r
+ }\r
+ } else {\r
+ if (clickHandlerRegistration != null) {\r
+ // Remove existing handlers\r
+ clickHandlerRegistration.removeHandler();\r
+ doubleClickHandlerRegistration.removeHandler();\r
+ mouseUpHandlerRegistration.removeHandler();\r
+ contextMenuHandlerRegistration.removeHandler();\r
+\r
+ contextMenuHandlerRegistration = null;\r
+ mouseUpHandlerRegistration = null;\r
+ doubleClickHandlerRegistration = null;\r
+ clickHandlerRegistration = null;\r
+\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ protected abstract <H extends EventHandler> HandlerRegistration registerHandler(\r
+ final H handler, DomEvent.Type<H> type);\r
+\r
+ public abstract ApplicationConnection getApplicationConnection();\r
+\r
+ public boolean hasEventListener() {\r
+ return getApplicationConnection().hasEventListeners(paintable,\r
+ clickEventIdentifier);\r
+ }\r
+\r
+ public void onClick(ClickEvent event) {\r
+ if (hasEventListener()) {\r
+ fireClick(event.getNativeEvent());\r
+ }\r
+ }\r
+\r
+ protected void fireClick(NativeEvent event) {\r
+ ApplicationConnection client = getApplicationConnection();\r
+ String pid = getApplicationConnection().getPid(paintable);\r
+\r
+ MouseEventDetails mouseDetails = new MouseEventDetails(event);\r
+\r
+ Map<String, Object> parameters = new HashMap<String, Object>();\r
+ parameters.put("mouseDetails", mouseDetails.serialize());\r
+ client.updateVariable(pid, clickEventIdentifier, parameters, true);\r
+\r
+ }\r
+\r
+ public void onContextMenu(ContextMenuEvent event) {\r
+ if (hasEventListener()) {\r
+ // Prevent showing the browser's context menu when there is a right\r
+ // click listener.\r
+ event.preventDefault();\r
+ }\r
+\r
+ }\r
+\r
+ public void onMouseUp(MouseUpEvent event) {\r
+ // TODO For perfect accuracy we should check that a mousedown has\r
+ // occured on this element before this mouseup and that no mouseup\r
+ // has occured anywhere after that.\r
+ if (hasEventListener()) {\r
+ if (event.getNativeButton() != NativeEvent.BUTTON_LEFT) {\r
+ // "Click" with right or middle button\r
+ fireClick(event.getNativeEvent());\r
+\r
+ }\r
+ }\r
+ }\r
+\r
+ public void onDoubleClick(DoubleClickEvent event) {\r
+ if (hasEventListener()) {\r
+ fireClick(event.getNativeEvent());\r
+ }\r
+ }\r
+\r
+}
\ No newline at end of file
--- /dev/null
+package com.vaadin.terminal.gwt.client.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.Element;
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.Paintable;
+
+abstract class LayoutClickEventHandler extends ClickEventHandler {
+
+ LayoutClickEventHandler(Paintable paintable, String clickEventIdentifier) {
+ super(paintable, clickEventIdentifier);
+ }
+
+ protected abstract Paintable getChildComponent(Element element);
+
+ @Override
+ protected void fireClick(NativeEvent event) {
+ ApplicationConnection client = getApplicationConnection();
+ String pid = getApplicationConnection().getPid(paintable);
+
+ MouseEventDetails mouseDetails = new MouseEventDetails(event);
+ Paintable childComponent = getChildComponent((Element) event
+ .getEventTarget().cast());
+
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("mouseDetails", mouseDetails.serialize());
+ parameters.put("component", childComponent);
+
+ client.updateVariable(pid, clickEventIdentifier, parameters, true);
+ }
+
+}
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Style;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.DomEvent.Type;
+import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
import com.vaadin.terminal.gwt.client.Container;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderSpace;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.VCaption;
-public class VAbsoluteLayout extends ComplexPanel implements Container,
- ClickHandler {
+public class VAbsoluteLayout extends ComplexPanel implements Container {
/** Tag name for widget creation */
public static final String TAGNAME = "absolutelayout";
private boolean rendering;
+ private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
+ this, CLICK_EVENT_IDENTIFIER) {
+
+ @Override
+ public ApplicationConnection getApplicationConnection() {
+ return client;
+ }
+
+ @Override
+ protected Paintable getChildComponent(Element element) {
+ return getComponent(element);
+ }
+
+ @Override
+ protected <H extends EventHandler> HandlerRegistration registerHandler(
+ H handler, Type<H> type) {
+ return addDomHandler(handler, type);
+ }
+ };
+
public VAbsoluteLayout() {
setElement(Document.get().createDivElement());
setStyleName(CLASSNAME);
canvas.getStyle().setProperty("overflow", "hidden");
marginElement.appendChild(canvas);
getElement().appendChild(marginElement);
- addDomHandler(this, ClickEvent.getType());
}
public RenderSpace getAllocatedSpace(Widget child) {
return;
}
- handleHandlerRegistration();
+ clickEventHandler.handleHandlerRegistration();
HashSet<String> unrenderedPids = new HashSet<String>(
pidToComponentWrappper.keySet());
rendering = false;
}
- private HandlerRegistration clickHandlerRegistration;
-
- private void handleHandlerRegistration() {
- // Handle registering/unregistering of click handler depending on if
- // server side listeners have been added or removed.
- if (client.hasEventListeners(this, CLICK_EVENT_IDENTIFIER)) {
- if (clickHandlerRegistration == null) {
- clickHandlerRegistration = addDomHandler(this, ClickEvent
- .getType());
- }
- } else {
- if (clickHandlerRegistration != null) {
- clickHandlerRegistration.removeHandler();
- clickHandlerRegistration = null;
-
- }
- }
-
- }
-
private AbsoluteWrapper getWrapper(ApplicationConnection client,
UIDL componentUIDL) {
AbsoluteWrapper wrapper = pidToComponentWrappper.get(componentUIDL
}
}
- public void onClick(ClickEvent event) {
- // This is only called if there are click listeners registered on server
- // side
- Paintable childComponent = getChildComponent((Element) event
- .getNativeEvent().getEventTarget().cast());
- final MouseEventDetails details = new MouseEventDetails(event
- .getNativeEvent());
-
- Object[] parameters = new Object[] { details, childComponent };
-
- client.updateVariable(client.getPid(this), CLICK_EVENT_IDENTIFIER,
- parameters, true);
- }
- private Paintable getChildComponent(Element target) {
+ private Paintable getComponent(Element target) {
while (target != null && target != canvas) {
Paintable paintable = client.getPaintable(target);
if (paintable != null) {
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.ObjectElement;
import com.google.gwt.dom.client.Style;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.MouseUpEvent;
-import com.google.gwt.event.dom.client.MouseUpHandler;
+import com.google.gwt.event.dom.client.DomEvent.Type;
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HTML;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VTooltip;
-public class VEmbedded extends HTML implements Paintable, ClickHandler,
- MouseUpHandler {
+public class VEmbedded extends HTML implements Paintable {
public static final String CLICK_EVENT_IDENTIFIER = "click";
private static String CLASSNAME = "v-embedded";
private ApplicationConnection client;
+ private ClickEventHandler clickEventHandler = new ClickEventHandler(this,
+ CLICK_EVENT_IDENTIFIER) {
+
+ @Override
+ public ApplicationConnection getApplicationConnection() {
+ return client;
+ }
+
+ @Override
+ protected <H extends EventHandler> HandlerRegistration registerHandler(
+ H handler, Type<H> type) {
+ return addDomHandler(handler, type);
+ }
+
+ };
+
public VEmbedded() {
setStyleName(CLASSNAME);
- addClickHandler(this);
- addMouseUpHandler(this);
}
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
boolean clearBrowserElement = true;
+ clickEventHandler.handleHandlerRegistration();
+
if (uidl.hasAttribute("type")) {
final String type = uidl.getStringAttribute("type");
if (type.equals("image")) {
protected void onDetach() {
if (BrowserInfo.get().isIE()) {
// Force browser to fire unload event when component is detached
- // from
- // the view (IE doesn't do this automatically)
+ // from the view (IE doesn't do this automatically)
if (browserElement != null) {
DOM.setElementAttribute(browserElement, "src",
"javascript:false");
client.handleTooltipEvent(event, this);
}
- private void fireClick(MouseEventDetails mouseDetails) {
- client.updateVariable(client.getPid(this), CLICK_EVENT_IDENTIFIER,
- mouseDetails.serialize(), true);
- }
-
- public void onClick(ClickEvent event) {
- if (client.hasEventListeners(this, CLICK_EVENT_IDENTIFIER)) {
- MouseEventDetails mouseDetails = new MouseEventDetails(event
- .getNativeEvent());
- fireClick(mouseDetails);
- }
- }
-
- public void onMouseUp(MouseUpEvent event) {
- if (client.hasEventListeners(this, CLICK_EVENT_IDENTIFIER)) {
-
- MouseEventDetails mouseDetails = new MouseEventDetails(event
- .getNativeEvent());
- if (mouseDetails.getButton() != MouseEventDetails.BUTTON_LEFT) {
- // "Click" with right or middle button
- fireClick(mouseDetails);
-
- }
- }
- }
}
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.DomEvent.Type;
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.Container;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderSpace;
import com.vaadin.terminal.gwt.client.StyleConstants;
import com.vaadin.terminal.gwt.client.ui.layout.CellBasedLayout;
import com.vaadin.terminal.gwt.client.ui.layout.ChildComponentContainer;
-public class VGridLayout extends SimplePanel implements Paintable, Container,
- ClickHandler {
+public class VGridLayout extends SimplePanel implements Paintable, Container {
public static final String CLASSNAME = "v-gridlayout";
private boolean sizeChangedDuringRendering = false;
+ private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
+ this, CLICK_EVENT_IDENTIFIER) {
+
+ @Override
+ public ApplicationConnection getApplicationConnection() {
+ return client;
+ }
+
+ @Override
+ protected Paintable getChildComponent(Element element) {
+ return getComponent(element);
+ }
+
+ @Override
+ protected <H extends EventHandler> HandlerRegistration registerHandler(
+ H handler, Type<H> type) {
+ return addDomHandler(handler, type);
+ }
+ };
+
public VGridLayout() {
super();
getElement().appendChild(margin);
setStyleName(CLASSNAME);
setWidget(canvas);
-
- addDomHandler(this, ClickEvent.getType());
}
@Override
rendering = false;
return;
}
+ clickEventHandler.handleHandlerRegistration();
canvas.setWidth("0px");
}
+ // private HandlerRegistration clickHandlerRegistration;
+ //
+ // private void handleHandlerRegistration() {
+ // // Handle registering/unregistering of click handler depending on if
+ // // server side listeners have been added or removed.
+ // if (client.hasEventListeners(this, CLICK_EVENT_IDENTIFIER)) {
+ // if (clickHandlerRegistration == null) {
+ // clickHandlerRegistration = addDomHandler(this, ClickEvent
+ // .getType());
+ // }
+ // } else {
+ // if (clickHandlerRegistration != null) {
+ // clickHandlerRegistration.removeHandler();
+ // clickHandlerRegistration = null;
+ //
+ // }
+ // }
+ //
+ // }
+
private static int[] cloneArray(int[] toBeCloned) {
int[] clone = new int[toBeCloned.length];
for (int i = 0; i < clone.length; i++) {
return cell;
}
- public void onClick(ClickEvent event) {
- // This is only called if there are click listeners registered on server
- // side
-
- Paintable childComponent = getChildComponent((Element) event
- .getNativeEvent().getEventTarget().cast());
- final MouseEventDetails details = new MouseEventDetails(event
- .getNativeEvent());
-
- Object[] parameters = new Object[] { details, childComponent };
- client.updateVariable(client.getPid(this), CLICK_EVENT_IDENTIFIER,
- parameters, true);
-
- }
-
- private Paintable getChildComponent(Element element) {
+ // public void onClick(ClickEvent event) {
+ // // This is only called if there are click listeners registered on server
+ // // side
+ //
+ // Paintable childComponent = getChildComponent((Element) event
+ // .getNativeEvent().getEventTarget().cast());
+ // final MouseEventDetails details = new MouseEventDetails(event
+ // .getNativeEvent());
+ //
+ // Object[] parameters = new Object[] { details.serialize(),
+ // childComponent };
+ // client.updateVariable(client.getPid(this), CLICK_EVENT_IDENTIFIER,
+ // parameters, true);
+ //
+ // }
+
+ private Paintable getComponent(Element element) {
Element rootElement = getElement();
while (element != null && element != rootElement) {
Paintable paintable = client.getPaintable(element);
import java.util.Set;\r
\r
import com.google.gwt.core.client.JsArrayString;\r
-import com.google.gwt.event.dom.client.ClickEvent;\r
-import com.google.gwt.event.dom.client.ClickHandler;\r
+import com.google.gwt.event.dom.client.DomEvent.Type;\r
+import com.google.gwt.event.shared.EventHandler;\r
import com.google.gwt.event.shared.HandlerRegistration;\r
import com.google.gwt.user.client.Element;\r
import com.google.gwt.user.client.ui.Widget;\r
import com.vaadin.terminal.gwt.client.ApplicationConnection;\r
import com.vaadin.terminal.gwt.client.BrowserInfo;\r
-import com.vaadin.terminal.gwt.client.MouseEventDetails;\r
import com.vaadin.terminal.gwt.client.Paintable;\r
import com.vaadin.terminal.gwt.client.RenderSpace;\r
import com.vaadin.terminal.gwt.client.UIDL;\r
import com.vaadin.terminal.gwt.client.ui.layout.CellBasedLayout;\r
import com.vaadin.terminal.gwt.client.ui.layout.ChildComponentContainer;\r
\r
-public class VOrderedLayout extends CellBasedLayout implements ClickHandler {\r
+public class VOrderedLayout extends CellBasedLayout {\r
\r
public static final String CLASSNAME = "v-orderedlayout";\r
\r
\r
private ValueMap alignments;\r
\r
+ private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(\r
+ this, CLICK_EVENT_IDENTIFIER) {\r
+\r
+ @Override\r
+ public ApplicationConnection getApplicationConnection() {\r
+ return client;\r
+ }\r
+\r
+ @Override\r
+ protected Paintable getChildComponent(Element element) {\r
+ return getComponent(element);\r
+ }\r
+\r
+ @Override\r
+ protected <H extends EventHandler> HandlerRegistration registerHandler(\r
+ H handler, Type<H> type) {\r
+ return addDomHandler(handler, type);\r
+ }\r
+ };\r
+\r
public VOrderedLayout() {\r
this(CLASSNAME, ORIENTATION_VERTICAL);\r
allowOrientationUpdate = true;\r
return;\r
}\r
\r
- handleHandlerRegistration();\r
+ clickEventHandler.handleHandlerRegistration();\r
\r
if (allowOrientationUpdate) {\r
handleOrientationUpdate(uidl);\r
sizeHasChangedDuringRendering = false;\r
}\r
\r
- private HandlerRegistration clickHandlerRegistration;\r
-\r
- private void handleHandlerRegistration() {\r
- // Handle registering/unregistering of click handler depending on if\r
- // server side listeners have been added or removed.\r
- if (client.hasEventListeners(this, CLICK_EVENT_IDENTIFIER)) {\r
- if (clickHandlerRegistration == null) {\r
- clickHandlerRegistration = addDomHandler(this, ClickEvent\r
- .getType());\r
- }\r
- } else {\r
- if (clickHandlerRegistration != null) {\r
- clickHandlerRegistration.removeHandler();\r
- clickHandlerRegistration = null;\r
-\r
- }\r
- }\r
-\r
- }\r
-\r
private void layoutSizeMightHaveChanged() {\r
Size oldSize = new Size(activeLayoutSize.getWidth(), activeLayoutSize\r
.getHeight());\r
}\r
}\r
\r
- public void onClick(ClickEvent event) {\r
- // This is only called if there are click listeners registered on server\r
- // side\r
-\r
- Paintable childComponent = getChildComponent((Element) event\r
- .getNativeEvent().getEventTarget().cast());\r
- final MouseEventDetails details = new MouseEventDetails(event\r
- .getNativeEvent());\r
-\r
- Object[] parameters = new Object[] { details, childComponent };\r
-\r
- client.updateVariable(client.getPid(this), CLICK_EVENT_IDENTIFIER,\r
- parameters, true);\r
- }\r
-\r
/**\r
* Returns the child component which contains "element".\r
* \r
* @param element\r
* @return\r
*/\r
- private Paintable getChildComponent(Element element) {\r
+ private Paintable getComponent(Element element) {\r
Element rootElement = getElement();\r
while (element != null && element != rootElement) {\r
Paintable paintable = client.getPaintable(element);\r
public void changeVariables(Object source, Map variables) {
super.changeVariables(source, variables);
if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Object[]) variables.get(CLICK_EVENT));
+ fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
}
}
- private void fireClick(Object[] parameters) {
+ private void fireClick(Map<String, Object> parameters) {
MouseEventDetails mouseDetails = MouseEventDetails
- .deserialize((String) parameters[0]);
- Component childComponent = (Component) parameters[1];
+ .deserialize((String) parameters.get("mouseDetails"));
+ Component childComponent = (Component) parameters.get("component");
fireEvent(new LayoutClickEvent(this, mouseDetails, childComponent));
}
public void changeVariables(Object source, Map variables) {
super.changeVariables(source, variables);
if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Object[]) variables.get(CLICK_EVENT));
+ fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
}
}
- private void fireClick(Object[] parameters) {
+ private void fireClick(Map<String, Object> parameters) {
MouseEventDetails mouseDetails = MouseEventDetails
- .deserialize((String) parameters[0]);
- Component childComponent = (Component) parameters[1];
+ .deserialize((String) parameters.get("mouseDetails"));
+ Component childComponent = (Component) parameters.get("component");
fireEvent(new LayoutClickEvent(this, mouseDetails, childComponent));
}
public void changeVariables(Object source, Map variables) {
super.changeVariables(source, variables);
if (variables.containsKey(CLICK_EVENT)) {
- fireClick(variables.get(CLICK_EVENT));
+ fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
}
}
- private void fireClick(Object parameters) {
+ private void fireClick(Map<String, Object> parameters) {
MouseEventDetails mouseDetails = MouseEventDetails
- .deserialize((String) parameters);
+ .deserialize((String) parameters.get("mouseDetails"));
fireEvent(new ClickEvent(this, mouseDetails));
}
@Override
public void changeVariables(Object source, Map variables) {
super.changeVariables(source, variables);
+
if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Object[]) variables.get(CLICK_EVENT));
+ fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
}
}
- private void fireClick(Object[] parameters) {
+ private void fireClick(Map<String, Object> parameters) {
MouseEventDetails mouseDetails = MouseEventDetails
- .deserialize((String) parameters[0]);
- Component childComponent = (Component) parameters[1];
+ .deserialize((String) parameters.get("mouseDetails"));
+ Component childComponent = (Component) parameters.get("component");
fireEvent(new LayoutClickEvent(this, mouseDetails, childComponent));
}