From ad8e9e64003b79c82b8828bf96d0b201199bfbf7 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 11 Feb 2009 20:30:28 +0000 Subject: [PATCH] added basic SVG support for Embedded svn changeset:6812/svn branch:trunk --- .../terminal/gwt/client/ui/IEmbedded.java | 40 +++++++++++++++++++ src/com/itmill/toolkit/ui/Embedded.java | 10 ++++- 2 files changed, 49 insertions(+), 1 deletion(-) 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) + "\">"); + } 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 -- 2.39.5