]> source.dussan.org Git - vaadin-framework.git/commitdiff
initial Link imlementation
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 1 Aug 2007 06:53:24 +0000 (06:53 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 1 Aug 2007 06:53:24 +0000 (06:53 +0000)
svn changeset:1928/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java [new file with mode: 0644]

index 623af04875e5466a213a01f4f7dc3312a20cbe37..8ebffa6da012fe38b9a444d9f09b962c20f8b0fe 100644 (file)
@@ -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 (file)
index 0000000..5d4b893
--- /dev/null
@@ -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);
+               }
+       }
+       
+}