package com.itmill.toolkit.tests.layouts;\r
\r
+import java.util.Arrays;\r
+import java.util.Iterator;\r
+\r
+import com.itmill.toolkit.data.Container;\r
+import com.itmill.toolkit.data.Item;\r
+import com.itmill.toolkit.data.Property;\r
+import com.itmill.toolkit.data.Property.ValueChangeEvent;\r
+import com.itmill.toolkit.data.Property.ValueChangeListener;\r
+import com.itmill.toolkit.data.util.BeanItem;\r
+import com.itmill.toolkit.data.util.IndexedContainer;\r
import com.itmill.toolkit.tests.components.TestBase;\r
import com.itmill.toolkit.ui.AbsoluteLayout;\r
+import com.itmill.toolkit.ui.AbstractComponent;\r
+import com.itmill.toolkit.ui.BaseFieldFactory;\r
import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.Component;\r
+import com.itmill.toolkit.ui.Field;\r
+import com.itmill.toolkit.ui.FieldFactory;\r
+import com.itmill.toolkit.ui.Form;\r
import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.NativeSelect;\r
+import com.itmill.toolkit.ui.TextField;\r
+import com.itmill.toolkit.ui.Window;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
\r
public class TestAbsoluteLayout extends TestBase {\r
\r
+ private static class MFieldFactory extends BaseFieldFactory {\r
+ @Override\r
+ public Field createField(Container container, Object itemId,\r
+ Object propertyId, Component uiContext) {\r
+ // TODO Auto-generated method stub\r
+ return super.createField(container, itemId, propertyId, uiContext);\r
+ }\r
+\r
+ @Override\r
+ public Field createField(Item item, Object propertyId,\r
+ Component uiContext) {\r
+ if (propertyId.equals("CSSString")) {\r
+ TextField f = new TextField();\r
+ f.setRows(5);\r
+ f.setHeight("8em");\r
+ f.setCaption("CSS string");\r
+ return f;\r
+ }\r
+ return super.createField(item, propertyId, uiContext);\r
+ }\r
+\r
+ private static MFieldFactory instance;\r
+\r
+ public static FieldFactory get() {\r
+ if (instance == null) {\r
+ instance = new MFieldFactory();\r
+ }\r
+ return instance;\r
+ }\r
+ };\r
+\r
@Override\r
protected String getDescription() {\r
return "This is absolute layout tester.";\r
AbsoluteLayout layout = new AbsoluteLayout();\r
setTheme("tests-tickets");\r
layout.setStyleName("cyan");\r
+ layout.setWidth("1000px");\r
+ layout.setHeight("500px");\r
\r
layout.addComponent(new Label("Hello World"));\r
\r
getLayout().setSizeFull();\r
getLayout().addComponent(layout);\r
\r
+ getMainWindow().addWindow(new EditorWindow(layout));\r
+\r
}\r
+\r
+ public class EditorWindow extends Window {\r
+ private final AbsoluteLayout l;\r
+ private Form componentEditor;\r
+ private Form positionEditor;\r
+\r
+ public EditorWindow(AbsoluteLayout lo) {\r
+ super("AbsoluteLayout editor aka köyhän miehen wysiwyg");\r
+ l = lo;\r
+\r
+ setHeight("600px");\r
+\r
+ Button componentChooser = new Button("choose component to edit");\r
+ componentChooser.addListener(new Button.ClickListener() {\r
+ public void buttonClick(ClickEvent event) {\r
+ final Window chooser = new Window("Choose component");\r
+ chooser.getLayout().setSizeUndefined();\r
+ chooser.setModal(true);\r
+\r
+ NativeSelect select = new NativeSelect(\r
+ "Choose component to edit");\r
+\r
+ select.setNullSelectionAllowed(false);\r
+\r
+ IndexedContainer container = new IndexedContainer();\r
+ container.addContainerProperty("caption", String.class, "");\r
+ Iterator<Component> componentIterator = l\r
+ .getComponentIterator();\r
+ while (componentIterator.hasNext()) {\r
+ AbstractComponent next = (AbstractComponent) componentIterator\r
+ .next();\r
+ Item item = container.addItem(next);\r
+\r
+ String caption = next.getTag();\r
+\r
+ caption += "; cap: " + next.getCaption() + "; debugid"\r
+ + getDebugId();\r
+\r
+ if (next instanceof Property) {\r
+ caption += " value:" + ((Property) next).getValue();\r
+ }\r
+\r
+ item.getItemProperty("caption").setValue(caption);\r
+ }\r
+ select.setContainerDataSource(container);\r
+ select.setItemCaptionPropertyId("caption");\r
+ select.setImmediate(true);\r
+\r
+ select.addListener(new ValueChangeListener() {\r
+ public void valueChange(ValueChangeEvent event) {\r
+ editcomponent((Component) event.getProperty()\r
+ .getValue());\r
+ getMainWindow().removeWindow(chooser);\r
+ }\r
+\r
+ });\r
+\r
+ chooser.addComponent(select);\r
+\r
+ getMainWindow().addWindow(chooser);\r
+\r
+ }\r
+ });\r
+\r
+ addComponent(componentChooser);\r
+\r
+ componentEditor = new Form();\r
+ componentEditor.setWriteThrough(false);\r
+ componentEditor.setCaption("Component properties:");\r
+ componentEditor.setFieldFactory(MFieldFactory.get());\r
+ addComponent(componentEditor);\r
+\r
+ positionEditor = new Form();\r
+ positionEditor.setCaption("Component position");\r
+ positionEditor.setWriteThrough(false);\r
+ positionEditor.setFieldFactory(MFieldFactory.get());\r
+ addComponent(positionEditor);\r
+\r
+ Button b = new Button("Commit changes", new Button.ClickListener() {\r
+ public void buttonClick(ClickEvent event) {\r
+ positionEditor.commit();\r
+ componentEditor.commit();\r
+ }\r
+ });\r
+ addComponent(b);\r
+\r
+ }\r
+\r
+ private void editcomponent(Component value) {\r
+\r
+ BeanItem beanItem = new BeanItem(value);\r
+ componentEditor.setItemDataSource(beanItem, Arrays\r
+ .asList(new String[] { "width", "widthUnits", "height",\r
+ "heightUnits", "caption", "styleName" }));\r
+\r
+ beanItem = new BeanItem(l.getPosition(value));\r
+\r
+ positionEditor.setItemDataSource(beanItem);\r
+\r
+ }\r
+\r
+ }\r
+\r
}\r