]> source.dussan.org Git - vaadin-framework.git/commitdiff
Link no longer implements LegacyComponent (#10015)
authorjoheriks <joheriks@vaadin.com>
Sun, 29 Sep 2013 15:22:56 +0000 (18:22 +0300)
committerVaadin Code Review <review@vaadin.com>
Wed, 2 Oct 2013 12:03:25 +0000 (12:03 +0000)
Change-Id: Iaadc82384d15704017077be282767141529889f2

client/src/com/vaadin/client/ui/VLink.java
client/src/com/vaadin/client/ui/link/LinkConnector.java
server/src/com/vaadin/ui/Link.java
shared/src/com/vaadin/shared/ui/link/LinkState.java

index fa4ee36bcf0ca4c6c3e182ae60ef996f497a8bf5..064a012873874f7dfd4d965510d1171244cd59f8 100644 (file)
@@ -23,7 +23,6 @@ import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.HTML;
-import com.vaadin.client.ApplicationConnection;
 import com.vaadin.client.Util;
 import com.vaadin.shared.ui.BorderStyle;
 
@@ -70,9 +69,6 @@ public class VLink extends HTML implements ClickHandler {
     /** For internal use only. May be removed or replaced in the future. */
     public Icon icon;
 
-    /** For internal use only. May be removed or replaced in the future. */
-    public ApplicationConnection client;
-
     public VLink() {
         super();
         getElement().appendChild(anchor);
index 228897278e4ccdbf06b1acbfe9e6faa922da5335..d2c41e9f38e6560c2f3abe7f8b49d952ff025cdb 100644 (file)
 package com.vaadin.client.ui.link;
 
 import com.google.gwt.user.client.DOM;
-import com.vaadin.client.ApplicationConnection;
-import com.vaadin.client.Paintable;
-import com.vaadin.client.UIDL;
 import com.vaadin.client.communication.StateChangeEvent;
-import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler;
 import com.vaadin.client.ui.AbstractComponentConnector;
 import com.vaadin.client.ui.Icon;
 import com.vaadin.client.ui.VLink;
-import com.vaadin.shared.ui.BorderStyle;
 import com.vaadin.shared.ui.Connect;
 import com.vaadin.shared.ui.link.LinkConstants;
 import com.vaadin.shared.ui.link.LinkState;
 import com.vaadin.ui.Link;
 
 @Connect(Link.class)
-public class LinkConnector extends AbstractComponentConnector implements
-        Paintable {
+public class LinkConnector extends AbstractComponentConnector {
 
     @Override
     protected void init() {
         super.init();
-        addStateChangeHandler("resources", new StateChangeHandler() {
-            @Override
-            public void onStateChanged(StateChangeEvent stateChangeEvent) {
-                getWidget().src = getResourceUrl(LinkConstants.HREF_RESOURCE);
-                if (getWidget().src == null) {
-                    getWidget().anchor.removeAttribute("href");
-                } else {
-                    getWidget().anchor.setAttribute("href", getWidget().src);
-                }
-            }
-        });
     }
 
     @Override
@@ -62,35 +45,30 @@ public class LinkConnector extends AbstractComponentConnector implements
     }
 
     @Override
-    public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-
-        if (!isRealUpdate(uidl)) {
-            return;
-        }
-
-        getWidget().client = client;
+    public void onStateChanged(StateChangeEvent stateChangeEvent) {
+        super.onStateChanged(stateChangeEvent);
 
         getWidget().enabled = isEnabled();
 
-        if (uidl.hasAttribute("name")) {
-            getWidget().target = uidl.getStringAttribute("name");
-            getWidget().anchor.setAttribute("target", getWidget().target);
-        }
-
-        if (uidl.hasAttribute("border")) {
-            if ("none".equals(uidl.getStringAttribute("border"))) {
-                getWidget().borderStyle = BorderStyle.NONE;
+        if (stateChangeEvent.hasPropertyChanged("resources")) {
+            getWidget().src = getResourceUrl(LinkConstants.HREF_RESOURCE);
+            if (getWidget().src == null) {
+                getWidget().anchor.removeAttribute("href");
             } else {
-                getWidget().borderStyle = BorderStyle.MINIMAL;
+                getWidget().anchor.setAttribute("href", getWidget().src);
             }
+        }
+
+        getWidget().target = getState().target;
+        if (getWidget().target == null) {
+            getWidget().anchor.removeAttribute("target");
         } else {
-            getWidget().borderStyle = BorderStyle.DEFAULT;
+            getWidget().anchor.setAttribute("target", getWidget().target);
         }
 
-        getWidget().targetHeight = uidl.hasAttribute("targetHeight") ? uidl
-                .getIntAttribute("targetHeight") : -1;
-        getWidget().targetWidth = uidl.hasAttribute("targetWidth") ? uidl
-                .getIntAttribute("targetWidth") : -1;
+        getWidget().borderStyle = getState().targetBorder;
+        getWidget().targetWidth = getState().targetWidth;
+        getWidget().targetHeight = getState().targetHeight;
 
         // Set link caption
         getWidget().captionElement.setInnerText(getState().caption);
@@ -111,13 +89,12 @@ public class LinkConnector extends AbstractComponentConnector implements
 
         if (getIcon() != null) {
             if (getWidget().icon == null) {
-                getWidget().icon = new Icon(client);
+                getWidget().icon = new Icon(getConnection());
                 getWidget().anchor.insertBefore(getWidget().icon.getElement(),
                         getWidget().captionElement);
             }
             getWidget().icon.setUri(getIcon());
         }
-
     }
 
     @Override
index cf8e1a9693c3d7e206b72f58397c3c4eebeb1d2a..e1a47777bdef1ca3e164d55582df18da18dac7cc 100644 (file)
 
 package com.vaadin.ui;
 
-import java.util.Map;
-
-import com.vaadin.server.PaintException;
-import com.vaadin.server.PaintTarget;
 import com.vaadin.server.Resource;
 import com.vaadin.shared.ui.BorderStyle;
 import com.vaadin.shared.ui.link.LinkConstants;
+import com.vaadin.shared.ui.link.LinkState;
 
 /**
  * Link is used to create external or internal URL links.
@@ -31,7 +28,7 @@ import com.vaadin.shared.ui.link.LinkConstants;
  * @since 3.0
  */
 @SuppressWarnings("serial")
-public class Link extends AbstractComponent implements LegacyComponent {
+public class Link extends AbstractComponent {
 
     /**
      * @deprecated As of 7.0, use {@link BorderStyle#NONE} instead
@@ -51,14 +48,6 @@ public class Link extends AbstractComponent implements LegacyComponent {
     @Deprecated
     public static final BorderStyle TARGET_BORDER_DEFAULT = BorderStyle.DEFAULT;
 
-    private String targetName;
-
-    private BorderStyle targetBorder = BorderStyle.DEFAULT;
-
-    private int targetWidth = -1;
-
-    private int targetHeight = -1;
-
     /**
      * Creates a new link.
      */
@@ -105,43 +94,14 @@ public class Link extends AbstractComponent implements LegacyComponent {
         setTargetBorder(border);
     }
 
-    /**
-     * Paints the content of this component.
-     * 
-     * @param target
-     *            the Paint Event.
-     * @throws PaintException
-     *             if the paint operation failed.
-     */
     @Override
-    public void paintContent(PaintTarget target) throws PaintException {
-        if (getResource() == null) {
-            return;
-        }
-
-        // Target window name
-        final String name = getTargetName();
-        if (name != null && name.length() > 0) {
-            target.addAttribute("name", name);
-        }
-
-        // Target window size
-        if (getTargetWidth() >= 0) {
-            target.addAttribute("targetWidth", getTargetWidth());
-        }
-        if (getTargetHeight() >= 0) {
-            target.addAttribute("targetHeight", getTargetHeight());
-        }
-
-        // Target window border
-        switch (getTargetBorder()) {
-        case MINIMAL:
-            target.addAttribute("border", "minimal");
-            break;
-        case NONE:
-            target.addAttribute("border", "none");
-            break;
-        }
+    protected LinkState getState() {
+        return (LinkState) super.getState();
+    }
+
+    @Override
+    protected LinkState getState(boolean markAsDirty) {
+        return (LinkState) super.getState(markAsDirty);
     }
 
     /**
@@ -150,7 +110,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      * @return the target window border.
      */
     public BorderStyle getTargetBorder() {
-        return targetBorder;
+        return getState(false).targetBorder;
     }
 
     /**
@@ -159,7 +119,8 @@ public class Link extends AbstractComponent implements LegacyComponent {
      * @return the target window height.
      */
     public int getTargetHeight() {
-        return targetHeight < 0 ? -1 : targetHeight;
+        return getState(false).targetHeight < 0 ? -1
+                : getState(false).targetHeight;
     }
 
     /**
@@ -169,7 +130,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      * @return the target window name.
      */
     public String getTargetName() {
-        return targetName;
+        return getState(false).target;
     }
 
     /**
@@ -178,7 +139,8 @@ public class Link extends AbstractComponent implements LegacyComponent {
      * @return the target window width.
      */
     public int getTargetWidth() {
-        return targetWidth < 0 ? -1 : targetWidth;
+        return getState(false).targetWidth < 0 ? -1
+                : getState(false).targetWidth;
     }
 
     /**
@@ -188,8 +150,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      *            the targetBorder to set.
      */
     public void setTargetBorder(BorderStyle targetBorder) {
-        this.targetBorder = targetBorder;
-        markAsDirty();
+        getState().targetBorder = targetBorder;
     }
 
     /**
@@ -199,8 +160,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      *            the targetHeight to set.
      */
     public void setTargetHeight(int targetHeight) {
-        this.targetHeight = targetHeight;
-        markAsDirty();
+        getState().targetHeight = targetHeight;
     }
 
     /**
@@ -210,8 +170,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      *            the targetName to set.
      */
     public void setTargetName(String targetName) {
-        this.targetName = targetName;
-        markAsDirty();
+        getState().target = targetName;
     }
 
     /**
@@ -221,8 +180,7 @@ public class Link extends AbstractComponent implements LegacyComponent {
      *            the targetWidth to set.
      */
     public void setTargetWidth(int targetWidth) {
-        this.targetWidth = targetWidth;
-        markAsDirty();
+        getState().targetWidth = targetWidth;
     }
 
     /**
@@ -244,8 +202,4 @@ public class Link extends AbstractComponent implements LegacyComponent {
         setResource(LinkConstants.HREF_RESOURCE, resource);
     }
 
-    @Override
-    public void changeVariables(Object source, Map<String, Object> variables) {
-        // TODO Remove once LegacyComponent is no longer implemented
-    }
 }
index 269496767de5ed5c6342c51aa710f82e13b5e5aa..33ede8637807d47b2a2cd0e2beec14f9536d4d0b 100644 (file)
 package com.vaadin.shared.ui.link;
 
 import com.vaadin.shared.AbstractComponentState;
+import com.vaadin.shared.ui.BorderStyle;
 
 public class LinkState extends AbstractComponentState {
     {
         primaryStyleName = "v-link";
     }
+    public String name = "";
+    public String target = null;
+    public BorderStyle targetBorder = BorderStyle.DEFAULT;
+    public int targetWidth = -1;
+    public int targetHeight = -1;
 }