]> source.dussan.org Git - vaadin-framework.git/commitdiff
Theme support for custom layout
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Fri, 15 Jun 2007 11:31:10 +0000 (11:31 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Fri, 15 Jun 2007 11:31:10 +0000 (11:31 +0000)
svn changeset:1746/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java

index 769733645e6aed2f447f4c53d7a193edc9862b81..47fbb560f0a8c92731224bd9f55705f63549d718 100644 (file)
@@ -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) {
index 55871bc812de75dabeb9925b8043533efe87f8d9..5b774a11ea2cc262a4aab5e4da12948bebe9dc36 100644 (file)
@@ -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"));
        }