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