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.

Parameters.java 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*
  2. @ITMillApache2LicenseForJavaFiles@
  3. */
  4. package com.itmill.toolkit.demo;
  5. import java.net.URL;
  6. import java.util.Iterator;
  7. import java.util.Map;
  8. import com.itmill.toolkit.terminal.DownloadStream;
  9. import com.itmill.toolkit.terminal.ExternalResource;
  10. import com.itmill.toolkit.terminal.ParameterHandler;
  11. import com.itmill.toolkit.terminal.Sizeable;
  12. import com.itmill.toolkit.terminal.URIHandler;
  13. import com.itmill.toolkit.ui.ExpandLayout;
  14. import com.itmill.toolkit.ui.Label;
  15. import com.itmill.toolkit.ui.Link;
  16. import com.itmill.toolkit.ui.Panel;
  17. import com.itmill.toolkit.ui.Table;
  18. import com.itmill.toolkit.ui.Window;
  19. /**
  20. * This is a demonstration of how URL parameters can be recieved and handled.
  21. * Parameters and URL:s can be received trough the windows by registering
  22. * URIHandler and ParameterHandler classes window.
  23. *
  24. * @since 3.1.1
  25. */
  26. public class Parameters extends com.itmill.toolkit.Application implements
  27. URIHandler, ParameterHandler {
  28. private final Label context = new Label();
  29. private final Label relative = new Label();
  30. private final Table params = new Table();
  31. public void init() {
  32. final Window main = new Window("Parameters demo");
  33. setMainWindow(main);
  34. // This class acts both as URI handler and parameter handler
  35. main.addURIHandler(this);
  36. main.addParameterHandler(this);
  37. final ExpandLayout layout = new ExpandLayout();
  38. final Label info = new Label("To test URI and Parameter Handlers, "
  39. + "add get parameters to URL. For example try examples below: ");
  40. info.setCaption("Usage info");
  41. layout.addComponent(info);
  42. try {
  43. final URL u1 = new URL(getURL(), "test/uri?test=1&test=2");
  44. final URL u2 = new URL(getURL(), "foo/bar?mary=john&count=3");
  45. layout.addComponent(new Link(u1.toString(),
  46. new ExternalResource(u1)));
  47. layout.addComponent(new Label("Or this: "));
  48. layout.addComponent(new Link(u2.toString(),
  49. new ExternalResource(u2)));
  50. } catch (final Exception e) {
  51. System.out.println("Couldn't get hostname for this machine: "
  52. + e.toString());
  53. e.printStackTrace();
  54. }
  55. // URI
  56. final Panel panel1 = new Panel("URI Handler");
  57. context.setCaption("Last URI handler context");
  58. panel1.addComponent(context);
  59. relative.setCaption("Last relative URI");
  60. panel1.addComponent(relative);
  61. layout.addComponent(panel1);
  62. params.addContainerProperty("Key", String.class, "");
  63. params.addContainerProperty("Value", String.class, "");
  64. final Panel panel2 = new Panel("Parameter Handler");
  65. params.setHeight(100);
  66. params.setHeightUnits(Sizeable.UNITS_PERCENTAGE);
  67. panel2.setHeight(100);
  68. panel2.setHeightUnits(Sizeable.UNITS_PERCENTAGE);
  69. panel2.setLayout(new ExpandLayout());
  70. panel2.getLayout().setMargin(true);
  71. params.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_ID);
  72. panel2.addComponent(params);
  73. layout.addComponent(panel2);
  74. // expand parameter panel and its table
  75. layout.expand(panel2);
  76. layout.setMargin(true);
  77. layout.setSpacing(true);
  78. main.setLayout(layout);
  79. }
  80. /**
  81. * Update URI
  82. *
  83. * @see com.itmill.toolkit.terminal.URIHandler#handleURI(URL, String)
  84. */
  85. public DownloadStream handleURI(URL context, String relativeUri) {
  86. this.context.setValue(context.toString());
  87. relative.setValue(relativeUri);
  88. return null;
  89. }
  90. /**
  91. * Handles GET parameters, in this demo GET parameteres are used to
  92. * communicate with EmbeddedToolkit.jsp
  93. */
  94. public void handleParameters(Map parameters) {
  95. params.removeAllItems();
  96. for (final Iterator i = parameters.keySet().iterator(); i.hasNext();) {
  97. final String name = (String) i.next();
  98. final String[] values = (String[]) parameters.get(name);
  99. String v = "";
  100. for (int j = 0; j < values.length; j++) {
  101. if (v.length() > 0) {
  102. v += ", ";
  103. }
  104. v += "'" + values[j] + "'";
  105. }
  106. params.addItem(new Object[] { name, v }, name);
  107. }
  108. }
  109. }