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.

TabIndexes.java 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.vaadin.tests.fields;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.annotations.Widgetset;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.tests.components.AbstractTestUIWithLog;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.Button.ClickEvent;
  9. import com.vaadin.ui.Button.ClickListener;
  10. import com.vaadin.ui.CheckBox;
  11. import com.vaadin.ui.ComboBox;
  12. import com.vaadin.ui.Component;
  13. import com.vaadin.ui.DateField;
  14. import com.vaadin.ui.HorizontalLayout;
  15. import com.vaadin.ui.InlineDateField;
  16. import com.vaadin.ui.ListSelect;
  17. import com.vaadin.ui.MenuBar;
  18. import com.vaadin.ui.NativeSelect;
  19. import com.vaadin.ui.PasswordField;
  20. import com.vaadin.ui.RichTextArea;
  21. import com.vaadin.ui.Slider;
  22. import com.vaadin.ui.TextArea;
  23. import com.vaadin.ui.TextField;
  24. import com.vaadin.ui.TreeGrid;
  25. import com.vaadin.ui.TwinColSelect;
  26. import com.vaadin.ui.VerticalLayout;
  27. @Widgetset("com.vaadin.DefaultWidgetSet")
  28. public class TabIndexes extends AbstractTestUIWithLog {
  29. public static final String FIELD_CONTAINER_ID = "field-container";
  30. private List<Focusable> fields = new ArrayList<>();
  31. @Override
  32. protected void setup(VaadinRequest request) {
  33. fields.add(new ComboBox());
  34. fields.add(new NativeSelect());
  35. fields.add(new ListSelect());
  36. fields.add(new TextField());
  37. fields.add(new DateField());
  38. fields.add(new InlineDateField());
  39. TreeGrid<String> tt = new TreeGrid<>();
  40. tt.addColumn(s -> s);
  41. tt.setItems("Foo", "Bar");
  42. fields.add(tt);
  43. fields.add(new TwinColSelect<String>());
  44. fields.add(new PasswordField());
  45. fields.add(new TextArea());
  46. fields.add(new RichTextArea());
  47. fields.add(new CheckBox());
  48. fields.add(new Slider());
  49. MenuBar menubar = new MenuBar();
  50. menubar.addItem("foo", item -> {
  51. });
  52. fields.add(menubar);
  53. HorizontalLayout buttonLayout = new HorizontalLayout();
  54. addComponent(buttonLayout);
  55. Button clearTabIndexes = new Button("Set all tab indexes to 0");
  56. clearTabIndexes.addClickListener(new ClickListener() {
  57. @Override
  58. public void buttonClick(ClickEvent event) {
  59. log("Setting tab indexes to 0");
  60. for (Focusable f : fields) {
  61. f.setTabIndex(0);
  62. }
  63. updateCaptions();
  64. }
  65. });
  66. Button setTabIndexesToOne = new Button("Set all tab indexes to 1");
  67. setTabIndexesToOne.addClickListener(new ClickListener() {
  68. @Override
  69. public void buttonClick(ClickEvent event) {
  70. log("Setting tab indexes to 1");
  71. for (Focusable f : fields) {
  72. f.setTabIndex(1);
  73. }
  74. updateCaptions();
  75. }
  76. });
  77. Button setTabIndexesInOrder = new Button("Set tab indexes to 1..N");
  78. setTabIndexesInOrder.addClickListener(new ClickListener() {
  79. @Override
  80. public void buttonClick(ClickEvent event) {
  81. int tabIndex = 1;
  82. log("Setting tab indexes to 1..N");
  83. for (Focusable f : fields) {
  84. f.setTabIndex(tabIndex++);
  85. }
  86. updateCaptions();
  87. }
  88. });
  89. Button setTabIndexesInReverseOrder = new Button(
  90. "Set tab indexes to N..1");
  91. setTabIndexesInReverseOrder.addClickListener(new ClickListener() {
  92. @Override
  93. public void buttonClick(ClickEvent event) {
  94. int tabIndex = fields.size();
  95. log("Setting tab indexes to N..1");
  96. for (Focusable f : fields) {
  97. f.setTabIndex(tabIndex--);
  98. }
  99. updateCaptions();
  100. }
  101. });
  102. clearTabIndexes.click();
  103. buttonLayout.addComponents(clearTabIndexes, setTabIndexesToOne,
  104. setTabIndexesInOrder, setTabIndexesInReverseOrder);
  105. VerticalLayout vl = new VerticalLayout();
  106. vl.setId(FIELD_CONTAINER_ID);
  107. for (Component f : fields) {
  108. f.setId("field-" + f.getClass().getSimpleName());
  109. vl.addComponent(f);
  110. }
  111. addComponent(vl);
  112. }
  113. protected void updateCaptions() {
  114. for (Focusable f : fields) {
  115. f.setCaption(f.getClass().getSimpleName() + " Tab index: "
  116. + f.getTabIndex());
  117. }
  118. }
  119. @Override
  120. protected Integer getTicketNumber() {
  121. return 10315;
  122. }
  123. @Override
  124. protected String getTestDescription() {
  125. return "Tab index should be propagated into html";
  126. }
  127. }