diff options
Diffstat (limited to 'src/com/vaadin/tests/featurebrowser/FeatureParameters.java')
-rw-r--r-- | src/com/vaadin/tests/featurebrowser/FeatureParameters.java | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/src/com/vaadin/tests/featurebrowser/FeatureParameters.java b/src/com/vaadin/tests/featurebrowser/FeatureParameters.java new file mode 100644 index 0000000000..4bb90e02b0 --- /dev/null +++ b/src/com/vaadin/tests/featurebrowser/FeatureParameters.java @@ -0,0 +1,167 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.vaadin.tests.featurebrowser; + +import java.net.URL; +import java.util.Iterator; +import java.util.Map; + +import com.vaadin.terminal.DownloadStream; +import com.vaadin.terminal.ExternalResource; +import com.vaadin.terminal.ParameterHandler; +import com.vaadin.terminal.URIHandler; +import com.vaadin.ui.Component; +import com.vaadin.ui.Form; +import com.vaadin.ui.Label; +import com.vaadin.ui.Link; +import com.vaadin.ui.OrderedLayout; +import com.vaadin.ui.Panel; +import com.vaadin.ui.Select; +import com.vaadin.ui.Table; + +public class FeatureParameters extends Feature implements URIHandler, + ParameterHandler { + + private final Label context = new Label(); + + private final Label relative = new Label(); + + private final Table params = new Table(); + + public FeatureParameters() { + super(); + params.addContainerProperty("Values", String.class, ""); + } + + @Override + protected Component getDemoComponent() { + + final OrderedLayout l = new OrderedLayout(); + + final Label info = new Label("To test this feature, try to " + + "add some get parameters to URL. For example if you have " + + "the feature browser installed in your local host, try url: "); + info.setCaption("Usage info"); + l.addComponent(info); + try { + final URL u1 = new URL(getApplication().getURL(), + "test/uri?test=1&test=2"); + final URL u2 = new URL(getApplication().getURL(), + "foo/bar?mary=john&count=3"); + + l.addComponent(new Link(u1.toString(), new ExternalResource(u1))); + l.addComponent(new Label("Or this: ")); + l.addComponent(new Link(u2.toString(), new ExternalResource(u2))); + } catch (final Exception e) { + System.out.println("Couldn't get hostname for this machine: " + + e.toString()); + e.printStackTrace(); + } + + // URI + final Panel p1 = new Panel("URI Handler"); + context.setCaption("Last URI handler context"); + p1.addComponent(context); + relative.setCaption("Last relative URI"); + p1.addComponent(relative); + l.addComponent(p1); + + // Parameters + final Panel p2 = new Panel("Parameter Handler"); + params.setCaption("Last parameters"); + params.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_ID); + params.setRowHeaderMode(Table.ROW_HEADER_MODE_ID); + p2.addComponent(params); + l.addComponent(p2); + + // Properties + propertyPanel = new PropertyPanel(p1); + final Form ap = propertyPanel.createBeanPropertySet(new String[] { + "width", "height" }); + final Select themes = (Select) propertyPanel.getField("style"); + themes.addItem("light").getItemProperty( + themes.getItemCaptionPropertyId()).setValue("light"); + themes.addItem("strong").getItemProperty( + themes.getItemCaptionPropertyId()).setValue("strong"); + propertyPanel.addProperties("Panel Properties", ap); + + setJavadocURL("ui/Panel.html"); + + return l; + } + + @Override + protected String getDescriptionXHTML() { + return "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."; + } + + @Override + protected String getImage() { + return "parameters.jpg"; + } + + @Override + protected String getTitle() { + return "Parameters"; + } + + /** + * Add URI and parametes handlers to window. + * + * @see com.vaadin.ui.Component#attach() + */ + @Override + public void attach() { + super.attach(); + getWindow().addURIHandler(this); + getWindow().addParameterHandler(this); + } + + /** + * Remove all handlers from window + * + * @see com.vaadin.ui.Component#detach() + */ + @Override + public void detach() { + super.detach(); + getWindow().removeURIHandler(this); + getWindow().removeParameterHandler(this); + } + + /** + * Update URI + * + * @see com.vaadin.terminal.URIHandler#handleURI(URL, String) + */ + public DownloadStream handleURI(URL context, String relativeUri) { + this.context.setValue(context.toString()); + relative.setValue(relativeUri); + return null; + } + + /** + * Update parameters table + * + * @see com.vaadin.terminal.ParameterHandler#handleParameters(Map) + */ + public void handleParameters(Map parameters) { + params.removeAllItems(); + for (final Iterator i = parameters.keySet().iterator(); i.hasNext();) { + final String name = (String) i.next(); + final 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); + } + } +} |