]> source.dussan.org Git - vaadin-framework.git/commitdiff
WebAnalytics added (#2281), layouts fixed (#2260), one example + icon.
authorMarc Englund <marc.englund@itmill.com>
Fri, 5 Dec 2008 10:46:31 +0000 (10:46 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 5 Dec 2008 10:46:31 +0000 (10:46 +0000)
svn changeset:6091/svn branch:trunk

src/com/itmill/toolkit/demo/sampler/ModeSwitch.java
src/com/itmill/toolkit/demo/sampler/SamplerApplication.java
src/com/itmill/toolkit/demo/sampler/WebAnalytics.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png
src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java
src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/gwt/client/SamplerWidgetSet.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/gwt/client/ui/IWebAnalytics.java [new file with mode: 0644]

index a42ca620646bae590e6d8530e99ca34e620bed23..d662d421c93c5a598b11e4bce2747c55ac68757d 100644 (file)
@@ -13,10 +13,12 @@ public class ModeSwitch extends CustomComponent {
 
     GridLayout layout = new GridLayout(3, 1);
 
-    HashMap idToButton = new HashMap();
+    HashMap<Object, Button> idToButton = new HashMap<Object, Button>();
     Object mode = null;
 
     public ModeSwitch() {
+        setSizeUndefined();
+        layout.setSizeUndefined();
         setCompositionRoot(layout);
         setStyleName("ModeSwitch");
     }
@@ -64,7 +66,7 @@ public class ModeSwitch extends CustomComponent {
     }
 
     public void removeMode(Object id) {
-        Button b = (Button) idToButton.remove(id);
+        Button b = idToButton.remove(id);
         layout.removeComponent(b);
         updateStyles();
     }
index 34bc8ca9327a1b1e6f9ce0f1d03bccc38f3f968c..9792a6524fa92bc0019d33e3ccb115e37cb2c577 100644 (file)
@@ -43,6 +43,7 @@ import com.itmill.toolkit.ui.Embedded;
 import com.itmill.toolkit.ui.ExpandLayout;
 import com.itmill.toolkit.ui.GridLayout;
 import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.OrderedLayout;
 import com.itmill.toolkit.ui.Panel;
 import com.itmill.toolkit.ui.SplitPanel;
 import com.itmill.toolkit.ui.Table;
@@ -207,16 +208,20 @@ public class SamplerApplication extends Application {
 
         private SplitPanel mainSplit;
         private Tree navigationTree;
+        // itmill: UA-658457-6
+        private WebAnalytics webAnalytics = new WebAnalytics("UA-658457-6",
+                "none");
 
         SamplerWindow() {
             // Main top/expanded-bottom layout
-            ExpandLayout mainExpand = new ExpandLayout();
+            OrderedLayout mainExpand = new OrderedLayout();
             setLayout(mainExpand);
+            setSizeFull();
             mainExpand.setSizeFull();
 
             // topbar (navigation)
-            ExpandLayout nav = new ExpandLayout(
-                    ExpandLayout.ORIENTATION_HORIZONTAL);
+            OrderedLayout nav = new OrderedLayout(
+                    OrderedLayout.ORIENTATION_HORIZONTAL);
             mainExpand.addComponent(nav);
             nav.setHeight("40px");
             nav.setWidth("100%");
@@ -229,7 +234,10 @@ public class SamplerApplication extends Application {
             nav.addComponent(logo);
             nav.setComponentAlignment(logo, ExpandLayout.ALIGNMENT_LEFT,
                     ExpandLayout.ALIGNMENT_VERTICAL_CENTER);
-            nav.expand(logo);
+            nav.setExpandRatio(logo, 1);
+
+            // invisible analytics -component
+            nav.addComponent(webAnalytics);
 
             // Previous sample
             Button b = createPrevButton();
@@ -242,6 +250,8 @@ public class SamplerApplication extends Application {
             nav.setComponentAlignment(b, ExpandLayout.ALIGNMENT_LEFT,
                     ExpandLayout.ALIGNMENT_VERTICAL_CENTER);
 
+            // "Search" combobox
+            // TODO add input prompt
             Component search = createSearch();
             nav.addComponent(search);
             nav.setComponentAlignment(search, ExpandLayout.ALIGNMENT_LEFT,
@@ -263,14 +273,14 @@ public class SamplerApplication extends Application {
             // Show / hide tree
             Component treeSwitch = createTreeSwitch();
             nav.addComponent(treeSwitch);
-            nav.setComponentAlignment(treeSwitch, ExpandLayout.ALIGNMENT_LEFT,
-                    ExpandLayout.ALIGNMENT_VERTICAL_CENTER);
+            nav.setComponentAlignment(treeSwitch, OrderedLayout.ALIGNMENT_LEFT,
+                    OrderedLayout.ALIGNMENT_VERTICAL_CENTER);
 
             // List/grid/coverflow
             Component mode = createModeSwitch();
             nav.addComponent(mode);
-            nav.setComponentAlignment(mode, ExpandLayout.ALIGNMENT_RIGHT,
-                    ExpandLayout.ALIGNMENT_VERTICAL_CENTER);
+            nav.setComponentAlignment(mode, OrderedLayout.ALIGNMENT_RIGHT,
+                    OrderedLayout.ALIGNMENT_VERTICAL_CENTER);
 
         }
 
@@ -282,6 +292,7 @@ public class SamplerApplication extends Application {
          */
         public void setFeature(Feature f) {
             currentFeature.setValue(f);
+            webAnalytics.trackPageview(getPathFor(f));
         }
 
         /**
diff --git a/src/com/itmill/toolkit/demo/sampler/WebAnalytics.java b/src/com/itmill/toolkit/demo/sampler/WebAnalytics.java
new file mode 100644 (file)
index 0000000..e4ba752
--- /dev/null
@@ -0,0 +1,50 @@
+package com.itmill.toolkit.demo.sampler;
+
+import com.itmill.toolkit.terminal.PaintException;
+import com.itmill.toolkit.terminal.PaintTarget;
+import com.itmill.toolkit.ui.AbstractComponent;
+
+public class WebAnalytics extends AbstractComponent {
+
+    private String trackerId;
+    private String pageId;
+    private String domainName;
+
+    public WebAnalytics(String trackerId) {
+        this.trackerId = trackerId;
+    }
+
+    public WebAnalytics(String trackerId, String domainName) {
+        this(trackerId);
+        this.domainName = domainName;
+    }
+
+    public String getTag() {
+        return "webanalytics";
+    }
+
+    public String getTrackerId() {
+        return trackerId;
+    }
+
+    public String getDomainName() {
+        return domainName;
+    }
+
+    public void trackPageview(String pageId) {
+        this.pageId = pageId;
+        requestRepaint();
+    }
+
+    public void paintContent(PaintTarget target) throws PaintException {
+        super.paintContent(target);
+        target.addAttribute("trackerid", trackerId);
+        if (pageId != null) {
+            target.addAttribute("pageid", pageId);
+        }
+        if (domainName != null) {
+            target.addAttribute("domain", domainName);
+        }
+    }
+
+}
index aacf950aa061050f17ad7acf392925db8003c457..e575afd5e9d8cd0b4eb73e5496352193614cbf91 100644 (file)
Binary files a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png and b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png differ
index fb03daaa4d70e7c0ce81e77039ff15ba7bd1d488..87a47f33a940ac4246f640a8fc31924ea822eb8b 100644 (file)
@@ -49,6 +49,9 @@ public class ProminentPrimaryActionExample extends OrderedLayout implements
             Button secondary = new Button("Forgot your password?", this);
             secondary.setStyleName(Button.STYLE_LINK);
             vert.addComponent(secondary);
+            vert.setComponentAlignment(secondary,
+                    OrderedLayout.ALIGNMENT_RIGHT,
+                    OrderedLayout.ALIGNMENT_BOTTOM);
         }
 
     }
diff --git a/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml b/src/com/itmill/toolkit/demo/sampler/gwt/SamplerWidgetSet.gwt.xml
new file mode 100644 (file)
index 0000000..2f1e02e
--- /dev/null
@@ -0,0 +1,14 @@
+<module>
+       <!-- Inherit the NoEntry version to avoid multiple entrypoints -->
+       <inherits name="com.itmill.toolkit.terminal.gwt.DefaultWidgetSetNoEntry" /> 
+       
+       <!-- WidgetSet default theme -->        
+       <stylesheet src="sampler/styles.css"/>
+
+       <!-- Tracker -->
+       <script src="http://www.google-analytics.com/ga.js" />
+
+       <!-- Entry point -->
+       <entry-point class="com.itmill.toolkit.demo.sampler.gwt.client.SamplerWidgetSet"/>
+  
+</module>
diff --git a/src/com/itmill/toolkit/demo/sampler/gwt/client/SamplerWidgetSet.java b/src/com/itmill/toolkit/demo/sampler/gwt/client/SamplerWidgetSet.java
new file mode 100644 (file)
index 0000000..0810f0d
--- /dev/null
@@ -0,0 +1,28 @@
+package com.itmill.toolkit.demo.sampler.gwt.client;
+
+import com.itmill.toolkit.demo.sampler.gwt.client.ui.IWebAnalytics;
+import com.itmill.toolkit.terminal.gwt.client.DefaultWidgetSet;
+import com.itmill.toolkit.terminal.gwt.client.Paintable;
+import com.itmill.toolkit.terminal.gwt.client.UIDL;
+
+public class SamplerWidgetSet extends DefaultWidgetSet {
+
+    public Paintable createWidget(UIDL uidl) {
+        final Class classType = resolveWidgetType(uidl);
+        if (IWebAnalytics.class == classType) {
+            return new IWebAnalytics();
+        } else {
+            return super.createWidget(uidl);
+        }
+    }
+
+    protected Class resolveWidgetType(UIDL uidl) {
+        final String tag = uidl.getTag();
+        if ("webanalytics".equals(tag)) {
+            return IWebAnalytics.class;
+        } else {
+            return super.resolveWidgetType(uidl);
+        }
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/gwt/client/ui/IWebAnalytics.java b/src/com/itmill/toolkit/demo/sampler/gwt/client/ui/IWebAnalytics.java
new file mode 100644 (file)
index 0000000..aaa9b06
--- /dev/null
@@ -0,0 +1,55 @@
+package com.itmill.toolkit.demo.sampler.gwt.client.ui;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.user.client.ui.Widget;
+import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
+import com.itmill.toolkit.terminal.gwt.client.BrowserInfo;
+import com.itmill.toolkit.terminal.gwt.client.Paintable;
+import com.itmill.toolkit.terminal.gwt.client.UIDL;
+
+public class IWebAnalytics extends Widget implements Paintable {
+
+    public IWebAnalytics() {
+        setElement(Document.get().createDivElement());
+        if (BrowserInfo.get().isIE6()) {
+            getElement().getStyle().setProperty("overflow", "hidden");
+            getElement().getStyle().setProperty("height", "0");
+        }
+    }
+
+    public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+        String trackerId = uidl.getStringAttribute("trackerid");
+        String pageId = uidl.getStringAttribute("pageid");
+        String domainName = uidl.getStringAttribute("domain");
+
+        String res = trackPageview(trackerId, pageId, domainName);
+        if (null != res) {
+            ApplicationConnection.getConsole().log(
+                    "WebAnalytics.trackPageview(" + trackerId + "," + pageId
+                            + "," + domainName + ") FAILED: " + res);
+        } else {
+            ApplicationConnection.getConsole().log(
+                    "WebAnalytics.trackPageview(" + trackerId + "," + pageId
+                            + "," + domainName + ") SUCCESS.");
+        }
+    }
+
+    private native String trackPageview(String trackerId, String pageId,
+            String domainName)
+    /*-{
+        try {
+            var pageTracker = $wnd._gat._getTracker(trackerId);
+            if (domainName) {
+                pageTracker._setDomainName(domainName);
+            }
+            if (pageId) {
+                pageTracker._trackPageview(pageId);
+            } else {
+                pageTracker._trackPageview();
+            }
+            return null;
+        } catch(err) {
+            return ""+err;
+        }
+    }-*/;
+}