diff options
Diffstat (limited to 'src/com/itmill/toolkit/demo/Parameters.java')
-rw-r--r-- | src/com/itmill/toolkit/demo/Parameters.java | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/Parameters.java b/src/com/itmill/toolkit/demo/Parameters.java new file mode 100644 index 0000000000..1c6b66457a --- /dev/null +++ b/src/com/itmill/toolkit/demo/Parameters.java @@ -0,0 +1,111 @@ +package com.itmill.toolkit.demo; + +import java.net.URL; +import java.util.Iterator; +import java.util.Map; + +import com.itmill.toolkit.terminal.DownloadStream; +import com.itmill.toolkit.terminal.ExternalResource; +import com.itmill.toolkit.terminal.ParameterHandler; +import com.itmill.toolkit.terminal.URIHandler; +import com.itmill.toolkit.ui.*; + +/** + * This is a demonstration of how URL parameters can be recieved and handled. + * Parameters and URL:s can be received trough the windows by registering + * URIHandler and ParameterHandler classes window. + * + * @since 3.1.1 + */ +public class Parameters extends com.itmill.toolkit.Application implements + URIHandler, ParameterHandler { + + private Label context = new Label(); + + private Label relative = new Label(); + + private Table params = new Table(); + + public void init() { + Window main = new Window("Table demo"); + setMainWindow(main); + + // set the application to use Corporate -theme + setTheme("corporate"); + + // This class acts both as URI handler and parameter handler + main.addURIHandler(this); + main.addParameterHandler(this); + + OrderedLayout layout = new OrderedLayout(); + Label info = new Label("To test URI and Parameter Handlers, " + + "add get parameters to URL. For example try examples below: "); + info.setCaption("Usage info"); + layout.addComponent(info); + try { + URL u1 = new URL(getURL(), "test/uri?test=1&test=2"); + URL u2 = new URL(getURL(), "foo/bar?mary=john&count=3"); + layout.addComponent(new Link(u1.toString(), + new ExternalResource(u1))); + layout.addComponent(new Label("Or this: ")); + layout.addComponent(new Link(u2.toString(), + new ExternalResource(u2))); + } catch (Exception e) { + System.out.println("Couldn't get hostname for this machine: " + + e.toString()); + e.printStackTrace(); + } + + // URI + Panel panel1 = new Panel("URI Handler"); + context.setCaption("Last URI handler context"); + panel1.addComponent(context); + relative.setCaption("Last relative URI"); + panel1.addComponent(relative); + layout.addComponent(panel1); + + // Parameters + params.addContainerProperty("Values", String.class, ""); + Panel panel2 = new Panel("Parameter Handler"); + params.setCaption("Last parameters"); + params.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_ID); + params.setRowHeaderMode(Table.ROW_HEADER_MODE_ID); + panel2.addComponent(params); + layout.addComponent(panel2); + + main.addComponent(layout); + } + + /** + * Update URI + * + * @see com.itmill.toolkit.terminal.URIHandler#handleURI(URL, String) + */ + public DownloadStream handleURI(URL context, String relativeUri) { + this.context.setValue(context.toString()); + this.relative.setValue(relativeUri); + return null; + } + + /** + * Handles GET parameters, in this demo GET parameteres are used to + * communicate with EmbeddedToolkit.jsp + */ + public void handleParameters(Map parameters) { + // disabled, see bug #550 + //params.removeAllItems(); + System.out.println("handleParameters()"); + for (Iterator i = parameters.keySet().iterator(); i.hasNext();) { + String name = (String) i.next(); + String[] values = (String[]) parameters.get(name); + String v = ""; + for (int j = 0; j < values.length; j++) { + if (v.length() > 0) + v += ", "; + v += "'" + values[j] + "'"; + } + params.addItem(new Object[] { v }, name); + System.out.println("parameter name="+name+", value="+v); + } + } +} |