import com.itmill.toolkit.terminal.gwt.client.ui.IEmbedded;
import com.itmill.toolkit.terminal.gwt.client.ui.IFilterSelect;
import com.itmill.toolkit.terminal.gwt.client.ui.IForm;
+import com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout;
import com.itmill.toolkit.terminal.gwt.client.ui.IGridLayout;
import com.itmill.toolkit.terminal.gwt.client.ui.ILabel;
import com.itmill.toolkit.terminal.gwt.client.ui.ILink;
} else if ("com.itmill.toolkit.terminal.gwt.client.ui.IForm"
.equals(className)) {
return new IForm();
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout"
+ .equals(className)) {
+ return new IFormLayout();
} else if ("com.itmill.toolkit.terminal.gwt.client.ui.IUpload"
.equals(className)) {
return new IUpload();
return "com.itmill.toolkit.terminal.gwt.client.ui.ISlider";
} else if ("form".equals(tag)) {
return "com.itmill.toolkit.terminal.gwt.client.ui.IForm";
+ } else if ("formlayout".equals(tag)) {
+ return "com.itmill.toolkit.terminal.gwt.client.ui.IFormLayout";
} else if ("upload".equals(tag)) {
return "com.itmill.toolkit.terminal.gwt.client.ui.IUpload";
} else if ("hsplitpanel".equals(tag)) {
package com.itmill.toolkit.terminal.gwt.client.ui;\r
\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-\r
-import com.google.gwt.user.client.ui.FlexTable;\r
-import com.google.gwt.user.client.ui.Grid;\r
import com.google.gwt.user.client.ui.SimplePanel;\r
import com.google.gwt.user.client.ui.Widget;\r
import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
-import com.itmill.toolkit.terminal.gwt.client.Caption;\r
import com.itmill.toolkit.terminal.gwt.client.Layout;\r
import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
this.client = client;\r
UIDL layoutUidl = uidl.getChildUIDL(0);\r
if(lo == null) {\r
- if(uidl.hasAttribute("layoutStyle")) {\r
- lo = (Layout) client.getWidget(layoutUidl);\r
- } else {\r
- lo = (Layout) new DefaultLayout();\r
- // manually register paintable due omitting factory\r
- client.registerPaintable(layoutUidl.getId(), lo);\r
- }\r
+ lo = (Layout) client.getWidget(layoutUidl);\r
setWidget((Widget) lo);\r
}\r
lo.updateFromUIDL(layoutUidl, client);\r
}\r
-\r
- /**\r
- * Two col Layout that places caption on left col and field on right col\r
- */\r
- public class DefaultLayout extends FlexTable implements Layout {\r
- \r
- HashMap componentToCaption = new HashMap();\r
- \r
- public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
- int i = 0;\r
- for(Iterator it = uidl.getChildIterator();it.hasNext();i++) {\r
- prepareCell(i, 1);\r
- UIDL childUidl = (UIDL) it.next();\r
- Paintable p = (Paintable) client.getWidget(childUidl);\r
- Caption c = (Caption) componentToCaption.get(p);\r
- if(c == null) {\r
- c = new Caption(p);\r
- componentToCaption.put(p, c);\r
- }\r
- Paintable oldComponent = (Paintable) getWidget(i, 1);\r
- if(oldComponent == null) {\r
- setWidget(i,1,(Widget) p);\r
- } else if (oldComponent != p) {\r
- client.unregisterPaintable(oldComponent);\r
- setWidget(i,1,(Widget) p);\r
- }\r
- setWidget(i,0,c);\r
- p.updateFromUIDL(childUidl, client);\r
- }\r
- i++;\r
- while(getRowCount() > i) {\r
- Paintable p = (Paintable) getWidget(i,1);\r
- client.unregisterPaintable(p);\r
- componentToCaption.remove(p);\r
- removeRow(i);\r
- }\r
- }\r
-\r
- public boolean hasChildComponent(Widget component) {\r
- return componentToCaption.containsKey(component);\r
- }\r
-\r
- public void replaceChildComponent(Widget oldComponent, Widget newComponent) {\r
- int i;\r
- for(i = 0; i < getRowCount(); i++) {\r
- if(oldComponent == getWidget(i, 1)) {\r
- Caption newCap = new Caption((Paintable) newComponent);\r
- setWidget(i,0,newCap);\r
- setWidget(i,1,newComponent);\r
- client.unregisterPaintable((Paintable) oldComponent);\r
- break;\r
- }\r
- }\r
- }\r
-\r
- public void updateCaption(Paintable component, UIDL uidl) {\r
- Caption c = (Caption) componentToCaption.get(component);\r
- if(c != null)\r
- c.updateCaption(uidl);\r
- }\r
- \r
- }\r
}\r
+\r
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.Widget;
+import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
+import com.itmill.toolkit.terminal.gwt.client.Caption;
+import com.itmill.toolkit.terminal.gwt.client.Layout;
+import com.itmill.toolkit.terminal.gwt.client.Paintable;
+import com.itmill.toolkit.terminal.gwt.client.UIDL;
+
+/**
+ * Two col Layout that places caption on left col and field on right col
+ */
+public class IFormLayout extends FlexTable implements Layout {
+
+ HashMap componentToCaption = new HashMap();
+ private ApplicationConnection client;
+
+ public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+ this.client = client;
+ int i = 0;
+ for(Iterator it = uidl.getChildIterator();it.hasNext();i++) {
+ prepareCell(i, 1);
+ UIDL childUidl = (UIDL) it.next();
+ Paintable p = (Paintable) client.getWidget(childUidl);
+ Caption c = (Caption) componentToCaption.get(p);
+ if(c == null) {
+ c = new Caption(p);
+ componentToCaption.put(p, c);
+ }
+ Paintable oldComponent = (Paintable) getWidget(i, 1);
+ if(oldComponent == null) {
+ setWidget(i,1,(Widget) p);
+ } else if (oldComponent != p) {
+ client.unregisterPaintable(oldComponent);
+ setWidget(i,1,(Widget) p);
+ }
+ setWidget(i,0,c);
+ p.updateFromUIDL(childUidl, client);
+ }
+ i++;
+ while(getRowCount() > i) {
+ Paintable p = (Paintable) getWidget(i,1);
+ client.unregisterPaintable(p);
+ componentToCaption.remove(p);
+ removeRow(i);
+ }
+ }
+
+ public boolean hasChildComponent(Widget component) {
+ return componentToCaption.containsKey(component);
+ }
+
+ public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
+ int i;
+ for(i = 0; i < getRowCount(); i++) {
+ if(oldComponent == getWidget(i, 1)) {
+ Caption newCap = new Caption((Paintable) newComponent);
+ setWidget(i,0,newCap);
+ setWidget(i,1,newComponent);
+ client.unregisterPaintable((Paintable) oldComponent);
+ break;
+ }
+ }
+ }
+
+ public void updateCaption(Paintable component, UIDL uidl) {
+ Caption c = (Caption) componentToCaption.get(component);
+ if(c != null)
+ c.updateCaption(uidl);
+ }
+}
public class Form extends AbstractField implements Item.Editor, Buffered, Item,
Validatable {
- private static final int FORM_LAYOUT_DEFAULT = 0;
-
- private static final int FORM_LAYOUT_USER_DEFINED = 10;
-
private Object propertyValue;
/**
*/
private Collection visibleItemProperties;
- private int layoutStyle = FORM_LAYOUT_DEFAULT;
-
/**
* Contructs a new form with default layout.
*
/* Documented in interface */
public void paintContent(PaintTarget target) throws PaintException {
super.paintContent(target);
- if(layoutStyle == FORM_LAYOUT_USER_DEFINED) {
- target.addAttribute("layoutStyle", "userdefined");
- }
layout.paint(target);
}
// Use orderedlayout by default
if (newLayout == null) {
- newLayout = new OrderedLayout();
- layoutStyle = FORM_LAYOUT_DEFAULT;
- } else {
- layoutStyle = FORM_LAYOUT_USER_DEFINED;
+ newLayout = new FormLayout();
}
// Move components from previous layout
--- /dev/null
+package com.itmill.toolkit.ui;
+
+public class FormLayout extends OrderedLayout {
+
+ public String getTag() {
+ return "formlayout";
+ }
+
+}