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;
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) {
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"))
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);
}
.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
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
\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