From 4c2917a33e5e114b2f111974889b6d6870f62308 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 1 Aug 2007 06:53:24 +0000 Subject: [PATCH] initial Link imlementation svn changeset:1928/svn branch:trunk --- .../gwt/client/DefaultWidgetFactory.java | 3 + .../toolkit/terminal/gwt/client/ui/ILink.java | 92 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java index 623af04875..8ebffa6da0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java @@ -11,6 +11,7 @@ import com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded; import com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout; import com.itmill.toolkit.terminal.gwt.client.ui.IHorizontalLayout; import com.itmill.toolkit.terminal.gwt.client.ui.ILabel; +import com.itmill.toolkit.terminal.gwt.client.ui.ILink; import com.itmill.toolkit.terminal.gwt.client.ui.IOptionGroup; import com.itmill.toolkit.terminal.gwt.client.ui.IPanel; import com.itmill.toolkit.terminal.gwt.client.ui.IPasswordField; @@ -50,6 +51,8 @@ public class DefaultWidgetFactory implements WidgetFactory { } else if ("label".equals(tag)) return new ILabel(); + else if ("link".equals(tag)) + return new ILink(); else if ("gridlayout".equals(tag)) return new IGridLayout(); else if ("tree".equals(tag)) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java new file mode 100644 index 0000000000..5d4b89396d --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java @@ -0,0 +1,92 @@ +package com.itmill.toolkit.terminal.gwt.client.ui; + +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Widget; +import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; +import com.itmill.toolkit.terminal.gwt.client.Paintable; +import com.itmill.toolkit.terminal.gwt.client.UIDL; + +public class ILink extends HTML implements Paintable, ClickListener { + + public static final String CLASSNAME = "i-link"; + + private static final int BORDER_STYLE_DEFAULT = 0; + private static final int BORDER_STYLE_MINIMAL = 1; + private static final int BORDER_STYLE_NONE = 2; + + private String src; + + private String text; + + private String target; + + private int borderStyle = BORDER_STYLE_DEFAULT; + + private boolean enabled; + + private boolean readonly; + + private int width; + + private int height; + + public ILink() { + super(); + addClickListener(this); + } + + public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { + +// if (client.updateComponent(this, uidl, true)) +// return; + + enabled = uidl.hasAttribute("disabled") ? false : true; + readonly = uidl.hasAttribute("disabled") ? true : false; + + if(uidl.hasAttribute("target")) + target = uidl.getStringAttribute(target); + if(uidl.hasAttribute("src")) { + //TODO theme soure + src = uidl.getStringAttribute("src"); + } + + height = uidl.hasAttribute("height") ? uidl.getIntAttribute("height") : -1; + width = uidl.hasAttribute("width") ? uidl.getIntAttribute("width") : -1; + + DOM.setInnerHTML(getElement(), uidl.getStringAttribute("caption")); + } + + public void onClick(Widget sender) { + if(enabled) { + if(target == null) + target = "_blank"; + String features; + switch (borderStyle) { + case BORDER_STYLE_NONE: + features = "menubar=no,location=no,status=no"; + break; + case BORDER_STYLE_MINIMAL: + features = "menubar=yes,location=no,status=no"; + break; + default: + features = "menubar=yes,location=yes,scrollbars=yes,status=yes"; + break; + } + if(width > 0 || height > 0) { + features += ",resizable=no"; + if(width > 0) + features += ",width=" + width; + if(height > 0) + features += ",height=" + height; + } else { + features += ",resizable=yes"; + } + Window.open(src, target, features); + } + } + +} -- 2.39.5