aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java23
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css49
2 files changed, 52 insertions, 20 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java
index 02e495a322..9de0d5112b 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java
@@ -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);
}
diff --git a/src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css b/src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css
index 33d59b70c8..41d230bdf1 100644
--- a/src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css
+++ b/src/com/itmill/toolkit/terminal/gwt/public/component-themes/panel/css/panel.css
@@ -1,6 +1,6 @@
.i-panel {
border: 1px solid #29528a;
- padding: 5px;
+ padding: 5px 3px 2px 2px;
margin: 5px;
background: #fff url(../img/top-bg.png) repeat-x top left;
}
@@ -11,7 +11,7 @@
overflow: hidden;
background: transparent url(../img/top-right.png) no-repeat right top;
content: url(../img/top-left.png);
- margin: -6px -6px 3px -6px;
+ margin: -6px -4px 3px -3px;
}
.i-panel:after {
@@ -20,14 +20,20 @@
overflow: hidden;
background: transparent url(../img/bottom-right.png) no-repeat right top;
content: url(../img/bottom-left.png);
- margin: 5px -6px -6px -6px;
+ margin: 2px -4px -3px -3px;
}
.i-panel-caption {
font-size: 1.1em;
font-weight: bold;
color: #1c3e6e;
- margin: 0 0 7px 0;
+ margin: 0 0 7px 4px;
+ overflow: hidden;
+}
+
+.i-panel-content {
+ overflow: auto;
+ padding: 3px;
}
@@ -45,7 +51,7 @@
.i-panel-strong .i-panel-caption {
color: #fff;
- margin: -25px 0 12px 0;
+ margin: -25px 0 12px 4px;
white-space: nowrap;
}
@@ -80,14 +86,14 @@
}
.i-panel-light .i-panel-caption {
- margin: -26px -5px 18px -5px;
+ margin: -26px -2px 10px -2px;
font-size: 1em;
white-space: nowrap;
}
/* Light style without caption */
.i-panel-light.i-panel-nocaption {
- margin-top: 5px;
+ margin-top: 7px;
}
@@ -97,15 +103,13 @@
/* IE specific rules (different selectors for IE6 and IE7.
* These selectors must be separate because IE6 won't
* apply them if they are grouped together.
- */
-
+*/
* html .i-panel {
- background-position: 0 1px;
+ zoom: 1;
}
*+html .i-panel {
- background-position: 0 1px;
+ zoom: 1;
}
-
* html .i-panel .i-panel-caption {
margin-top: 3px;
}
@@ -115,19 +119,26 @@
* html .i-panel-strong .i-panel-caption {
- margin: 1px 0 10px 0;
+ margin: 0 0 10px 4px;
}
*+html .i-panel-strong .i-panel-caption {
- margin: 1px 0 10px 0;
+ margin: 1px 0 10px 4px;
}
+* html .i-panel-light {
+ margin-top: 5px;
+}
+*+html .i-panel-light {
+ margin-top: 23px;
+}
* html .i-panel-light .i-panel-caption {
- margin-top: -23px;
- margin-bottom: 0;
- padding-bottom: 23px; /* Must specify enough space because of wierd clipping bug */
+ margin-left: 4px;
+ margin-bottom: 5px;
+ padding-bottom: 0;
}
*+html .i-panel-light .i-panel-caption {
+ /*margin-left: 4px;
+ margin-bottom: 5px;
+ padding-bottom: 0;*/
margin-top: -23px;
- margin-bottom: 0;
- padding-bottom: 23px;
} \ No newline at end of file