123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- package com.vaadin.tests.components;
-
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedHashMap;
-
- import com.vaadin.ui.AbstractComponentContainer;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Component;
- import com.vaadin.ui.DateField;
- import com.vaadin.ui.HasComponents.ComponentAttachListener;
- import com.vaadin.ui.HasComponents.ComponentDetachListener;
- import com.vaadin.ui.HorizontalSplitPanel;
- import com.vaadin.ui.InlineDateField;
- import com.vaadin.ui.NativeButton;
- import com.vaadin.ui.RichTextArea;
- import com.vaadin.ui.TabSheet;
- import com.vaadin.ui.VerticalSplitPanel;
- import com.vaadin.v7.ui.Table;
- import com.vaadin.v7.ui.TextArea;
- import com.vaadin.v7.ui.TextField;
-
- public abstract class AbstractComponentContainerTest<T extends AbstractComponentContainer>
- extends AbstractComponentTest<T>
- implements ComponentAttachListener, ComponentDetachListener {
-
- private String CATEGORY_COMPONENT_CONTAINER_FEATURES = "Component container features";
- private Command<T, ComponentSize> addButtonCommand = new Command<T, ComponentSize>() {
-
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- Button b = new Button("A button");
- c.addComponent(b);
- size.apply(b);
- }
- };
-
- private Command<T, ComponentSize> addNativeButtonCommand = new Command<T, ComponentSize>() {
-
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- NativeButton b = new NativeButton("Native button");
- c.addComponent(b);
- size.apply(b);
- }
- };
-
- private Command<T, ComponentSize> addTextAreaCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- TextArea ta = new TextArea();
- c.addComponent(ta);
- size.apply(ta);
- }
- };
-
- private Command<T, ComponentSize> addRichTextAreaCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- RichTextArea ta = new RichTextArea();
- c.addComponent(ta);
- size.apply(ta);
- }
- };
-
- private Command<T, ComponentSize> addTextFieldCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- TextField tf = new TextField();
- c.addComponent(tf);
- size.apply(tf);
- }
- };
-
- private Command<T, ComponentSize> addInlineDateFieldCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- InlineDateField tf = new InlineDateField();
- c.addComponent(tf);
- size.apply(tf);
- }
- };
- private Command<T, ComponentSize> addPopupDateFieldCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- DateField tf = new DateField();
- c.addComponent(tf);
- size.apply(tf);
- }
- };
-
- private Command<T, ComponentSize> addVerticalSplitPanelCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- VerticalSplitPanel vsp = new VerticalSplitPanel();
- c.addComponent(vsp);
- size.apply(vsp);
- }
- };
-
- private Command<T, ComponentSize> addHorizontalSplitPanelCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- HorizontalSplitPanel vsp = new HorizontalSplitPanel();
- c.addComponent(vsp);
- size.apply(vsp);
- }
- };
-
- private Command<T, ComponentSize> addTabSheetCommand = new Command<T, ComponentSize>() {
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- TabSheet ts = createTabSheet();
- c.addComponent(ts);
- size.apply(ts);
- }
- };
-
- private Command<T, ComponentSize> addTableCommand = new Command<T, ComponentSize>() {
-
- @Override
- public void execute(T c, ComponentSize size, Object data) {
- Table t = createTable();
- c.addComponent(t);
- size.apply(t);
- }
- };
- private Command<T, Object> removeAllComponentsCommand = new Command<T, Object>() {
- @Override
- public void execute(T c, Object value, Object data) {
- c.removeAllComponents();
- }
- };
- private Command<T, Integer> removeComponentByIndexCommand = new Command<T, Integer>() {
-
- @Override
- public void execute(T c, Integer value, Object data) {
- Component child = getComponentAtIndex(c, value);
- c.removeComponent(child);
-
- }
- };
- private Command<T, Boolean> componentAttachListenerCommand = new Command<T, Boolean>() {
-
- @Override
- public void execute(T c, Boolean value, Object data) {
- if (value) {
- c.addComponentAttachListener(
- AbstractComponentContainerTest.this);
- } else {
- c.removeComponentAttachListener(
- AbstractComponentContainerTest.this);
- }
- }
- };
-
- private Command<T, Boolean> componentDetachListenerCommand = new Command<T, Boolean>() {
-
- @Override
- public void execute(T c, Boolean value, Object data) {
- if (value) {
- c.addComponentDetachListener(
- AbstractComponentContainerTest.this);
- } else {
- c.removeComponentDetachListener(
- AbstractComponentContainerTest.this);
- }
- }
- };
-
- private Command<T, Integer> setComponentHeight = new Command<T, Integer>() {
-
- @Override
- public void execute(T c, Integer value, Object data) {
- Component child = getComponentAtIndex(c, value);
- child.setHeight((String) data);
-
- }
- };
-
- private Command<T, Integer> setComponentWidth = new Command<T, Integer>() {
-
- @Override
- public void execute(T c, Integer value, Object data) {
- Component child = getComponentAtIndex(c, value);
- child.setWidth((String) data);
-
- }
- };
-
- protected static class ComponentSize {
- private String width, height;
-
- public ComponentSize(String width, String height) {
- this.width = width;
- this.height = height;
- }
-
- public void apply(Component target) {
- target.setWidth(width);
- target.setHeight(height);
- }
-
- public String getWidth() {
- return width;
- }
-
- public String getHeight() {
- return height;
- }
-
- @Override
- public String toString() {
- String s = "";
- s += width == null ? "auto" : width;
- s += " x ";
- s += height == null ? "auto" : height;
- return s;
- }
- }
-
- @Override
- protected void createActions() {
- super.createActions();
-
- createAddComponentActions(CATEGORY_COMPONENT_CONTAINER_FEATURES);
- createRemoveComponentActions(CATEGORY_COMPONENT_CONTAINER_FEATURES);
- createChangeComponentSizeActions(CATEGORY_COMPONENT_CONTAINER_FEATURES);
- createComponentAttachListener(CATEGORY_LISTENERS);
- createComponentDetachListener(CATEGORY_LISTENERS);
- }
-
- protected Component getComponentAtIndex(T container, int value) {
- Iterator<Component> iter = container.getComponentIterator();
- for (int i = 0; i < value; i++) {
- iter.next();
- }
-
- return iter.next();
- }
-
- protected Table createTable() {
- Table t = new Table();
- t.addContainerProperty("property 1", String.class, "");
- t.addContainerProperty("property 2", String.class, "");
- t.addContainerProperty("property 3", String.class, "");
- for (int i = 1; i < 10; i++) {
- t.addItem(new Object[] { "row/col " + i + "/1",
- "row/col " + i + "/2", "row/col " + i + "/3" },
- String.valueOf(i));
- }
- return t;
- }
-
- protected TabSheet createTabSheet() {
- TabSheet ts = new TabSheet();
- Table t = createTable();
- t.setSizeFull();
- ts.addTab(t, "Size full Table", ICON_16_USER_PNG_UNCACHEABLE);
- ts.addTab(new Button("A button"), "Button", null);
- return ts;
- }
-
- private void createComponentAttachListener(String category) {
- createBooleanAction("Component attach listener", category, false,
- componentAttachListenerCommand);
-
- }
-
- private void createComponentDetachListener(String category) {
- createBooleanAction("Component detach listener", category, false,
- componentDetachListenerCommand);
-
- }
-
- private void createRemoveComponentActions(String category) {
- String subCategory = "Remove component";
- String byIndexCategory = "By index";
-
- createCategory(subCategory, category);
- createCategory(byIndexCategory, subCategory);
- createClickAction("Remove all components", subCategory,
- removeAllComponentsCommand, null);
- for (int i = 0; i < 20; i++) {
- createClickAction("Remove component " + i, byIndexCategory,
- removeComponentByIndexCommand, Integer.valueOf(i));
- }
-
- }
-
- private void createAddComponentActions(String category) {
- String subCategory = "Add component";
- createCategory(subCategory, category);
-
- LinkedHashMap<String, Command<T, ComponentSize>> addCommands = new LinkedHashMap<>();
- addCommands.put("Button", addButtonCommand);
- addCommands.put("NativeButton", addNativeButtonCommand);
- addCommands.put("TextField", addTextFieldCommand);
- addCommands.put("TextArea", addTextAreaCommand);
- addCommands.put("RichTextArea", addRichTextAreaCommand);
- addCommands.put("TabSheet", addTabSheetCommand);
- addCommands.put("Table", addTableCommand);
- addCommands.put("InlineDateField", addInlineDateFieldCommand);
- addCommands.put("PopupDateField", addPopupDateFieldCommand);
- addCommands.put("VerticalSplitPanel", addVerticalSplitPanelCommand);
- addCommands.put("HorizontalSplitPanel", addHorizontalSplitPanelCommand);
-
- HashSet<String> noVerticalSize = new HashSet<>();
- noVerticalSize.add("TextField");
- noVerticalSize.add("Button");
-
- // addCommands.put("AbsoluteLayout", addAbsoluteLayoutCommand);
- // addCommands.put("HorizontalLayout", addHorizontalLayoutCommand);
- // addCommands.put("VerticalLayout", addVerticalLayoutCommand);
-
- ComponentSize[] sizes = new ComponentSize[] {
- new ComponentSize(null, null), new ComponentSize("200px", null),
- new ComponentSize("100%", null),
- new ComponentSize(null, "200px"),
- new ComponentSize(null, "100%"),
- new ComponentSize("300px", "300px"),
- new ComponentSize("100%", "100%"),
-
- };
-
- for (String componentCategory : addCommands.keySet()) {
- createCategory(componentCategory, subCategory);
-
- for (ComponentSize size : sizes) {
- if (size.getHeight() != null
- && noVerticalSize.contains(componentCategory)) {
- continue;
- }
- createClickAction(size.toString(), componentCategory,
- addCommands.get(componentCategory), size);
- }
- }
-
- }
-
- private void createChangeComponentSizeActions(String category) {
- String widthCategory = "Change component width";
- createCategory(widthCategory, category);
- String heightCategory = "Change component height";
- createCategory(heightCategory, category);
-
- String[] options = new String[] { "100px", "200px", "50%", "100%" };
- for (int i = 0; i < 20; i++) {
- String componentWidthCategory = "Component " + i + " width";
- String componentHeightCategory = "Component " + i + " height";
- createCategory(componentWidthCategory, widthCategory);
- createCategory(componentHeightCategory, heightCategory);
-
- createClickAction("auto", componentHeightCategory,
- setComponentHeight, Integer.valueOf(i), null);
- createClickAction("auto", componentWidthCategory, setComponentWidth,
- Integer.valueOf(i), null);
- for (String option : options) {
- createClickAction(option, componentHeightCategory,
- setComponentHeight, Integer.valueOf(i), option);
- createClickAction(option, componentWidthCategory,
- setComponentWidth, Integer.valueOf(i), option);
- }
-
- }
-
- }
-
- @Override
- public void componentDetachedFromContainer(ComponentDetachEvent event) {
- log(event.getClass().getSimpleName() + ": "
- + event.getDetachedComponent().getClass().getSimpleName()
- + " detached from "
- + event.getContainer().getClass().getSimpleName());
- }
-
- @Override
- public void componentAttachedToContainer(ComponentAttachEvent event) {
- log(event.getClass().getSimpleName() + ": "
- + event.getAttachedComponent().getClass().getSimpleName()
- + " attached to "
- + event.getContainer().getClass().getSimpleName());
-
- }
-
- }
|