* @return
*/
public String getIconName() {
- String icon = getClass().getSimpleName() + ".gif";
+ String icon = getClass().getSimpleName() + ".png";
return icon;
}
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;
// 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(), //
}
});
+
+ 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) {
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) {
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() {
private String desc;
- private String icon = "FeatureSet.png";
+ private String icon = "folder.gif";
private Feature[] content;
--- /dev/null
+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/") };
+ }
+
+}
--- /dev/null
+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");
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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);
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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);
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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"));
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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);
+
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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);
+
+ }
+}
--- /dev/null
+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;
+ }
+
+}
--- /dev/null
+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);
+
+ }
+}