]> source.dussan.org Git - vaadin-framework.git/commitdiff
Implemented sizeable interface for IPanel and tweaked panel CSS for IE.
authorJouni Koivuviita <jouni.koivuviita@itmill.com>
Wed, 11 Jul 2007 13:46:13 +0000 (13:46 +0000)
committerJouni Koivuviita <jouni.koivuviita@itmill.com>
Wed, 11 Jul 2007 13:46:13 +0000 (13:46 +0000)
svn changeset:1844/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java
src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css

index 02e495a322fffee551095f5d37e7937b753ee84e..9de0d5112b71d1471586628924660ae8f7ae2648 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.terminal.gwt.client.ui;
 
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.Client;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
@@ -17,11 +18,15 @@ public class IPanel extends FlowPanel implements Paintable {
        
        private Label caption;
        
+       private SimplePanel content;
+       
        public IPanel() {
                super();
                setStyleName(CLASSNAME);
                caption = new Label();
                caption.setStyleName(CLASSNAME+"-caption");
+               content = new SimplePanel();
+               content.setStyleName(CLASSNAME+"-content");
        }
 
        public void updateFromUIDL(UIDL uidl, Client client) {
@@ -32,6 +37,7 @@ public class IPanel extends FlowPanel implements Paintable {
                this.client = client;
                this.id = uidl.getId();
                
+               // TODO optimize: if only the caption has changed, don't re-render whole content
                clear();
                
                if(uidl.hasAttribute("style"))
@@ -48,10 +54,25 @@ public class IPanel extends FlowPanel implements Paintable {
                                addStyleName(CLASSNAME+"-nocaption");
                }
                
+               // Size panel
+               // TODO support for different units
+               String widthUnit = "px";
+               String heightUnit = "px";
+               int captionHeight = caption.getOffsetHeight();
+               int height = uidl.hasVariable("height")? uidl.getIntVariable("height") : -1;
+               int w = uidl.hasVariable("width")? uidl.getIntVariable("width") : -1;
+               int h = -1;
+               if(height != -1) 
+                       h = height < captionHeight? 0 : height - captionHeight;
+               setWidth(w>=0?w+widthUnit:"auto");
+               content.setHeight(h>=0?h+heightUnit:"auto");
+               
                UIDL layoutUidl = uidl.getChildUIDL(0);
                Widget layout = client.getWidget(layoutUidl);
                ((Paintable)layout).updateFromUIDL(layoutUidl, client);
-               add(layout);
+               content.setWidget(layout);
+               
+               add(content);
                
        }
        
index 33d59b70c83a93f344dc5fc01ef1f5e81ccc1c06..41d230bdf194d9b51a843a20288ae1badd29c26a 100644 (file)
@@ -1,6 +1,6 @@
 .i-panel {\r
        border: 1px solid #29528a;\r
-       padding: 5px;\r
+       padding: 5px 3px 2px 2px;\r
        margin: 5px;\r
        background: #fff url(../img/top-bg.png) repeat-x top left;\r
 }\r
@@ -11,7 +11,7 @@
        overflow: hidden;\r
        background: transparent url(../img/top-right.png) no-repeat right top;\r
        content: url(../img/top-left.png);\r
-       margin: -6px -6px 3px -6px;\r
+       margin: -6px -4px 3px -3px;\r
 }\r
 \r
 .i-panel:after {\r
        overflow: hidden;\r
        background: transparent url(../img/bottom-right.png) no-repeat right top;\r
        content: url(../img/bottom-left.png);\r
-       margin: 5px -6px -6px -6px;\r
+       margin: 2px -4px -3px -3px;\r
 }\r
 \r
 .i-panel-caption {\r
        font-size: 1.1em;\r
        font-weight: bold;\r
        color: #1c3e6e;\r
-       margin: 0 0 7px 0;\r
+       margin: 0 0 7px 4px;\r
+       overflow: hidden;\r
+}\r
+\r
+.i-panel-content {\r
+       overflow: auto;\r
+       padding: 3px;\r
 }\r
 \r
 \r
@@ -45,7 +51,7 @@
 \r
 .i-panel-strong .i-panel-caption {\r
        color: #fff;\r
-       margin: -25px 0 12px 0;\r
+       margin: -25px 0 12px 4px;\r
        white-space: nowrap;\r
 }\r
 \r
 }\r
 \r
 .i-panel-light .i-panel-caption {\r
-       margin: -26px -5px 18px -5px;\r
+       margin: -26px -2px 10px -2px;\r
        font-size: 1em;\r
        white-space: nowrap;\r
 }\r
 \r
 /* Light style without caption */\r
 .i-panel-light.i-panel-nocaption {\r
-       margin-top: 5px;\r
+       margin-top: 7px;\r
 }\r
 \r
 \r
 /* IE specific rules (different selectors for IE6 and IE7.\r
  * These selectors must be separate because IE6 won't \r
  * apply them if they are grouped together.\r
- */\r
\r
+*/\r
 * html .i-panel {\r
-       background-position: 0 1px;\r
+       zoom: 1;\r
 }\r
 *+html .i-panel {\r
-       background-position: 0 1px;\r
+       zoom: 1;\r
 }\r
-\r
 * html .i-panel .i-panel-caption {\r
        margin-top: 3px;\r
 }\r
 \r
 \r
 * html .i-panel-strong .i-panel-caption {\r
-       margin: 1px 0 10px 0;\r
+       margin: 0 0 10px 4px;\r
 }\r
 *+html .i-panel-strong .i-panel-caption {\r
-       margin: 1px 0 10px 0;\r
+       margin: 1px 0 10px 4px;\r
 }\r
 \r
+* html .i-panel-light {\r
+       margin-top: 5px;\r
+}\r
+*+html .i-panel-light {\r
+       margin-top: 23px;\r
+}\r
 * html .i-panel-light .i-panel-caption {\r
-       margin-top: -23px;\r
-       margin-bottom: 0;\r
-       padding-bottom: 23px; /* Must specify enough space because of wierd clipping bug */\r
+       margin-left: 4px;\r
+       margin-bottom: 5px;\r
+       padding-bottom: 0;\r
 }\r
 *+html .i-panel-light .i-panel-caption {\r
+       /*margin-left: 4px;\r
+       margin-bottom: 5px;\r
+       padding-bottom: 0;*/\r
        margin-top: -23px;\r
-       margin-bottom: 0;\r
-       padding-bottom: 23px;\r
 }
\ No newline at end of file