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.

RandomComponents.java 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. /*
  2. @ITMillApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.automatedtests.util;
  5. import java.io.Serializable;
  6. import java.util.ArrayList;
  7. import java.util.Date;
  8. import java.util.Random;
  9. import com.vaadin.automatedtests.ComponentsInTable;
  10. import com.vaadin.data.Container.ItemSetChangeListener;
  11. import com.vaadin.data.Container.PropertySetChangeListener;
  12. import com.vaadin.data.Property.ValueChangeListener;
  13. import com.vaadin.demo.featurebrowser.ButtonExample;
  14. import com.vaadin.demo.featurebrowser.ClientCachingExample;
  15. import com.vaadin.demo.featurebrowser.ComboBoxExample;
  16. import com.vaadin.demo.featurebrowser.EmbeddedBrowserExample;
  17. import com.vaadin.demo.featurebrowser.LabelExample;
  18. import com.vaadin.demo.featurebrowser.LayoutExample;
  19. import com.vaadin.demo.featurebrowser.NotificationExample;
  20. import com.vaadin.demo.featurebrowser.RichTextExample;
  21. import com.vaadin.demo.featurebrowser.SelectExample;
  22. import com.vaadin.demo.featurebrowser.TableExample;
  23. import com.vaadin.demo.featurebrowser.TreeExample;
  24. import com.vaadin.demo.featurebrowser.ValueInputExample;
  25. import com.vaadin.demo.featurebrowser.WindowingExample;
  26. import com.vaadin.terminal.ExternalResource;
  27. import com.vaadin.terminal.ThemeResource;
  28. import com.vaadin.ui.AbstractComponent;
  29. import com.vaadin.ui.Button;
  30. import com.vaadin.ui.ComponentContainer;
  31. import com.vaadin.ui.DateField;
  32. import com.vaadin.ui.Embedded;
  33. import com.vaadin.ui.GridLayout;
  34. import com.vaadin.ui.Label;
  35. import com.vaadin.ui.Link;
  36. import com.vaadin.ui.OrderedLayout;
  37. import com.vaadin.ui.Panel;
  38. import com.vaadin.ui.Select;
  39. import com.vaadin.ui.TabSheet;
  40. import com.vaadin.ui.TextField;
  41. public class RandomComponents implements Serializable {
  42. private Random rand = null;
  43. private static Date date = new Date(2002, 2, 3, 4, 5, 6);
  44. public RandomComponents() {
  45. // Always use the same seed, used to ensure deterministic behaviour
  46. rand = new Random(1);
  47. }
  48. /**
  49. * Get random component container
  50. *
  51. * @param caption
  52. * @return
  53. */
  54. public ComponentContainer getRandomComponentContainer(String caption) {
  55. ComponentContainer result = null;
  56. final int randint = rand.nextInt(5);
  57. switch (randint) {
  58. case 0:
  59. result = new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL);
  60. ((OrderedLayout) result).setCaption("OrderedLayout_horizontal_"
  61. + caption);
  62. break;
  63. case 1:
  64. result = new OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL);
  65. ((OrderedLayout) result).setCaption("OrderedLayout_vertical_"
  66. + caption);
  67. break;
  68. case 2:
  69. GridLayout gl;
  70. if (rand.nextInt(1) > 0) {
  71. gl = new GridLayout();
  72. } else {
  73. gl = new GridLayout(rand.nextInt(3) + 1, rand.nextInt(3) + 1);
  74. }
  75. gl.setCaption("GridLayout_" + caption);
  76. gl.setDescription(gl.getCaption());
  77. for (int x = 0; x < gl.getColumns(); x++) {
  78. for (int y = 0; y < gl.getRows(); y++) {
  79. // gl.addComponent(getExamplePicture("x=" + x + ", y=" + y),
  80. // x, y);
  81. gl.addComponent(new Label("x=" + x + ", y=" + y));
  82. }
  83. }
  84. result = gl;
  85. break;
  86. case 3:
  87. result = new Panel();
  88. ((Panel) result).setCaption("Panel_" + caption);
  89. break;
  90. case 4:
  91. final TabSheet ts = new TabSheet();
  92. ts.setCaption("TabSheet_" + caption);
  93. // randomly select one of the tabs
  94. final int selectedTab = rand.nextInt(3);
  95. final ArrayList tabs = new ArrayList();
  96. for (int i = 0; i < 3; i++) {
  97. String tabCaption = "tab" + i;
  98. if (selectedTab == i) {
  99. tabCaption = "tabX";
  100. }
  101. tabs.add(new OrderedLayout());
  102. ts.addTab((ComponentContainer) tabs.get(tabs.size() - 1),
  103. tabCaption, null);
  104. }
  105. ts.setSelectedTab((ComponentContainer) tabs.get(selectedTab));
  106. result = ts;
  107. break;
  108. }
  109. return result;
  110. }
  111. public AbstractComponent getRandomComponent(int caption) {
  112. AbstractComponent result = null;
  113. int randint = rand.nextInt(23);
  114. MultiListener l = new MultiListener();
  115. switch (randint) {
  116. case 0:
  117. // Label
  118. result = new Label();
  119. result.setCaption("Label component " + caption);
  120. result.setDebugId(result.getCaption());
  121. break;
  122. case 1:
  123. // Button
  124. result = new Button();
  125. result.setCaption("Button component " + caption);
  126. result.setDebugId(result.getCaption());
  127. // some listeners
  128. ((Button) result).addListener((Button.ClickListener) l);
  129. break;
  130. case 2:
  131. // TextField
  132. result = new TextField();
  133. result.setCaption("TextField component " + caption);
  134. result.setDebugId(result.getCaption());
  135. break;
  136. case 3:
  137. // Select
  138. result = new Select("Select component " + caption);
  139. result.setCaption("Select component " + caption);
  140. result.setDebugId(result.getCaption());
  141. result.setImmediate(true);
  142. ((Select) result).setNewItemsAllowed(true);
  143. // items
  144. ((Select) result).addItem("first");
  145. ((Select) result).addItem("first");
  146. ((Select) result).addItem("first");
  147. ((Select) result).addItem("second");
  148. ((Select) result).addItem("third");
  149. ((Select) result).addItem("fourth");
  150. // some listeners
  151. ((Select) result).addListener((ValueChangeListener) l);
  152. ((Select) result).addListener((PropertySetChangeListener) l);
  153. ((Select) result).addListener((ItemSetChangeListener) l);
  154. break;
  155. case 4:
  156. // Link
  157. result = new Link("", new ExternalResource("http://www.itmill.com"));
  158. result.setCaption("Link component " + caption);
  159. break;
  160. case 5:
  161. // Link
  162. result = new Panel();
  163. result.setCaption("Panel component " + caption);
  164. ((Panel) result)
  165. .addComponent(new Label(
  166. "Panel is a container for other components, by default it draws a frame around it's "
  167. + "extremities and may have a caption to clarify the nature of the contained components' purpose."
  168. + " Panel contains an layout where the actual contained components are added, "
  169. + "this layout may be switched on the fly."));
  170. ((Panel) result).setWidth(250);
  171. break;
  172. case 6:
  173. // Datefield
  174. result = new DateField();
  175. ((DateField) result).setStyleName("calendar");
  176. ((DateField) result).setValue(date);
  177. result.setCaption("Calendar component " + caption);
  178. result.setDebugId(result.getCaption());
  179. break;
  180. case 7:
  181. // Datefield
  182. result = new DateField();
  183. ((DateField) result).setValue(date);
  184. result.setCaption("Calendar component " + caption);
  185. result.setDebugId(result.getCaption());
  186. break;
  187. case 8:
  188. result = new OrderedLayout();
  189. ((OrderedLayout) result).addComponent(new ButtonExample());
  190. break;
  191. case 9:
  192. result = new OrderedLayout();
  193. ((OrderedLayout) result).addComponent(new ClientCachingExample());
  194. break;
  195. case 10:
  196. result = new OrderedLayout();
  197. ((OrderedLayout) result).addComponent(new ComboBoxExample());
  198. break;
  199. case 11:
  200. result = new OrderedLayout();
  201. ((OrderedLayout) result).addComponent(new EmbeddedBrowserExample());
  202. break;
  203. case 12:
  204. result = new OrderedLayout();
  205. ((OrderedLayout) result).addComponent(new EmbeddedBrowserExample());
  206. break;
  207. case 13:
  208. result = new OrderedLayout();
  209. ((OrderedLayout) result).addComponent(new LabelExample());
  210. break;
  211. case 14:
  212. result = new OrderedLayout();
  213. ((OrderedLayout) result).addComponent(new LayoutExample());
  214. break;
  215. case 15:
  216. result = new OrderedLayout();
  217. ((OrderedLayout) result).addComponent(new NotificationExample());
  218. break;
  219. case 16:
  220. result = new OrderedLayout();
  221. ((OrderedLayout) result).addComponent(new RichTextExample());
  222. break;
  223. case 17:
  224. result = new OrderedLayout();
  225. ((OrderedLayout) result).addComponent(new SelectExample());
  226. break;
  227. case 18:
  228. result = new OrderedLayout();
  229. ((OrderedLayout) result).addComponent(new ValueInputExample());
  230. break;
  231. case 19:
  232. result = new OrderedLayout();
  233. ((OrderedLayout) result).addComponent(new WindowingExample());
  234. break;
  235. case 20:
  236. result = new OrderedLayout();
  237. ((OrderedLayout) result).addComponent(new TreeExample());
  238. break;
  239. case 21:
  240. result = new OrderedLayout();
  241. ((OrderedLayout) result).addComponent(new TableExample());
  242. break;
  243. case 22:
  244. result = new OrderedLayout();
  245. ((OrderedLayout) result)
  246. .addComponent(new ComponentsInTable(4, 1000));
  247. break;
  248. }
  249. return result;
  250. }
  251. /**
  252. * Add demo components to given container
  253. *
  254. * @param container
  255. */
  256. public void fillLayout(ComponentContainer container, int numberOfComponents) {
  257. for (int i = 0; i < numberOfComponents; i++) {
  258. container.addComponent(getRandomComponent(i));
  259. }
  260. }
  261. public AbstractComponent getExamplePicture(String caption) {
  262. final ThemeResource res = new ThemeResource("test.png");
  263. final Embedded em = new Embedded("Embedded " + caption, res);
  264. return em;
  265. }
  266. }