From 35f7bcae353a628b2d1837ca9ef5393a07b07823 Mon Sep 17 00:00:00 2001 From: Joonas Lehtinen Date: Fri, 15 Jun 2007 11:31:10 +0000 Subject: [PATCH] Theme support for custom layout svn changeset:1746/svn branch:trunk --- .../terminal/gwt/client/ui/ICustomLayout.java | 18 ++++++++++++++++++ .../terminal/gwt/client/ui/IWindow.java | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java index 769733645e..47fbb560f0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java @@ -35,7 +35,11 @@ public class ICustomLayout extends SimplePanel implements Paintable, Layout { if (uidlForChild.getTag().equals("location")) { String location = uidlForChild.getStringAttribute("name"); Widget child = client.getWidget(uidlForChild.getChildUIDL(0)); + try { html.add(child,locationPrefix + location); + } catch(Exception e) { + // If no location is found, this component is not visible + } ((Paintable)child).updateFromUIDL(uidlForChild.getChildUIDL(0), client); } @@ -56,6 +60,11 @@ public class ICustomLayout extends SimplePanel implements Paintable, Layout { add(html); addUniqueIdsForLocations(html.getElement(), locationPrefix); + + Widget parent = getParent(); + while (parent != null && !(parent instanceof IWindow)) parent = parent.getParent(); + if (parent != null && ((IWindow)parent).getTheme() != null); + prefixImgSrcs(html.getElement(), "../theme/"+((IWindow)parent).getTheme()+"/layout/"); } private native void addUniqueIdsForLocations(Element e, String idPrefix) /*-{ @@ -67,6 +76,15 @@ public class ICustomLayout extends SimplePanel implements Paintable, Layout { } }-*/; + private native void prefixImgSrcs(Element e, String srcPrefix) /*-{ + var divs = e.getElementsByTagName("img"); + for (var i = 0; i < divs.length; i++) { + var div = divs[i]; + var src = div.getAttribute("src"); + if (src.indexOf("http") != 0) div.setAttribute("src",srcPrefix + src); + } +}-*/; + public void replaceChildComponent(Widget from, Widget to) { CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(from); if (wrapper != null) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java index 55871bc812..5b774a11ea 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java @@ -7,7 +7,14 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL; public class IWindow extends IVerticalLayout implements Paintable { + private String theme; + + public String getTheme() { + return theme; + } + public void updateFromUIDL(UIDL uidl, Client client) { + theme = uidl.getStringAttribute("theme"); super.updateFromUIDL( uidl, client); com.google.gwt.user.client.Window.setTitle(uidl.getStringAttribute("caption")); } -- 2.39.5