Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

OrderedLayoutSwapComponents.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.vaadin.tests;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.ui.AbstractOrderedLayout;
  5. import com.vaadin.ui.Button;
  6. import com.vaadin.ui.CustomComponent;
  7. import com.vaadin.ui.HorizontalLayout;
  8. import com.vaadin.ui.Label;
  9. import com.vaadin.ui.VerticalLayout;
  10. /**
  11. *
  12. * This Component contains some simple test to see that component updates its
  13. * contents properly.
  14. *
  15. * @author Vaadin Ltd.
  16. */
  17. public class OrderedLayoutSwapComponents extends CustomComponent {
  18. private final AbstractOrderedLayout main;
  19. List<MyComponent> order = new ArrayList<>();
  20. public OrderedLayoutSwapComponents() {
  21. main = new VerticalLayout();
  22. // main.setSizeFull();
  23. setCompositionRoot(main);
  24. createNewView();
  25. }
  26. public void createNewView() {
  27. main.removeAllComponents();
  28. for (int i = 0; i < 10; i++) {
  29. MyComponent c = new MyComponent("Component " + i);
  30. main.addComponent(c);
  31. order.add(c);
  32. }
  33. setCompositionRoot(main);
  34. }
  35. class MyComponent extends CustomComponent {
  36. private static final int FIRST = 0;
  37. private static final int LAST = 1;
  38. private Button up;
  39. private Button down;
  40. MyComponent(String name) {
  41. HorizontalLayout ol = new HorizontalLayout();
  42. ol.setId(name.replaceAll(" ", ""));
  43. ol.addComponent(new Label(name));
  44. up = new Button("up");
  45. up.addClickListener(event -> {
  46. int newIndex = order.indexOf(this) - 1;
  47. MyComponent old = order.get(newIndex);
  48. main.replaceComponent(old, this);
  49. order.remove(this);
  50. order.add(newIndex, this);
  51. if (newIndex == 0) {
  52. setMode(FIRST);
  53. } else {
  54. setMode(69);
  55. }
  56. });
  57. ol.addComponent(up);
  58. down = new Button("down");
  59. down.addClickListener(event -> {
  60. int newIndex = order.indexOf(MyComponent.this) + 1;
  61. MyComponent old = order.get(newIndex);
  62. main.replaceComponent(old, MyComponent.this);
  63. order.remove(MyComponent.this);
  64. order.add(newIndex, MyComponent.this);
  65. if (newIndex == order.size() - 1) {
  66. MyComponent.this.setMode(LAST);
  67. } else {
  68. MyComponent.this.setMode(69);
  69. }
  70. });
  71. ol.addComponent(down);
  72. setCompositionRoot(ol);
  73. }
  74. public void setMode(int mode) {
  75. up.setEnabled(true);
  76. down.setEnabled(true);
  77. if (mode == FIRST) {
  78. up.setEnabled(false);
  79. } else if (mode == LAST) {
  80. down.setEnabled(false);
  81. }
  82. }
  83. }
  84. }