From b6030ed2b55fd6ce15d6f9b95a73481ae3a59988 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 11 Sep 2007 13:04:57 +0000 Subject: [PATCH] added form layout component (can be used without form component) svn changeset:2278/svn branch:trunk --- .../gwt/client/DefaultWidgetFactory.java | 6 ++ .../toolkit/terminal/gwt/client/ui/IForm.java | 77 +------------------ .../terminal/gwt/client/ui/IFormLayout.java | 75 ++++++++++++++++++ src/com/itmill/toolkit/ui/Form.java | 14 +--- src/com/itmill/toolkit/ui/FormLayout.java | 9 +++ 5 files changed, 93 insertions(+), 88 deletions(-) create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java create mode 100644 src/com/itmill/toolkit/ui/FormLayout.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java index 30a6a129da..fdaaf8a4f8 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java @@ -11,6 +11,7 @@ import com.itmill.toolkit.terminal.gwt.client.ui.IDateFieldCalendar; 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; @@ -131,6 +132,9 @@ public class DefaultWidgetFactory implements WidgetFactory { } 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(); @@ -227,6 +231,8 @@ public class DefaultWidgetFactory implements WidgetFactory { 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)) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IForm.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IForm.java index dfa04f19d6..4fc58c6212 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IForm.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IForm.java @@ -1,14 +1,8 @@ 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.Grid; import com.google.gwt.user.client.ui.SimplePanel; 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; @@ -30,77 +24,10 @@ public class IForm extends SimplePanel implements Paintable { this.client = client; UIDL layoutUidl = uidl.getChildUIDL(0); if(lo == null) { - if(uidl.hasAttribute("layoutStyle")) { - lo = (Layout) client.getWidget(layoutUidl); - } else { - lo = (Layout) new DefaultLayout(); - // manually register paintable due omitting factory - client.registerPaintable(layoutUidl.getId(), lo); - } + lo = (Layout) client.getWidget(layoutUidl); setWidget((Widget) lo); } lo.updateFromUIDL(layoutUidl, client); } - - /** - * Two col Layout that places caption on left col and field on right col - */ - public class DefaultLayout extends FlexTable implements Layout { - - HashMap componentToCaption = new HashMap(); - - public void updateFromUIDL(UIDL uidl, ApplicationConnection 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); - } - - } } + diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java new file mode 100644 index 0000000000..063aa0c3d9 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java @@ -0,0 +1,75 @@ +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); + } +} diff --git a/src/com/itmill/toolkit/ui/Form.java b/src/com/itmill/toolkit/ui/Form.java index 9dc0c63ee2..784b97e040 100644 --- a/src/com/itmill/toolkit/ui/Form.java +++ b/src/com/itmill/toolkit/ui/Form.java @@ -74,10 +74,6 @@ import com.itmill.toolkit.terminal.PaintTarget; 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; /** @@ -130,8 +126,6 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, */ private Collection visibleItemProperties; - private int layoutStyle = FORM_LAYOUT_DEFAULT; - /** * Contructs a new form with default layout. * @@ -179,9 +173,6 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, /* 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); } @@ -560,10 +551,7 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, // 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 diff --git a/src/com/itmill/toolkit/ui/FormLayout.java b/src/com/itmill/toolkit/ui/FormLayout.java new file mode 100644 index 0000000000..f7ec090977 --- /dev/null +++ b/src/com/itmill/toolkit/ui/FormLayout.java @@ -0,0 +1,9 @@ +package com.itmill.toolkit.ui; + +public class FormLayout extends OrderedLayout { + + public String getTag() { + return "formlayout"; + } + +} -- 2.39.5