package com.itmill.toolkit.tests.tickets;\r
\r
-import java.util.Date;\r
-import java.util.Set;\r
-\r
import com.itmill.toolkit.Application;\r
-import com.itmill.toolkit.data.Property.ValueChangeEvent;\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.util.BeanItem;\r
+import com.itmill.toolkit.ui.BaseFieldFactory;\r
import com.itmill.toolkit.ui.Button;\r
-import com.itmill.toolkit.ui.DateField;\r
+import com.itmill.toolkit.ui.Component;\r
+import com.itmill.toolkit.ui.ComponentContainer;\r
+import com.itmill.toolkit.ui.Field;\r
import com.itmill.toolkit.ui.Form;\r
import com.itmill.toolkit.ui.GridLayout;\r
import com.itmill.toolkit.ui.Label;\r
-import com.itmill.toolkit.ui.Layout;\r
-import com.itmill.toolkit.ui.OptionGroup;\r
import com.itmill.toolkit.ui.OrderedLayout;\r
import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.Table;\r
import com.itmill.toolkit.ui.TextField;\r
import com.itmill.toolkit.ui.Window;\r
import com.itmill.toolkit.ui.Button.ClickEvent;\r
-import com.itmill.toolkit.ui.Button.ClickListener;\r
\r
public class Ticket677 extends Application {\r
\r
- private static final Object P1 = new Object();\r
- private static final Object P2 = new Object();\r
- private static final Object P3 = new Object();\r
+ private static final Label info = new Label(\r
+ "<li> keep debug window open to see variable changes"\r
+ + "<li> disable root panel w/ toggle button"\r
+ + "<li> toggle one of the subpanels"\r
+ + "<li> we attempt to focus the subpanels first textfield"\r
+ + "<li> focusing should fail (try tabbing as well) [worked previousy]"\r
+ + "<li> no variable changes should be sent from disabled fields [changed sent previously]"\r
+ + "<li> try further toggling and tabbing around",\r
+ Label.CONTENT_RAW);\r
\r
- private Panel panel;\r
- private Form form;\r
+ Panel root = new Panel("Enabled");\r
+ Panel one = new Panel("Enabled");\r
+ Panel two = new Panel("Enabled");\r
\r
public void init() {\r
- Window w = new Window(getClass().getName());\r
- setMainWindow(w);\r
- // setTheme("tests-ticket");\r
- GridLayout layout = new GridLayout(10, 10);\r
- w.setLayout(layout);\r
- createUI(layout);\r
-\r
- createMultiLevelHierarchy();\r
- }\r
-\r
- private void createMultiLevelHierarchy() {\r
+ Window main = new Window();\r
+ setMainWindow(main);\r
\r
- Layout lo = new OrderedLayout();\r
+ main.addComponent(info);\r
\r
- final OptionGroup disabled = new OptionGroup("Levels to disable");\r
- disabled.addItem("L1");\r
- disabled.addItem("L2");\r
- disabled.addItem("L3");\r
- disabled.setMultiSelect(true);\r
- disabled.setImmediate(true);\r
- lo.addComponent(disabled);\r
-\r
- final Label lastClick = new Label("-");\r
- lastClick.setCaption("Last Click:");\r
- lo.addComponent(lastClick);\r
+ OrderedLayout l = new OrderedLayout(\r
+ OrderedLayout.ORIENTATION_HORIZONTAL);\r
+ main.addComponent(l);\r
\r
- ClickListener clickListener = new Button.ClickListener() {\r
+ l.addComponent(new Button("Toggle root", new Button.ClickListener() {\r
public void buttonClick(ClickEvent event) {\r
- lastClick.setValue(event.getButton().getCaption() + " : "\r
- + new Date());\r
+ toggle(root);\r
}\r
- };\r
-\r
- final Panel[] p = new Panel[4];\r
-\r
- p[1] = new Panel("Level1");\r
- lo.addComponent(p[1]);\r
- Button b1 = new Button("Inside level1");\r
- b1.addListener(clickListener);\r
- p[1].addComponent(b1);\r
- Button b1d = new Button("Disabked Inside level1");\r
- b1d.setEnabled(false);\r
- b1d.addListener(clickListener);\r
- p[1].addComponent(b1d);\r
-\r
- p[2] = new Panel("Level2");\r
- p[1].addComponent(p[2]);\r
- Button b2 = new Button("Inside level2");\r
- b2.addListener(clickListener);\r
- p[2].addComponent(b2);\r
- Button b2d = new Button("Disabled Inside level2");\r
- b2d.setEnabled(false);\r
- b2d.addListener(clickListener);\r
- p[2].addComponent(b2d);\r
-\r
- p[3] = new Panel("Level3");\r
- p[2].addComponent(p[3]);\r
- Button b3 = new Button("Inside level3");\r
- b3.addListener(clickListener);\r
- p[3].addComponent(b3);\r
- Button b3d = new Button("Disabled Inside level3");\r
- b3d.setEnabled(false);\r
- b3d.addListener(clickListener);\r
- p[3].addComponent(b3d);\r
-\r
- disabled.addListener(new OptionGroup.ValueChangeListener() {\r
- public void valueChange(ValueChangeEvent event) {\r
- Set disabledIds = (Set) disabled.getValue();\r
- for (int i = 1; i < 4; i++) {\r
- boolean ena = !disabledIds.contains("L" + i);\r
- if (p[i].isEnabled() != ena) {\r
- p[i].setEnabled(ena);\r
- }\r
- }\r
+ }));\r
+ l.addComponent(new Button("Toggle one", new Button.ClickListener() {\r
+ public void buttonClick(ClickEvent event) {\r
+ toggle(one);\r
}\r
- });\r
+ }));\r
+ l.addComponent(new Button("Toggle two", new Button.ClickListener() {\r
+ public void buttonClick(ClickEvent event) {\r
+ toggle(two);\r
+ }\r
+ }));\r
\r
- getMainWindow().addComponent(lo);\r
- }\r
+ root.setLayout(new GridLayout(2, 3));\r
+ main.addComponent(root);\r
\r
- private void createUI(GridLayout layout) {\r
- createPanel(layout);\r
- createForm(layout);\r
+ TextField tf = new TextField("Enabled");\r
+ tf.setImmediate(true);\r
+ root.addComponent(tf);\r
+ tf = new TextField("Disabled");\r
+ tf.setImmediate(true);\r
+ tf.setEnabled(false);\r
+ root.addComponent(tf);\r
\r
- layout.addComponent(new Button("Enable", new ClickListener() {\r
+ root.addComponent(one);\r
+ tf = new TextField("Enabled");\r
+ tf.setImmediate(true);\r
+ one.addComponent(tf);\r
+ tf = new TextField("Disabled");\r
+ tf.setImmediate(true);\r
+ tf.setEnabled(false);\r
+ one.addComponent(tf);\r
\r
- public void buttonClick(ClickEvent event) {\r
- panel.setEnabled(true);\r
- form.setEnabled(true);\r
- }\r
+ root.addComponent(two);\r
+ tf = new TextField("Enabled");\r
+ tf.setImmediate(true);\r
+ two.addComponent(tf);\r
+ tf = new TextField("Disabled");\r
+ tf.setImmediate(true);\r
+ tf.setEnabled(false);\r
+ two.addComponent(tf);\r
\r
- }));\r
+ Form f = new Form();\r
+ f.setFieldFactory(new BaseFieldFactory() {\r
\r
- layout.addComponent(new Button("Disable", new ClickListener() {\r
+ public Field createField(Item item, Object propertyId,\r
+ Component uiContext) {\r
+ Field f = super.createField(item, propertyId, uiContext);\r
+ f.setEnabled(!"disabled".equals(propertyId));\r
+ return f;\r
+ }\r
\r
- public void buttonClick(ClickEvent event) {\r
- panel.setEnabled(false);\r
- form.setEnabled(false);\r
+ });\r
+ f.setItemDataSource(new BeanItem(new MyBean()));\r
+ root.addComponent(f);\r
+\r
+ Table t = new Table();\r
+ t.addContainerProperty("Text", String.class, null);\r
+ for (int i = 0; i < 5; i++) {\r
+ Item item = t.addItem("Item" + i);\r
+ Property p = item.getItemProperty("Text");\r
+ p.setValue(i > 1 ? "enabled" : "disabled");\r
+ }\r
+\r
+ t.setFieldFactory(new BaseFieldFactory() {\r
+\r
+ public Field createField(Container container, Object itemId,\r
+ Object propertyId, Component uiContext) {\r
+ Field f = super.createField(container, itemId, propertyId,\r
+ uiContext);\r
+ Item item = container.getItem(itemId);\r
+ Property p = item.getItemProperty(propertyId);\r
+ if ("disabled".equals(p.getValue())) {\r
+ f.setEnabled(false);\r
+ }\r
+ return f;\r
}\r
\r
- }));\r
+ });\r
+ t.setEditable(true);\r
+ root.addComponent(t);\r
\r
}\r
\r
- private void createForm(GridLayout layout) {\r
- form = new Form();\r
- form.addField(P1, new TextField());\r
- form.addField(P2, new DateField());\r
- form.addField(P3, new DateField());\r
-\r
- layout.addComponent(form);\r
+ private void toggle(ComponentContainer c) {\r
+ boolean enable = "Disabled".equals(c.getCaption());\r
+ c.setEnabled(enable);\r
+ c.setCaption((enable ? "Enabled" : "Disabled"));\r
+ TextField tf = (TextField) c.getComponentIterator().next();\r
+ tf.focus();\r
}\r
\r
- private void createPanel(GridLayout layout) {\r
- panel = new Panel("panel caption");\r
- layout.addComponent(panel);\r
+ class MyBean {\r
+ boolean on = false;\r
+ int number = 1;\r
+ String rw = "read/write";\r
+ String r = "read";\r
+ String disabled = "disabled";\r
\r
- panel.addComponent(new Label("Label 1"));\r
+ public boolean isOn() {\r
+ return on;\r
+ }\r
\r
- OrderedLayout innerLayout1 = new OrderedLayout(\r
- OrderedLayout.ORIENTATION_HORIZONTAL);\r
- innerLayout1.setSpacing(true);\r
- panel.addComponent(innerLayout1);\r
+ public void setOn(boolean on) {\r
+ this.on = on;\r
+ }\r
\r
- TextField tf = new TextField("TextField inside orderedLayout");\r
- tf.setImmediate(true);\r
- innerLayout1.addComponent(tf);\r
- innerLayout1.addComponent(new Button("Button inside orderedLayout",\r
- new ClickListener() {\r
+ public int getNumber() {\r
+ return number;\r
+ }\r
\r
- public void buttonClick(ClickEvent event) {\r
- System.out.println("Clicked "\r
- + event.getButton().getCaption());\r
- }\r
+ public void setNumber(int number) {\r
+ this.number = number;\r
+ }\r
\r
- }));\r
- innerLayout1.addComponent(new Label("Label inside orderedLayout"));\r
+ public String getRw() {\r
+ return rw;\r
+ }\r
\r
- panel.addComponent(new Label("Label 2"));\r
+ public void setRw(String rw) {\r
+ this.rw = rw;\r
+ }\r
\r
- GridLayout innerLayout2 = new GridLayout(3, 3);\r
- innerLayout2.setSpacing(true);\r
- tf = new TextField("TextField inside gridLayout");\r
- tf.setImmediate(true);\r
- innerLayout2.addComponent(tf);\r
- innerLayout2.addComponent(new Button("Button inside gridLayout"));\r
- innerLayout2.addComponent(new Label("Label inside gridLayout"));\r
- panel.addComponent(innerLayout2);\r
+ public String getDisabled() {\r
+ return disabled;\r
+ }\r
+\r
+ public void setDisabled(String disabled) {\r
+ this.disabled = disabled;\r
+ }\r
+\r
+ public String getR() {\r
+ return r;\r
+ }\r
\r
}\r
}\r