]> source.dussan.org Git - vaadin-framework.git/commitdiff
Sampler various updates, some samples added.
authorMarc Englund <marc.englund@itmill.com>
Thu, 30 Oct 2008 15:29:45 +0000 (15:29 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 30 Oct 2008 15:29:45 +0000 (15:29 +0000)
svn changeset:5774/svn branch:trunk

25 files changed:
src/com/itmill/toolkit/demo/sampler/Feature.java
src/com/itmill/toolkit/demo/sampler/FeatureSet.png [deleted file]
src/com/itmill/toolkit/demo/sampler/SamplerApplication.java
src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLinkExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPushExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitchExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindowExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorationsExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindowExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/folder.gif [new file with mode: 0644]

index 7690f8cde5365deaf4295cba2ee48bde871a8884..4639a6fd7f0bdf5f1d1287b64901d4e8a71e66f3 100644 (file)
@@ -96,7 +96,7 @@ abstract public class Feature {
      * @return
      */
     public String getIconName() {
-        String icon = getClass().getSimpleName() + ".gif";
+        String icon = getClass().getSimpleName() + ".png";
         return icon;
     }
 
diff --git a/src/com/itmill/toolkit/demo/sampler/FeatureSet.png b/src/com/itmill/toolkit/demo/sampler/FeatureSet.png
deleted file mode 100644 (file)
index 69e13fa..0000000
Binary files a/src/com/itmill/toolkit/demo/sampler/FeatureSet.png and /dev/null differ
index 526a20ea0fa7691858108024c89e5fb0155cfa1d..33825ad6dc87c043ba37e14056b29fadd427a49a 100644 (file)
@@ -16,6 +16,13 @@ import com.itmill.toolkit.data.util.ObjectProperty;
 import com.itmill.toolkit.demo.sampler.ModeSwitch.ModeSwitchEvent;
 import com.itmill.toolkit.demo.sampler.features.DummyFeature;
 import com.itmill.toolkit.demo.sampler.features.DummyFeature2;
+import com.itmill.toolkit.demo.sampler.features.blueprints.ProminentPrimaryAction;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonPush;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonSwitch;
+import com.itmill.toolkit.demo.sampler.features.link.LinkCurrentWindow;
+import com.itmill.toolkit.demo.sampler.features.link.LinkNoDecorations;
+import com.itmill.toolkit.demo.sampler.features.link.LinkSizedWindow;
 import com.itmill.toolkit.terminal.ClassResource;
 import com.itmill.toolkit.terminal.DownloadStream;
 import com.itmill.toolkit.terminal.ExternalResource;
@@ -40,18 +47,32 @@ public class SamplerApplication extends Application {
     // Main structure, root is always a FeatureSet that is not shown
     private static final FeatureSet features = new FeatureSet("All",
             new Feature[] {
-            // Main sets
+                    // Main sets
 
-                    new FeatureSet("Patterns", new Feature[] {
-                    // Patterns
+                    new FeatureSet("Blueprints", new Feature[] {
+                    // Blueprints
+                            new ProminentPrimaryAction(), //
 
                             }),
 
                     new FeatureSet("Components", new Feature[] {
-                    // Components
+                            // Components
+                            new FeatureSet("Buttons", new Feature[] {
+                                    new ButtonPush(), // basic
+                                    new ButtonLink(), // link
+                                    new ButtonSwitch(), // switch/checkbox
+
+                            }),
+
+                            new FeatureSet("Links", new Feature[] {
+                                    new LinkCurrentWindow(), // basic
+                                    new LinkNoDecorations(), // new win
+                                    new LinkSizedWindow(), // new win
 
                             }),
 
+                    }),
+
                     new FeatureSet("Unsorted", new Feature[] {
                     // Patterns
                             new DummyFeature(), //
@@ -484,6 +505,20 @@ public class SamplerApplication extends Application {
                 }
 
             });
+
+            setCellStyleGenerator(new CellStyleGenerator() {
+                public String getStyle(Object itemId, Object propertyId) {
+                    if (propertyId == null && itemId instanceof FeatureSet) {
+                        if (allFeatures.isRoot(itemId)) {
+                            return "section";
+                        } else {
+                            return "subsection";
+                        }
+
+                    }
+                    return null;
+                }
+            });
         }
 
         public void setFeatureContainer(HierarchicalContainer c) {
@@ -502,12 +537,15 @@ public class SamplerApplication extends Application {
         FeatureGrid() {
             super(5, 1);
             setWidth("100%");
+            setMargin(true);
+            setSpacing(true);
         }
 
         private void newRow() {
             while (getCursorX() > 0) {
                 space();
             }
+            setRows(getRows() + 1);
         }
 
         public void setFeatureContainer(HierarchicalContainer c) {
@@ -517,15 +555,29 @@ public class SamplerApplication extends Application {
                 final Feature f = (Feature) it.next();
                 if (f instanceof FeatureSet) {
                     newRow();
-                    addComponent(new Label(f.getName()));
+                    Label title = new Label(f.getName());
+                    title.setWidth("100%");
+                    title
+                            .setStyleName((c.isRoot(f) ? "section"
+                                    : "subsection"));
+
                     if (c.isRoot(f)) {
-                        newRow();
+                        // newRow();
+                        addComponent(title, 0, getCursorY(), getColumns() - 1,
+                                getCursorY());
+                    } else {
+                        addComponent(title);
                     }
+                    setComponentAlignment(title, ALIGNMENT_LEFT,
+                            ALIGNMENT_VERTICAL_CENTER);
                 } else {
                     Button b = new Button();
                     b.setStyleName(Button.STYLE_LINK);
+                    b.addStyleName("screenshot");
                     b.setIcon(new ClassResource(f.getClass(), f.getIconName(),
                             SamplerApplication.this));
+                    b.setWidth("120px");
+                    b.setHeight("120px");
                     b.setDescription("<h3>" + f.getName() + "</h3>"
                             + f.getDescription());
                     b.addListener(new Button.ClickListener() {
@@ -550,7 +602,7 @@ public class SamplerApplication extends Application {
 
         private String desc;
 
-        private String icon = "FeatureSet.png";
+        private String icon = "folder.gif";
 
         private Feature[] content;
 
diff --git a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.java b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.java
new file mode 100644 (file)
index 0000000..6602429
--- /dev/null
@@ -0,0 +1,46 @@
+package com.itmill.toolkit.demo.sampler.features.blueprints;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonPush;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.Link;
+
+public class ProminentPrimaryAction extends Feature {
+
+    public String getDescription() {
+        return "A primary action is an action that is clearly the"
+                + " default and it should be visually more prominent"
+                + " than the secondary actions.<br/>Good candidates"
+                + " include <i>Save</i>, <i>Submit</i>, <i>Continue</i>, <i>Next</i>,"
+                + " <i>Finish</i> and so on.<br/>Note that 'dangerous' actions"
+                + " that can not be undone should not be primary, and that it's"
+                + " not always possible to identify a primary action"
+                + " - don't force it if it's not obvious.";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Button.class),
+                new APIResource(Link.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { ButtonPush.class, ButtonLink.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        return new NamedExternalResource[] {
+                new NamedExternalResource(
+                        "LukeW: Primary & Secondary Actions in Web Forms",
+                        "http://www.lukew.com/resources/articles/psactions.asp"),
+                new NamedExternalResource(
+                        "UI Pattern Factory: Primary & Secondary Actions",
+                        "http://uipatternfactory.com/p=primary-and-secondary-actions/") };
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png
new file mode 100644 (file)
index 0000000..aacf950
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryAction.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java
new file mode 100644 (file)
index 0000000..5266ca1
--- /dev/null
@@ -0,0 +1,49 @@
+package com.itmill.toolkit.demo.sampler.features.blueprints;
+
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class ProminentPrimaryActionExample extends OrderedLayout implements
+        Button.ClickListener {
+
+    public ProminentPrimaryActionExample() {
+        setSpacing(true);
+
+        OrderedLayout horiz = new OrderedLayout(ORIENTATION_HORIZONTAL);
+        horiz.setSpacing(true);
+        addComponent(horiz);
+        Button primary = new Button("Save", this);
+        horiz.addComponent(primary);
+        Button secondary = new Button("Cancel", this);
+        secondary.setStyleName(Button.STYLE_LINK);
+        horiz.addComponent(secondary);
+
+        horiz = new OrderedLayout(ORIENTATION_HORIZONTAL);
+        horiz.setSpacing(true);
+        addComponent(horiz);
+        primary = new Button("Sign up", this);
+        horiz.addComponent(primary);
+        secondary = new Button("or Sign in", this);
+        secondary.setStyleName(Button.STYLE_LINK);
+        horiz.addComponent(secondary);
+
+        horiz = new OrderedLayout(ORIENTATION_HORIZONTAL);
+        horiz.setSpacing(true);
+        addComponent(horiz);
+        primary = new Button("Login", this);
+        horiz.addComponent(primary);
+        secondary = new Button("Forgot your password?", this);
+        secondary.setStyleName(Button.STYLE_LINK);
+        horiz.addComponent(secondary);
+
+    }
+
+    /*
+     * Shows a notification when a button is clicked.
+     */
+    public void buttonClick(ClickEvent event) {
+        getWindow().showNotification(
+                event.getButton().getCaption() + " clicked");
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.java
new file mode 100644 (file)
index 0000000..1f1a005
--- /dev/null
@@ -0,0 +1,35 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.demo.sampler.features.link.LinkCurrentWindow;
+import com.itmill.toolkit.demo.sampler.features.link.LinkNoDecorations;
+import com.itmill.toolkit.demo.sampler.features.link.LinkSizedWindow;
+import com.itmill.toolkit.ui.Button;
+
+public class ButtonLink extends Feature {
+
+    public String getDescription() {
+        return "A link-styled button.";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Button.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { ButtonPush.class, ButtonSwitch.class,
+                LinkCurrentWindow.class, LinkNoDecorations.class,
+                LinkSizedWindow.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.png b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.png
new file mode 100644 (file)
index 0000000..dc3350a
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLink.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLinkExample.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonLinkExample.java
new file mode 100644 (file)
index 0000000..c9445fb
--- /dev/null
@@ -0,0 +1,51 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class ButtonLinkExample extends OrderedLayout implements
+        Button.ClickListener {
+
+    private static final String CAPTION = "Help";
+    private static final String TOOLTIP = "Show help";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/icon_info.gif");
+    private static final String NOTIFICATION = "Help clicked";
+
+    public ButtonLinkExample() {
+        setSpacing(true);
+
+        // Button w/ text and tooltip
+        Button b = new Button(CAPTION);
+        b.setStyleName(Button.STYLE_LINK);
+        b.setDescription(TOOLTIP);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ text, icon and tooltip
+        b = new Button(CAPTION);
+        b.setStyleName(Button.STYLE_LINK);
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ icon and tooltip
+        b = new Button();
+        b.setStyleName(Button.STYLE_LINK);
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+    }
+
+    /*
+     * Shows a notification when a button is clicked.
+     */
+    public void buttonClick(ClickEvent event) {
+        getWindow().showNotification(NOTIFICATION);
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.java
new file mode 100644 (file)
index 0000000..518d85d
--- /dev/null
@@ -0,0 +1,30 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Button;
+
+public class ButtonPush extends Feature {
+
+    public String getDescription() {
+        return "A basic push-button.";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Button.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { ButtonLink.class, ButtonSwitch.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.png b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.png
new file mode 100644 (file)
index 0000000..87d96ef
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPush.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPushExample.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonPushExample.java
new file mode 100644 (file)
index 0000000..5457b36
--- /dev/null
@@ -0,0 +1,48 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class ButtonPushExample extends OrderedLayout implements
+        Button.ClickListener {
+
+    private static final String CAPTION = "Save";
+    private static final String TOOLTIP = "Save changes";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/action_save.gif");
+    private static final String NOTIFICATION = "Changes have been saved";
+
+    public ButtonPushExample() {
+        setSpacing(true);
+
+        // Button w/ text and tooltip
+        Button b = new Button(CAPTION);
+        b.setDescription(TOOLTIP);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ text, icon and tooltip
+        b = new Button(CAPTION);
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ icon and tooltip
+        b = new Button();
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+    }
+
+    /*
+     * Shows a notification when a button is clicked.
+     */
+    public void buttonClick(ClickEvent event) {
+        getWindow().showNotification(NOTIFICATION);
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.java
new file mode 100644 (file)
index 0000000..6eeab81
--- /dev/null
@@ -0,0 +1,30 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Button;
+
+public class ButtonSwitch extends Feature {
+
+    public String getDescription() {
+        return "A switch button.";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Button.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { ButtonPush.class, ButtonLink.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.png b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.png
new file mode 100644 (file)
index 0000000..948e167
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitch.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitchExample.java b/src/com/itmill/toolkit/demo/sampler/features/buttons/ButtonSwitchExample.java
new file mode 100644 (file)
index 0000000..722b89b
--- /dev/null
@@ -0,0 +1,52 @@
+package com.itmill.toolkit.demo.sampler.features.buttons;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class ButtonSwitchExample extends OrderedLayout implements
+        Button.ClickListener {
+
+    private static final String CAPTION = "Allow HTML";
+    private static final String TOOLTIP = "Allow/disallow HTML in comments";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/page_code.gif");
+
+    public ButtonSwitchExample() {
+        setSpacing(true);
+
+        // Button w/ text and tooltip
+        Button b = new Button(CAPTION);
+        b.setSwitchMode(true);
+        b.setDescription(TOOLTIP);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ text, icon and tooltip
+        b = new Button(CAPTION);
+        b.setSwitchMode(true);
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+        // Button w/ icon and tooltip
+        b = new Button();
+        b.setSwitchMode(true);
+        b.setDescription(TOOLTIP);
+        b.setIcon(ICON);
+        b.addListener(this); // react to clicks
+        addComponent(b);
+
+    }
+
+    /*
+     * Shows a notification when a button is clicked.
+     */
+    public void buttonClick(ClickEvent event) {
+        boolean enabled = event.getButton().booleanValue();
+        getWindow().showNotification(
+                "HTML " + (enabled ? "enabled" : "disabled"));
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.java
new file mode 100644 (file)
index 0000000..3bd09c9
--- /dev/null
@@ -0,0 +1,32 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
+import com.itmill.toolkit.ui.Link;
+
+public class LinkCurrentWindow extends Feature {
+
+    public String getDescription() {
+        return "An external link.";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Link.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { LinkNoDecorations.class, LinkSizedWindow.class,
+                ButtonLink.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.png b/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.png
new file mode 100644 (file)
index 0000000..5b13d5e
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindow.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindowExample.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkCurrentWindowExample.java
new file mode 100644 (file)
index 0000000..20b7909
--- /dev/null
@@ -0,0 +1,38 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.terminal.ExternalResource;
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Link;
+import com.itmill.toolkit.ui.OrderedLayout;
+
+public class LinkCurrentWindowExample extends OrderedLayout {
+
+    private static final String CAPTION = "Open Google";
+    private static final String TOOLTIP = "http://www.google.com";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/icon_world.gif");
+
+    public LinkCurrentWindowExample() {
+        setSpacing(true);
+
+        // Link w/ text and tooltip
+        Link l = new Link(CAPTION,
+                new ExternalResource("http://www.google.com"));
+        l.setDescription(TOOLTIP);
+        addComponent(l);
+
+        // Link w/ text, icon and tooltip
+        l = new Link(CAPTION, new ExternalResource("http://www.google.com"));
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+        // Link w/ icon and tooltip
+        l = new Link();
+        l.setResource(new ExternalResource("http://www.google.com"));
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.java
new file mode 100644 (file)
index 0000000..7d979d8
--- /dev/null
@@ -0,0 +1,32 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
+import com.itmill.toolkit.ui.Link;
+
+public class LinkNoDecorations extends Feature {
+
+    public String getDescription() {
+        return "A link that opens a new window w/o decorations";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Link.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { LinkCurrentWindow.class, LinkSizedWindow.class,
+                ButtonLink.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.png b/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.png
new file mode 100644 (file)
index 0000000..e8fa301
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorations.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorationsExample.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkNoDecorationsExample.java
new file mode 100644 (file)
index 0000000..446f608
--- /dev/null
@@ -0,0 +1,44 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.terminal.ExternalResource;
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Link;
+import com.itmill.toolkit.ui.OrderedLayout;
+
+public class LinkNoDecorationsExample extends OrderedLayout {
+
+    private static final String CAPTION = "Open Google in new window";
+    private static final String TOOLTIP = "http://www.google.com (opens in new window)";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/icon_world.gif");
+
+    public LinkNoDecorationsExample() {
+        setSpacing(true);
+
+        // Link w/ text and tooltip
+        Link l = new Link(CAPTION,
+                new ExternalResource("http://www.google.com"));
+        l.setTargetName("_blank");
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        addComponent(l);
+
+        // Link w/ text, icon and tooltip
+        l = new Link(CAPTION, new ExternalResource("http://www.google.com"));
+        l.setTargetName("_blank");
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+        // Link w/ icon and tooltip
+        l = new Link();
+        l.setResource(new ExternalResource("http://www.google.com"));
+        l.setTargetName("_blank");
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.java
new file mode 100644 (file)
index 0000000..8591ca3
--- /dev/null
@@ -0,0 +1,32 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
+import com.itmill.toolkit.ui.Link;
+
+public class LinkSizedWindow extends Feature {
+
+    public String getDescription() {
+        return "A link that opens a small new window w/o decorations";
+    }
+
+    @Override
+    public APIResource[] getRelatedAPI() {
+        return new APIResource[] { new APIResource(Link.class) };
+    }
+
+    @Override
+    public Class[] getRelatedFeatures() {
+        return new Class[] { LinkCurrentWindow.class, LinkNoDecorations.class,
+                ButtonLink.class };
+    }
+
+    @Override
+    public NamedExternalResource[] getRelatedResources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.png b/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.png
new file mode 100644 (file)
index 0000000..290b313
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindow.png differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindowExample.java b/src/com/itmill/toolkit/demo/sampler/features/link/LinkSizedWindowExample.java
new file mode 100644 (file)
index 0000000..f6ea274
--- /dev/null
@@ -0,0 +1,52 @@
+package com.itmill.toolkit.demo.sampler.features.link;
+
+import com.itmill.toolkit.terminal.ExternalResource;
+import com.itmill.toolkit.terminal.Resource;
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Link;
+import com.itmill.toolkit.ui.OrderedLayout;
+
+public class LinkSizedWindowExample extends OrderedLayout {
+
+    private static final String CAPTION = "Open Google in small window";
+    private static final String TOOLTIP = "http://www.google.com (opens in small window)";
+    private static final ThemeResource ICON = new ThemeResource(
+            "icons/icon_world.gif");
+    private static final Resource TARGET = new ExternalResource(
+            "http://www.google.com/m");
+
+    public LinkSizedWindowExample() {
+        setSpacing(true);
+
+        // Link w/ text and tooltip
+        Link l = new Link(CAPTION, TARGET);
+        l.setTargetName("_blank");
+        l.setTargetWidth(300);
+        l.setTargetHeight(300);
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        addComponent(l);
+
+        // Link w/ text, icon and tooltip
+        l = new Link(CAPTION, TARGET);
+        l.setTargetName("_blank");
+        l.setTargetWidth(300);
+        l.setTargetHeight(300);
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+        // Link w/ icon and tooltip
+        l = new Link();
+        l.setResource(TARGET);
+        l.setTargetName("_blank");
+        l.setTargetWidth(300);
+        l.setTargetHeight(300);
+        l.setTargetBorder(Link.TARGET_BORDER_NONE);
+        l.setDescription(TOOLTIP);
+        l.setIcon(ICON);
+        addComponent(l);
+
+    }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/folder.gif b/src/com/itmill/toolkit/demo/sampler/folder.gif
new file mode 100644 (file)
index 0000000..8dc04c4
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/folder.gif differ