]> source.dussan.org Git - vaadin-framework.git/commitdiff
#6493 related cleanup and refactoring to eliminate duplicated code
authorHenri Sara <henri.sara@itmill.com>
Wed, 23 Feb 2011 13:20:13 +0000 (13:20 +0000)
committerHenri Sara <henri.sara@itmill.com>
Wed, 23 Feb 2011 13:20:13 +0000 (13:20 +0000)
svn changeset:17396/svn branch:6.5

src/com/vaadin/terminal/gwt/client/EventId.java
src/com/vaadin/terminal/gwt/client/ui/VAbsoluteLayout.java
src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java
src/com/vaadin/terminal/gwt/client/ui/VGridLayout.java
src/com/vaadin/terminal/gwt/client/ui/VOrderedLayout.java
src/com/vaadin/ui/AbsoluteLayout.java
src/com/vaadin/ui/AbstractLayout.java
src/com/vaadin/ui/AbstractOrderedLayout.java
src/com/vaadin/ui/AbstractSplitPanel.java
src/com/vaadin/ui/CssLayout.java
src/com/vaadin/ui/GridLayout.java

index c6b725a5623d509931ce8afe1ce6100472dcc590..077564e8468d119c8dca3a54d74ffb7ad034acda 100644 (file)
@@ -3,4 +3,5 @@ package com.vaadin.terminal.gwt.client;
 public interface EventId {
     public static final String BLUR = "blur";
     public static final String FOCUS = "focus";
+    public static final String LAYOUT_CLICK = "layout_click";
 }
index 747b7eab516120e8466ad693686be65b893e657d..b0590ce5a0d0348cdb29d93aced440bf4f1eaaa9 100644 (file)
@@ -24,6 +24,7 @@ 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.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;
@@ -39,8 +40,6 @@ public class VAbsoluteLayout extends ComplexPanel implements Container {
     /** 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();
@@ -58,7 +57,7 @@ public class VAbsoluteLayout extends ComplexPanel implements Container {
     private boolean rendering;
 
     private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
-            this, CLICK_EVENT_IDENTIFIER) {
+            this, EventId.LAYOUT_CLICK) {
 
         @Override
         protected Paintable getChildComponent(Element element) {
index 98677a85560181113f5afe1e7b00e70fcec2b2c8..213651ab8989d3d136cbbeebcf4db0b5ebf6f123 100644 (file)
@@ -21,6 +21,7 @@ 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.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;
@@ -33,14 +34,13 @@ import com.vaadin.terminal.gwt.client.ValueMap;
 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) {
index 8556990450273e9cb40ea1c1de8e73c1c48eb524..1d26103ae29e6b8924303df32339cf49f59a6791 100644 (file)
@@ -23,6 +23,7 @@ import com.google.gwt.user.client.ui.SimplePanel;
 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;
@@ -35,8 +36,6 @@ public class VGridLayout extends SimplePanel implements Paintable, Container {
 
     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();
@@ -72,7 +71,7 @@ public class VGridLayout extends SimplePanel implements Paintable, Container {
     private boolean sizeChangedDuringRendering = false;
 
     private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
-            this, CLICK_EVENT_IDENTIFIER) {
+            this, EventId.LAYOUT_CLICK) {
 
         @Override
         protected Paintable getChildComponent(Element element) {
index 4c5a563d6d05794cf2a5c77aa4086dbf253f6e19..fe8f6ab6b314b24bab7003aa5ea2e13ffb1b9120 100644 (file)
@@ -16,6 +16,7 @@ import com.google.gwt.user.client.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;
@@ -30,8 +31,6 @@ public class VOrderedLayout extends CellBasedLayout {
 
     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
@@ -57,7 +56,7 @@ public class VOrderedLayout extends CellBasedLayout {
     private ValueMap alignments;
 
     private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
-            this, CLICK_EVENT_IDENTIFIER) {
+            this, EventId.LAYOUT_CLICK) {
 
         @Override
         protected Paintable getChildComponent(Element element) {
index a30cae529b17545f4b6bc1e4e48de05886976535..d96059fdb3d0181b9bac76401c93b06ffcd59bd8 100644 (file)
@@ -15,7 +15,7 @@ import com.vaadin.event.LayoutEvents.LayoutClickListener;
 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;
 
 /**
@@ -27,7 +27,7 @@ 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>();
@@ -560,41 +560,6 @@ public class AbsoluteLayout extends AbstractLayout {
         }
     }
 
-    /*
-     * (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
index 5cb698e6885d8771810f7f513cb3b0c4101572a9..eff53cf1e074877b21a590e053245fbf4f9c357f 100644 (file)
@@ -4,8 +4,13 @@
 
 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;
 
 /**
@@ -21,6 +26,8 @@ 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);
 
     /*
@@ -77,4 +84,43 @@ public abstract class AbstractLayout extends AbstractComponentContainer
 
     }
 
+    /*
+     * (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));
+    }
+
 }
index 28d6f66792c12055efa7c75c5b13b804bbab9200..6e55343c2e8dedfde299df69ac17ebc6813de66f 100644 (file)
@@ -14,14 +14,13 @@ import com.vaadin.event.LayoutEvents.LayoutClickListener;
 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;
 
@@ -350,29 +349,6 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
         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
index f81e62aab05383f2ae96d2b2286e06a8e013188f..9be85644320d7e292ded62d222bf691607e2540c 100644 (file)
@@ -387,7 +387,8 @@ public abstract class AbstractSplitPanel extends AbstractLayout {
 
     }
 
-    private void fireClick(Map<String, Object> parameters) {
+    @Override
+    protected void fireClick(Map<String, Object> parameters) {
         MouseEventDetails mouseDetails = MouseEventDetails
                 .deSerialize((String) parameters.get("mouseDetails"));
 
index 5953ba5181f2f79b348a8ce3abda74f201250a90..5e0cfed263adb2c62a329d52f74d02b4393a916a 100644 (file)
@@ -6,14 +6,13 @@ package com.vaadin.ui;
 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;
 
 /**
@@ -60,7 +59,7 @@ 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.
@@ -250,30 +249,6 @@ public class CssLayout extends AbstractLayout {
         }
     }
 
-    @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
index 503b3d2b8eb9a5faf1f8917dd42ab285c0b6f996..ed6136a8526cbc1474fea07bbd092a1b77ffdf9a 100644 (file)
@@ -16,7 +16,7 @@ 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.gwt.client.MouseEventDetails;
+import com.vaadin.terminal.gwt.client.EventId;
 import com.vaadin.terminal.gwt.client.ui.VGridLayout;
 
 /**
@@ -44,7 +44,7 @@ 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.
@@ -1378,30 +1378,6 @@ public class GridLayout extends AbstractLayout implements
         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