aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-02-11 20:30:28 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-02-11 20:30:28 +0000
commitad8e9e64003b79c82b8828bf96d0b201199bfbf7 (patch)
tree4567345472f196086f91c75ab2c3184b39bdccca
parent48b3ce1bafe2e2961ed3cb2ec865c81bd675e263 (diff)
downloadvaadin-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.java40
-rw-r--r--src/com/itmill/toolkit/ui/Embedded.java10
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