import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ui.IButton;
import com.itmill.toolkit.terminal.gwt.client.ui.ICheckBox;
+import com.itmill.toolkit.terminal.gwt.client.ui.IComponent;
import com.itmill.toolkit.terminal.gwt.client.ui.ICustomLayout;
import com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded;
import com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout;
return new ITwinColSelect();
return new ISelect();
}
- if ("panel".equals(tag) || "component".equals(tag))
+ if ("panel".equals(tag))
return new IPanel();
+ if ("component".equals(tag))
+ return new IComponent();
if ("tabsheet".equals(tag))
return new ITabsheet();
if ("embedded".equals(tag))
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client.ui;\r
+\r
+import com.itmill.toolkit.terminal.gwt.client.Client;\r
+import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
+\r
+public class IComponent extends IPanel {\r
+ \r
+ public IComponent() {\r
+ super();\r
+ setStyleName("i-component");\r
+ }\r
+ \r
+ public void updateFromUIDL(UIDL uidl, Client client) {\r
+ super.updateFromUIDL(uidl, client);\r
+ setStyleName("i-component");\r
+ }\r
+\r
+}\r
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.Widget;
import com.itmill.toolkit.terminal.gwt.client.Client;
import com.itmill.toolkit.terminal.gwt.client.Paintable;
import com.itmill.toolkit.terminal.gwt.client.UIDL;
-public class IPanel extends IVerticalLayout implements Paintable {
+public class IPanel extends FlowPanel implements Paintable {
+
+ private static final String CLASSNAME = "i-panel";
+
+ Client client;
+
+ String id;
+
+ private Label caption;
+
+ public IPanel() {
+ super();
+ setStyleName(CLASSNAME);
+ caption = new Label();
+ caption.setStyleName(CLASSNAME+"-caption");
+ }
public void updateFromUIDL(UIDL uidl, Client client) {
- super.updateFromUIDL(uidl, client);
+ // Ensure correct implementation
+ if (client.updateComponent(this, uidl, false))
+ return;
+
+ this.client = client;
+ this.id = uidl.getId();
+
+ if(uidl.hasAttribute("caption"))
+ caption.setText(uidl.getStringAttribute("caption"));
+ else
+ caption.setText("");
+
+ if(uidl.hasAttribute("style"))
+ setStyleName(CLASSNAME + " " + CLASSNAME+"-"+uidl.getStringAttribute("style"));
+ else
+ setStyleName(CLASSNAME);
+
+ clear();
+ add(caption);
+
+ UIDL layoutUidl = uidl.getChildUIDL(0);
+ Widget layout = client.getWidget(layoutUidl);
+ ((Paintable)layout).updateFromUIDL(layoutUidl, client);
+ add(layout);
+
}
}
import java.util.Iterator;
import java.util.Set;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.TreeListener;
-import com.google.gwt.user.client.ui.VerticalPanel;
import com.itmill.toolkit.terminal.gwt.client.Client;
import com.itmill.toolkit.terminal.gwt.client.Paintable;
import com.itmill.toolkit.terminal.gwt.client.UIDL;
-public class ITree extends Composite implements Paintable {
+public class ITree extends Tree implements Paintable {
- Label caption = new Label();
- Tree tree = new Tree();
+ private static final String CLASSNAME = "i-tree";
+
Set selectedIds = new HashSet();
Client client;
String id;
- boolean selectable;
- boolean multiselect;
+ private boolean selectable;
+ private boolean multiselect;
public ITree() {
- VerticalPanel panel = new VerticalPanel();
- panel.add(caption);
- panel.add(tree);
- initWidget(panel);
+ super();
+ setStyleName(CLASSNAME);
}
public void updateFromUIDL(UIDL uidl, Client client) {
+ // Ensure correct implementation and let container manage caption
+ if (client.updateComponent(this, uidl, true))
+ return;
+
this.client = client;
- id = uidl.getId();
- if (uidl.hasAttribute("caption")) caption.setText(uidl.getStringAttribute("caption"));
- tree.clear();
+ this.id = uidl.getId();
+
+ clear();
for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
UIDL childUidl = (UIDL)i.next();
- if(childUidl.getTag().equals("leaf"))
- tree.addItem(childUidl.getStringAttribute("caption"));
- if(childUidl.getTag().equals("node")) {
- TreeNode childTree = new TreeNode();
- tree.addItem(childTree);
- childTree.updateFromUIDL(childUidl, client);
- }
+ TreeNode childTree = new TreeNode();
+ addItem(childTree);
+ childTree.updateFromUIDL(childUidl, client);
}
String selectMode = uidl.getStringAttribute("selectmode");
selectable = selectMode != null;
multiselect = "multi".equals(selectMode);
- tree.addTreeListener(new TreeListener() {
+ addTreeListener(new TreeListener() {
public void onTreeItemStateChanged(TreeItem item) {
}
selectedIds = uidl.getStringArrayVariableAsSet("selected");
}
+
private class TreeNode extends TreeItem {
String key;
@import "common/css/common.css";\r
@import "textfield/css/textfield.css";\r
-@import "select/css/select.css";
\ No newline at end of file
+@import "select/css/select.css";\r
+@import "panel/css/panel.css";
\ No newline at end of file
body {\r
- background-color: #fff;\r
+ background: #fafafc url(../img/window-bg.png) repeat-x;\r
font-family: helvetica, verdana, tahoma, arial, sans-serif;\r
color: #222;\r
font-size: 62.5%;\r
--- /dev/null
+.i-panel {\r
+ border: 1px solid #29528a;\r
+ padding: 5px;\r
+ margin: 5px;\r
+ background: #fff url(../img/top-bg.png) repeat-x top left;\r
+}\r
+\r
+.i-panel:before {\r
+ display: block;\r
+ height: 7px;\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 0 -6px;\r
+}\r
+\r
+.i-panel:after {\r
+ display: block;\r
+ height: 2px;\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
+}\r
+\r
+.i-panel-caption {\r
+ font-size: 1.2em;\r
+ font-weight: bold;\r
+ color: #1c3e6e;\r
+ margin: 3px 0 5px 0;\r
+}\r
+\r
+\r
+\r
+/* Strong style */\r
+.i-panel-strong {\r
+ background-image: url(../img/top-bg-strong.png);\r
+}\r
+\r
+.i-panel-strong:before {\r
+ height: 28px;\r
+ background-image: url(../img/top-right-strong.png);\r
+ content: url(../img/top-left-strong.png);\r
+}\r
+\r
+.i-panel-strong .i-panel-caption {\r
+ color: #fff;\r
+ margin: -22px 0 12px 0;\r
+}\r
+\r
+\r
+\r
+/* Light style */\r
+.i-panel-light {\r
+ background-image: url(../img/top-bg-light.png);\r
+ border-color: #b3c2d6;\r
+ border-top-color: #2667a2;\r
+ margin-top: 23px;\r
+}\r
+\r
+.i-panel-light:before {\r
+ height: 6px;\r
+ background-image: url(../img/top-right-light.png);\r
+ content: url(../img/top-left-light.png);\r
+}\r
+\r
+.i-panel-light:after {\r
+ background-image: url(../img/bottom-right-light.png);\r
+ content: url(../img/bottom-left-light.png);\r
+}\r
+\r
+.i-panel-light .i-panel-caption {\r
+ margin: -23px -5px 18px -5px;\r
+ font-size: 1.1em;\r
+}\r
+\r
+\r
+\r
+\r
+\r
+/* IE specific rules (different selectors for IE6 and IE7 */\r
+* html .i-panel,\r
+*+html .i-panel {\r
+ background-position: 0 1px;\r
+}\r
+\r
+* html .i-panel-strong .i-panel-caption,\r
+*+html .i-panel-strong .i-panel-caption {\r
+ margin: 1px 0 10px 0;\r
+ white-space: nowrap;\r
+}\r
+\r
+* html .i-panel-light .i-panel-caption,\r
+*+html .i-panel-light .i-panel-caption {\r
+ margin-bottom: 0;\r
+ padding-bottom: 23px; /* Must specify enough space because of wierd clipping bug */\r
+}
\ No newline at end of file