public interface EventId {
public static final String BLUR = "blur";
public static final String FOCUS = "focus";
+ public static final String LAYOUT_CLICK = "layout_click";
}
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.EventId;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderSpace;
import com.vaadin.terminal.gwt.client.UIDL;
/** Class name, prefix in styling */
public static final String CLASSNAME = "v-absolutelayout";
- public static final String CLICK_EVENT_IDENTIFIER = "click";
-
private DivElement marginElement;
protected final Element canvas = DOM.createDiv();
private boolean rendering;
private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
- this, CLICK_EVENT_IDENTIFIER) {
+ this, EventId.LAYOUT_CLICK) {
@Override
protected Paintable getChildComponent(Element 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.EventId;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderSpace;
import com.vaadin.terminal.gwt.client.StyleConstants;
public class VCssLayout extends SimplePanel implements Paintable, Container {
public static final String TAGNAME = "csslayout";
public static final String CLASSNAME = "v-" + TAGNAME;
- public static final String CLICK_EVENT_IDENTIFIER = "click";
private FlowPane panel = new FlowPane();
private Element margin = DOM.createDiv();
private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
- this, CLICK_EVENT_IDENTIFIER) {
+ this, EventId.LAYOUT_CLICK) {
@Override
protected Paintable getChildComponent(Element element) {
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.EventId;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderSpace;
import com.vaadin.terminal.gwt.client.StyleConstants;
public static final String CLASSNAME = "v-gridlayout";
- public static final String CLICK_EVENT_IDENTIFIER = "click";
-
private DivElement margin = Document.get().createDivElement();
private final AbsolutePanel canvas = new AbsolutePanel();
private boolean sizeChangedDuringRendering = false;
private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
- this, CLICK_EVENT_IDENTIFIER) {
+ this, EventId.LAYOUT_CLICK) {
@Override
protected Paintable getChildComponent(Element element) {
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
+import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderInformation.FloatSize;
import com.vaadin.terminal.gwt.client.RenderInformation.Size;
public static final String CLASSNAME = "v-orderedlayout";
- public static final String CLICK_EVENT_IDENTIFIER = "click";
-
private int orientation;
// Can be removed once OrderedLayout is removed
private ValueMap alignments;
private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
- this, CLICK_EVENT_IDENTIFIER) {
+ this, EventId.LAYOUT_CLICK) {
@Override
protected Paintable getChildComponent(Element element) {
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Sizeable;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.ui.VAbsoluteLayout;
/**
@ClientWidget(VAbsoluteLayout.class)
public class AbsoluteLayout extends AbstractLayout {
- private static final String CLICK_EVENT = VAbsoluteLayout.CLICK_EVENT_IDENTIFIER;
+ private static final String CLICK_EVENT = EventId.LAYOUT_CLICK;
// The components in the layout
private Collection<Component> components = new LinkedHashSet<Component>();
}
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object,
- * java.util.Map)
- */
- @SuppressWarnings("unchecked")
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
- super.changeVariables(source, variables);
- if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
- }
-
- }
-
- /**
- * Fires a click event when the layout is clicked
- *
- * @param parameters
- * The parameters recieved from the client side implementation
- */
- private void fireClick(Map<String, Object> parameters) {
- MouseEventDetails mouseDetails = MouseEventDetails
- .deSerialize((String) parameters.get("mouseDetails"));
- Component clickedComponent = (Component) parameters.get("component");
- Component childComponent = clickedComponent;
- while (childComponent != null && !components.contains(childComponent)) {
- childComponent = childComponent.getParent();
- }
-
- fireEvent(new LayoutClickEvent(this, mouseDetails, clickedComponent,
- childComponent));
- }
-
/**
* Add a click listener to the layout. The listener is called whenever the
* user clicks inside the layout. Also when the click targets a component
package com.vaadin.ui;
+import java.util.Map;
+
+import com.vaadin.event.LayoutEvents.LayoutClickEvent;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.EventId;
+import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.ui.Layout.MarginHandler;
/**
public abstract class AbstractLayout extends AbstractComponentContainer
implements Layout, MarginHandler {
+ private static final String CLICK_EVENT = EventId.LAYOUT_CLICK;
+
protected MarginInfo margins = new MarginInfo(false);
/*
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object,
+ * java.util.Map)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void changeVariables(Object source, Map<String, Object> variables) {
+ super.changeVariables(source, variables);
+ // not all subclasses use these events
+ if (variables.containsKey(CLICK_EVENT)) {
+ fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
+ }
+
+ }
+
+ /**
+ * Fire a layout click event.
+ *
+ * Note that this is only used by the subclasses that support layout click
+ * listeners, and can be overridden for custom click event firing.
+ *
+ * @param parameters
+ * The parameters recieved from the client side implementation
+ */
+ protected void fireClick(Map<String, Object> parameters) {
+ MouseEventDetails mouseDetails = MouseEventDetails
+ .deSerialize((String) parameters.get("mouseDetails"));
+ Component clickedComponent = (Component) parameters.get("component");
+ Component childComponent = clickedComponent;
+ while (childComponent != null && childComponent.getParent() != this) {
+ childComponent = childComponent.getParent();
+ }
+
+ fireEvent(new LayoutClickEvent(this, mouseDetails, clickedComponent,
+ childComponent));
+ }
+
}
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Sizeable;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
-import com.vaadin.terminal.gwt.client.ui.VOrderedLayout;
+import com.vaadin.terminal.gwt.client.EventId;
@SuppressWarnings("serial")
public abstract class AbstractOrderedLayout extends AbstractLayout implements
Layout.AlignmentHandler, Layout.SpacingHandler {
- private static final String CLICK_EVENT = VOrderedLayout.CLICK_EVENT_IDENTIFIER;
+ private static final String CLICK_EVENT = EventId.LAYOUT_CLICK;
private static final Alignment ALIGNMENT_DEFAULT = Alignment.TOP_LEFT;
AlignmentUtils.setComponentAlignment(this, component, alignment);
}
- @SuppressWarnings("unchecked")
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
- super.changeVariables(source, variables);
- if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
- }
-
- }
-
- private void fireClick(Map<String, Object> parameters) {
- MouseEventDetails mouseDetails = MouseEventDetails
- .deSerialize((String) parameters.get("mouseDetails"));
- Component clickedComponent = (Component) parameters.get("component");
- Component childComponent = clickedComponent;
- while (childComponent != null && !components.contains(childComponent)) {
- childComponent = childComponent.getParent();
- }
-
- fireEvent(new LayoutClickEvent(this, mouseDetails, clickedComponent,
- childComponent));
- }
-
/**
* Add a click listener to the layout. The listener is called whenever the
* user clicks inside the layout. Also when the click targets a component
}
- private void fireClick(Map<String, Object> parameters) {
+ @Override
+ protected void fireClick(Map<String, Object> parameters) {
MouseEventDetails mouseDetails = MouseEventDetails
.deSerialize((String) parameters.get("mouseDetails"));
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
-import java.util.Map;
import com.vaadin.event.LayoutEvents.LayoutClickEvent;
import com.vaadin.event.LayoutEvents.LayoutClickListener;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Paintable;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.ui.VCssLayout;
/**
@ClientWidget(VCssLayout.class)
public class CssLayout extends AbstractLayout {
- private static final String CLICK_EVENT = VCssLayout.CLICK_EVENT_IDENTIFIER;
+ private static final String CLICK_EVENT = EventId.LAYOUT_CLICK;
/**
* Custom layout slots containing the components.
}
}
- @SuppressWarnings("unchecked")
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
- super.changeVariables(source, variables);
-
- if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
- }
-
- }
-
- private void fireClick(Map<String, Object> parameters) {
- MouseEventDetails mouseDetails = MouseEventDetails
- .deSerialize((String) parameters.get("mouseDetails"));
- Component clickedComponent = (Component) parameters.get("component");
- Component childComponent = clickedComponent;
- while (childComponent != null && !components.contains(childComponent)) {
- childComponent = childComponent.getParent();
- }
-
- fireEvent(new LayoutClickEvent(this, mouseDetails, clickedComponent,
- childComponent));
- }
-
/**
* Add a click listener to the layout. The listener is called whenever the
* user clicks inside the layout. Also when the click targets a component
import com.vaadin.event.LayoutEvents.LayoutClickListener;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
-import com.vaadin.terminal.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.EventId;
import com.vaadin.terminal.gwt.client.ui.VGridLayout;
/**
public class GridLayout extends AbstractLayout implements
Layout.AlignmentHandler, Layout.SpacingHandler {
- private static final String CLICK_EVENT = VGridLayout.CLICK_EVENT_IDENTIFIER;
+ private static final String CLICK_EVENT = EventId.LAYOUT_CLICK;
/**
* Initial grid columns.
AlignmentUtils.setComponentAlignment(this, component, alignment);
}
- @SuppressWarnings("unchecked")
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
- super.changeVariables(source, variables);
-
- if (variables.containsKey(CLICK_EVENT)) {
- fireClick((Map<String, Object>) variables.get(CLICK_EVENT));
- }
-
- }
-
- private void fireClick(Map<String, Object> parameters) {
- MouseEventDetails mouseDetails = MouseEventDetails
- .deSerialize((String) parameters.get("mouseDetails"));
- Component clickedComponent = (Component) parameters.get("component");
- Component childComponent = clickedComponent;
- while (childComponent != null && !components.contains(childComponent)) {
- childComponent = childComponent.getParent();
- }
-
- fireEvent(new LayoutClickEvent(this, mouseDetails, clickedComponent,
- childComponent));
- }
-
/**
* Add a click listener to the layout. The listener is called whenever the
* user clicks inside the layout. Also when the click targets a component