You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CaptionsInLayoutsWaiAria.java 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package com.vaadin.tests.layouts;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.data.Item;
  5. import com.vaadin.data.Property.ValueChangeEvent;
  6. import com.vaadin.data.Property.ValueChangeListener;
  7. import com.vaadin.server.ThemeResource;
  8. import com.vaadin.server.UserError;
  9. import com.vaadin.tests.components.TestBase;
  10. import com.vaadin.ui.AbstractField;
  11. import com.vaadin.ui.Button;
  12. import com.vaadin.ui.Button.ClickEvent;
  13. import com.vaadin.ui.Button.ClickListener;
  14. import com.vaadin.ui.CheckBox;
  15. import com.vaadin.ui.ComboBox;
  16. import com.vaadin.ui.Component;
  17. import com.vaadin.ui.CssLayout;
  18. import com.vaadin.ui.DateField;
  19. import com.vaadin.ui.FormLayout;
  20. import com.vaadin.ui.GridLayout;
  21. import com.vaadin.ui.HorizontalLayout;
  22. import com.vaadin.ui.Layout;
  23. import com.vaadin.ui.NativeSelect;
  24. import com.vaadin.ui.OptionGroup;
  25. import com.vaadin.ui.PasswordField;
  26. import com.vaadin.ui.TextArea;
  27. import com.vaadin.ui.TextField;
  28. import com.vaadin.ui.VerticalLayout;
  29. public class CaptionsInLayoutsWaiAria extends TestBase {
  30. private static final Object CAPTION = "CAPTION";
  31. private static final Object CLASS = "C";
  32. private static final Object WIDTH = "W";
  33. private NativeSelect layoutSelect;
  34. private Layout layout;
  35. private VerticalLayout verticalLayout;
  36. private HorizontalLayout horizontalLayout;
  37. private GridLayout gridLayout;
  38. private FormLayout formLayout;
  39. private List<AbstractField<?>> components = new ArrayList<AbstractField<?>>();
  40. private CssLayout cssLayout;
  41. private HorizontalLayout layoutParent = new HorizontalLayout();
  42. @Override
  43. protected void setup() {
  44. // setTheme("tests-tickets");
  45. addComponent(createLayoutSelect());
  46. addComponent(toggleRequired());
  47. // addComponent(toggleCaptions());
  48. // addComponent(toggleError());
  49. addComponent(toggleIcon());
  50. addComponent(toggleReadOnly());
  51. addComponent(toggleInvalid());
  52. addComponent(toggleEnabled());
  53. addComponent(addCaptionText());
  54. // layoutParent.addComponent(new
  55. // NativeButton("Button right of layout"));
  56. addComponent(layoutParent);
  57. // addComponent(new NativeButton("Button below layout"));
  58. createComponents();
  59. layoutSelect.setValue(layoutSelect.getItemIds().iterator().next());
  60. }
  61. private Component addCaptionText() {
  62. Button b = new Button("Add caption text");
  63. b.addListener(new ClickListener() {
  64. @Override
  65. public void buttonClick(ClickEvent event) {
  66. prependCaptions("a");
  67. }
  68. });
  69. return b;
  70. }
  71. protected void prependCaptions(String prepend) {
  72. for (AbstractField<?> c : components) {
  73. c.setCaption(prepend + c.getCaption());
  74. }
  75. }
  76. private Component toggleRequired() {
  77. CheckBox requiredToggle = new CheckBox();
  78. requiredToggle.setImmediate(true);
  79. requiredToggle.setCaption("Required");
  80. requiredToggle.addListener(new ValueChangeListener() {
  81. @Override
  82. public void valueChange(ValueChangeEvent event) {
  83. setRequired((Boolean) event.getProperty().getValue());
  84. }
  85. });
  86. return requiredToggle;
  87. }
  88. private Component toggleIcon() {
  89. CheckBox iconToggle = new CheckBox();
  90. iconToggle.setImmediate(true);
  91. iconToggle.setCaption("Icons");
  92. iconToggle.addListener(new ValueChangeListener() {
  93. @Override
  94. public void valueChange(ValueChangeEvent event) {
  95. setIcon((Boolean) event.getProperty().getValue());
  96. }
  97. });
  98. return iconToggle;
  99. }
  100. private Component toggleReadOnly() {
  101. CheckBox readOnlyToggle = new CheckBox();
  102. readOnlyToggle.setImmediate(true);
  103. readOnlyToggle.setCaption("Read only");
  104. readOnlyToggle.addValueChangeListener(new ValueChangeListener() {
  105. @Override
  106. public void valueChange(ValueChangeEvent event) {
  107. setReadOnly((Boolean) event.getProperty().getValue());
  108. }
  109. });
  110. return readOnlyToggle;
  111. }
  112. private Component toggleEnabled() {
  113. CheckBox enabledToggle = new CheckBox();
  114. enabledToggle.setImmediate(true);
  115. enabledToggle.setValue(true);
  116. enabledToggle.setCaption("Enabled");
  117. enabledToggle.addValueChangeListener(new ValueChangeListener() {
  118. @Override
  119. public void valueChange(ValueChangeEvent event) {
  120. setEnabled((Boolean) event.getProperty().getValue());
  121. }
  122. });
  123. return enabledToggle;
  124. }
  125. private Component toggleInvalid() {
  126. CheckBox invalid = new CheckBox("Invalid");
  127. invalid.setImmediate(true);
  128. invalid.addValueChangeListener(new ValueChangeListener() {
  129. @Override
  130. public void valueChange(ValueChangeEvent event) {
  131. setInvalid((Boolean) event.getProperty().getValue());
  132. }
  133. });
  134. return invalid;
  135. }
  136. protected void setInvalid(boolean value) {
  137. UserError userError = null;
  138. if (value) {
  139. userError = new UserError(
  140. "Der eingegebene Wert ist nicht zulässig!");
  141. }
  142. for (AbstractField<?> c : components) {
  143. c.setComponentError(userError);
  144. }
  145. }
  146. protected void setRequired(boolean value) {
  147. for (AbstractField<?> c : components) {
  148. c.setRequired(value);
  149. }
  150. }
  151. protected void setIcon(boolean value) {
  152. for (AbstractField<?> c : components) {
  153. if (!value) {
  154. c.setIcon(null);
  155. } else {
  156. c.setIcon(new ThemeResource("../runo/icons/16/ok.png"));
  157. }
  158. }
  159. }
  160. protected void setReadOnly(boolean value) {
  161. for (AbstractField<?> c : components) {
  162. c.setReadOnly(value);
  163. }
  164. }
  165. protected void setEnabled(boolean value) {
  166. for (AbstractField<?> c : components) {
  167. c.setEnabled(value);
  168. }
  169. }
  170. private Component toggleError() {
  171. CheckBox errorToggle = new CheckBox();
  172. errorToggle.setImmediate(true);
  173. errorToggle.setCaption("Error");
  174. errorToggle.addListener(new ValueChangeListener() {
  175. @Override
  176. public void valueChange(ValueChangeEvent event) {
  177. setError((Boolean) event.getProperty().getValue());
  178. }
  179. });
  180. return errorToggle;
  181. }
  182. protected void setError(boolean value) {
  183. for (AbstractField<?> c : components) {
  184. if (value) {
  185. c.setComponentError(new UserError("error"));
  186. } else {
  187. c.setComponentError(null);
  188. }
  189. }
  190. }
  191. private void createComponents() {
  192. components.add(new TextField("Default TextBox"));
  193. components.add(new TextArea("Default TextArea."));
  194. // components.add(new RichTextArea("Default RichtTextArea"));
  195. components.add(new PasswordField("Default Password"));
  196. components.add(new DateField("Default DateField"));
  197. // PopupDateField popupDateField = new
  198. // PopupDateField("Default DateField");
  199. // popupDateField.setTextFieldEnabled(false);
  200. // components.add(popupDateField);
  201. components.add(new CheckBox("Default CheckBox"));
  202. ComboBox comboBox = new ComboBox("Default ComboBox");
  203. comboBox.addItem("Item1");
  204. components.add(comboBox);
  205. OptionGroup radioGroup = new OptionGroup("Single Items");
  206. radioGroup.addItem("Single Item 1");
  207. radioGroup.addItem("Single Item 2");
  208. radioGroup.setMultiSelect(false);
  209. components.add(radioGroup);
  210. OptionGroup checkGroup = new OptionGroup("Multi Items");
  211. checkGroup.addItem("Multi Item 1");
  212. checkGroup.addItem("Multi Item 2");
  213. checkGroup.setMultiSelect(true);
  214. components.add(checkGroup);
  215. // Tree tree = new Tree();
  216. // tree.setCaption("tree");
  217. // tree.addItem("single item");
  218. // components.add(tree);
  219. }
  220. private void setLayout(Layout newLayout) {
  221. if (layout == null) {
  222. layoutParent.addComponent(newLayout, 0);
  223. } else {
  224. layoutParent.replaceComponent(layout, newLayout);
  225. }
  226. layout = newLayout;
  227. for (Component c : components) {
  228. if (c.getParent() != layout) {
  229. layout.addComponent(c);
  230. }
  231. }
  232. }
  233. private Layout getLayout(String caption,
  234. Class<? extends Layout> layoutClass, String width) {
  235. Layout l;
  236. if (layoutClass == VerticalLayout.class) {
  237. if (verticalLayout == null) {
  238. verticalLayout = new VerticalLayout();
  239. verticalLayout.setStyleName("borders");
  240. }
  241. l = verticalLayout;
  242. } else if (layoutClass == HorizontalLayout.class) {
  243. if (horizontalLayout == null) {
  244. horizontalLayout = new HorizontalLayout();
  245. horizontalLayout.setStyleName("borders");
  246. }
  247. l = horizontalLayout;
  248. } else if (layoutClass == GridLayout.class) {
  249. if (gridLayout == null) {
  250. gridLayout = new GridLayout();
  251. gridLayout.setStyleName("borders");
  252. }
  253. l = gridLayout;
  254. } else if (layoutClass == CssLayout.class) {
  255. if (cssLayout == null) {
  256. cssLayout = new CssLayout();
  257. cssLayout.setStyleName("borders");
  258. }
  259. l = cssLayout;
  260. } else if (layoutClass == FormLayout.class) {
  261. if (formLayout == null) {
  262. formLayout = new FormLayout();
  263. formLayout.setStyleName("borders");
  264. }
  265. l = formLayout;
  266. } else {
  267. return null;
  268. }
  269. l.setCaption(caption);
  270. if (width.equals("auto")) {
  271. width = null;
  272. }
  273. l.setWidth(width);
  274. // addComponent(l);
  275. return l;
  276. }
  277. private Component createLayoutSelect() {
  278. layoutSelect = new NativeSelect("Layout");
  279. layoutSelect.addContainerProperty(CAPTION, String.class, "");
  280. layoutSelect.addContainerProperty(CLASS, Class.class, "");
  281. layoutSelect.addContainerProperty(WIDTH, String.class, "");
  282. layoutSelect.setItemCaptionPropertyId(CAPTION);
  283. layoutSelect.setNullSelectionAllowed(false);
  284. for (Class<?> cls : new Class[] { HorizontalLayout.class,
  285. VerticalLayout.class, GridLayout.class, CssLayout.class,
  286. FormLayout.class }) {
  287. for (String width : new String[] { "auto" }) {
  288. Object id = layoutSelect.addItem();
  289. Item i = layoutSelect.getItem(id);
  290. i.getItemProperty(CAPTION).setValue(
  291. cls.getSimpleName() + ", " + width);
  292. i.getItemProperty(CLASS).setValue(cls);
  293. i.getItemProperty(WIDTH).setValue(width);
  294. }
  295. }
  296. layoutSelect.setImmediate(true);
  297. layoutSelect.addListener(new ValueChangeListener() {
  298. @Override
  299. @SuppressWarnings("unchecked")
  300. public void valueChange(ValueChangeEvent event) {
  301. Item i = layoutSelect.getItem(event.getProperty().getValue());
  302. setLayout(getLayout((String) i.getItemProperty(CAPTION)
  303. .getValue(), (Class<? extends Layout>) i
  304. .getItemProperty(CLASS).getValue(), (String) i
  305. .getItemProperty(WIDTH).getValue()));
  306. }
  307. });
  308. return layoutSelect;
  309. }
  310. @Override
  311. protected String getDescription() {
  312. return "Tests what happens when the caption changes in various layouts. Behavior should be consistent.";
  313. }
  314. @Override
  315. protected Integer getTicketNumber() {
  316. return 5424;
  317. }
  318. }