]> source.dussan.org Git - vaadin-framework.git/commitdiff
#6085 Allow setting an alternate text for Embedded, for accessibility purposes
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Tue, 20 Mar 2012 12:24:46 +0000 (12:24 +0000)
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Tue, 20 Mar 2012 12:24:46 +0000 (12:24 +0000)
svn changeset:23268/svn branch:6.8

src/com/vaadin/terminal/gwt/client/ui/VEmbedded.java
src/com/vaadin/ui/Embedded.java

index 2c3115c5edfbe78f50b00f2a1ed4c99e2ab633df..2783db99d1a5ab1d8493436aaf6c3c03bba32422 100644 (file)
@@ -31,6 +31,7 @@ import com.vaadin.terminal.gwt.client.VTooltip;
 
 public class VEmbedded extends HTML implements Paintable {
     public static final String CLICK_EVENT_IDENTIFIER = "click";
+    public static final String ALTERNATE_TEXT = "alt";
 
     private static String CLASSNAME = "v-embedded";
 
@@ -107,6 +108,11 @@ public class VEmbedded extends HTML implements Paintable {
                 }
                 DOM.setElementProperty(el, "src", getSrc(uidl, client));
 
+                if (uidl.hasAttribute(ALTERNATE_TEXT)) {
+                    el.setPropertyString(ALTERNATE_TEXT,
+                            uidl.getStringAttribute(ALTERNATE_TEXT));
+                }
+
                 if (created) {
                     // insert in dom late
                     getElement().appendChild(el);
@@ -138,7 +144,6 @@ public class VEmbedded extends HTML implements Paintable {
                 // Handle embedding of Flash
                 addStyleName(CLASSNAME + "-flash");
                 setHTML(createFlashEmbed(uidl));
-
             } else if (mime.equals("image/svg+xml")) {
                 addStyleName(CLASSNAME + "-svg");
                 String data;
@@ -179,7 +184,9 @@ public class VEmbedded extends HTML implements Paintable {
                             uidl.getStringAttribute("standby"));
                 }
                 getElement().appendChild(obj);
-
+                if (uidl.hasAttribute(ALTERNATE_TEXT)) {
+                    obj.setInnerText(uidl.getStringAttribute(ALTERNATE_TEXT));
+                }
             } else {
                 VConsole.log("Unknown Embedded mimetype '" + mime + "'");
             }
@@ -306,6 +313,10 @@ public class VEmbedded extends HTML implements Paintable {
         // End embed tag
         html.append("></embed>");
 
+        if (uidl.hasAttribute(ALTERNATE_TEXT)) {
+            html.append(uidl.getStringAttribute(ALTERNATE_TEXT));
+        }
+
         // End object tag
         html.append("</object>");
 
index dc14cc6ef8179956686abf644020b1a2596a2b0d..181cbbfb96e20be69edaafa76f8a6604e8aba19c 100644 (file)
@@ -78,6 +78,8 @@ public class Embedded extends AbstractComponent {
 
     private String archive = null;
 
+    private String altText;
+
     /**
      * Creates a new empty Embedded object.
      */
@@ -146,6 +148,9 @@ public class Embedded extends AbstractComponent {
         if (archive != null && !"".equals(archive)) {
             target.addAttribute("archive", archive);
         }
+        if (altText != null && !"".equals(altText)) {
+            target.addAttribute(VEmbedded.ALTERNATE_TEXT, altText);
+        }
 
         // Params
         for (final Iterator<String> i = getParameterNames(); i.hasNext();) {
@@ -157,6 +162,34 @@ public class Embedded extends AbstractComponent {
         }
     }
 
+    /**
+     * Sets this component's "alt-text", that is, an alternate text that can be
+     * presented instead of this component's normal content, for accessibility
+     * purposes. Does not work when {@link #setType(int)} has been called with
+     * {@link #TYPE_BROWSER}.
+     * 
+     * @param altText
+     *            A short, human-readable description of this component's
+     *            content.
+     * @since 6.8
+     */
+    public void setAlternateText(String altText) {
+        if (altText != this.altText
+                || (altText != null && !altText.equals(this.altText))) {
+            this.altText = altText;
+            requestRepaint();
+        }
+    }
+
+    /**
+     * Gets this component's "alt-text".
+     * 
+     * @see #setAlternateText(String)
+     */
+    public String getAlternateText() {
+        return altText;
+    }
+
     /**
      * Sets an object parameter. Parameters are optional information, and they
      * are passed to the instantiated object. Parameters are are stored as name