diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-02-11 20:30:28 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-02-11 20:30:28 +0000 |
commit | ad8e9e64003b79c82b8828bf96d0b201199bfbf7 (patch) | |
tree | 4567345472f196086f91c75ab2c3184b39bdccca | |
parent | 48b3ce1bafe2e2961ed3cb2ec865c81bd675e263 (diff) | |
download | vaadin-framework-ad8e9e64003b79c82b8828bf96d0b201199bfbf7.tar.gz vaadin-framework-ad8e9e64003b79c82b8828bf96d0b201199bfbf7.zip |
added basic SVG support for Embedded
svn changeset:6812/svn branch:trunk
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java | 40 | ||||
-rw-r--r-- | src/com/itmill/toolkit/ui/Embedded.java | 10 |
2 files changed, 49 insertions, 1 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java index 669d578b53..f2c65d6de5 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java @@ -4,8 +4,12 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import java.util.Iterator; + +import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Node; import com.google.gwt.dom.client.NodeList; +import com.google.gwt.dom.client.ObjectElement; import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; @@ -105,6 +109,25 @@ public class IEmbedded extends HTML implements Paintable { + getSrc(uidl, client) + "\"><embed src=\"" + getSrc(uidl, client) + "\" width=\"" + width + "\" height=\"" + height + "\"></embed></object>"); + } else if (mime.equals("image/svg+xml")) { + String data; + if (getParameter("data", uidl) == null) { + data = getSrc(uidl, client); + } else { + data = "data:image/svg+xml," + getParameter("data", uidl); + } + setHTML(""); + ObjectElement obj = Document.get().createObjectElement(); + obj.setType(mime); + obj.setData(data); + if (width != null) { + obj.getStyle().setProperty("width", "100%"); + } + if (height != null) { + obj.getStyle().setProperty("height", "100%"); + } + getElement().appendChild(obj); + } else { ApplicationConnection.getConsole().log( "Unknown Embedded mimetype '" + mime + "'"); @@ -120,6 +143,23 @@ public class IEmbedded extends HTML implements Paintable { } + private static String getParameter(String paramName, UIDL uidl) { + Iterator childIterator = uidl.getChildIterator(); + while (childIterator.hasNext()) { + Object child = childIterator.next(); + if (child instanceof UIDL) { + UIDL childUIDL = (UIDL) child; + if (childUIDL.getTag().equals("embeddedparam") + && childUIDL.getStringAttribute("name").equals( + paramName)) { + return childUIDL.getStringAttribute("value"); + } + + } + } + return null; + } + /** * Helper to return translated src-attribute from embedded's UIDL * diff --git a/src/com/itmill/toolkit/ui/Embedded.java b/src/com/itmill/toolkit/ui/Embedded.java index cf06205cc1..a42ec6e02e 100644 --- a/src/com/itmill/toolkit/ui/Embedded.java +++ b/src/com/itmill/toolkit/ui/Embedded.java @@ -358,7 +358,15 @@ public class Embedded extends AbstractComponent { if (source != null && !source.equals(this.source)) { this.source = source; final String mt = source.getMIMEType(); - if ((mt.substring(0, mt.indexOf("/")).equalsIgnoreCase("image"))) { + + if (mimeType == null) { + mimeType = mt; + } + + if (mt.equals("image/svg+xml")) { + type = TYPE_OBJECT; + } else if ((mt.substring(0, mt.indexOf("/")) + .equalsIgnoreCase("image"))) { type = TYPE_IMAGE; } else { // Keep previous type |