From: Marko Grönroos Date: Thu, 29 May 2008 13:29:56 +0000 (+0000) Subject: Renamed manual related testbench. More changes. X-Git-Tag: 6.7.0.beta1~4682 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=62f93ebe9407a99d1598a150103e52a00dfec6e7;p=vaadin-framework.git Renamed manual related testbench. More changes. svn changeset:4698/svn branch:trunk --- diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index c3f91277d0..29e540c13a 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -371,11 +371,11 @@ - MagiTestServlet + BookTestServlet com.itmill.toolkit.terminal.gwt.server.ApplicationServlet application - com.itmill.toolkit.tests.magi.MagiTestApplication + com.itmill.toolkit.tests.book.BookTestApplication @@ -384,7 +384,7 @@ com.itmill.toolkit.terminal.gwt.server.ApplicationServlet application - com.itmill.toolkit.tests.magi.WindowTestApplication + com.itmill.toolkit.tests.book.WindowTestApplication @@ -393,7 +393,7 @@ com.itmill.toolkit.terminal.gwt.server.ApplicationServlet application - com.itmill.toolkit.tests.magi.ChatApplication + com.itmill.toolkit.tests.book.ChatApplication @@ -604,8 +604,8 @@ - MagiTestServlet - /testbench2/* + BookTestServlet + /book/* diff --git a/src/com/itmill/toolkit/tests/book/BookTestApplication.java b/src/com/itmill/toolkit/tests/book/BookTestApplication.java new file mode 100644 index 0000000000..9e024b25a3 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/BookTestApplication.java @@ -0,0 +1,1179 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import java.net.URL; +import java.util.Iterator; +import java.util.Locale; +import java.util.Set; + +import com.itmill.toolkit.data.Validator; +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.data.Property.ValueChangeListener; +import com.itmill.toolkit.data.validator.StringLengthValidator; +import com.itmill.toolkit.terminal.ClassResource; +import com.itmill.toolkit.terminal.DownloadStream; +import com.itmill.toolkit.terminal.ExternalResource; +import com.itmill.toolkit.terminal.Sizeable; +import com.itmill.toolkit.terminal.StreamResource; +import com.itmill.toolkit.terminal.UserError; +import com.itmill.toolkit.terminal.gwt.server.WebApplicationContext; +import com.itmill.toolkit.ui.AbstractSelect; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CheckBox; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.CustomLayout; +import com.itmill.toolkit.ui.DateField; +import com.itmill.toolkit.ui.Embedded; +import com.itmill.toolkit.ui.ExpandLayout; +import com.itmill.toolkit.ui.FormLayout; +import com.itmill.toolkit.ui.GridLayout; +import com.itmill.toolkit.ui.InlineDateField; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Link; +import com.itmill.toolkit.ui.NativeSelect; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.PopupDateField; +import com.itmill.toolkit.ui.ProgressIndicator; +import com.itmill.toolkit.ui.Select; +import com.itmill.toolkit.ui.TabSheet; +import com.itmill.toolkit.ui.Table; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Tree; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class BookTestApplication extends com.itmill.toolkit.Application { + Window main = new Window("Application window"); + + TheButton butts1; + TheButtons butts2; + TheButtons2 butts3; + + Label mylabel1; + Label mylabel2; + Label mylabel3; + + StreamResource strres; + OrderedLayout ol; + int getwincount = 0; + + public void init() { + setTheme("tests-magi"); + + setMainWindow(main); + } + + public DownloadStream handleURI(URL context, String relativeUri) { + // Let default implementation handle requests for + // application resources. + if (relativeUri.startsWith("APP")) + return super.handleURI(context, relativeUri); + if (relativeUri.startsWith("win-")) + return super.handleURI(context, relativeUri); + + String example; + String param = null; + + final int slashPos = relativeUri.indexOf("/"); + if (slashPos > 0) { + example = relativeUri.substring(0, slashPos); + param = relativeUri.substring(slashPos + 1); + } else { + example = relativeUri; + } + + /* Remove existing components and windows. */ + main.removeAllComponents(); + final Set childwindows = main.getChildWindows(); + for (final Iterator cwi = childwindows.iterator(); cwi.hasNext();) { + final Window child = (Window) cwi.next(); + main.removeWindow(child); + } + main.setLayout(new OrderedLayout()); + + if (example.equals("index")) { + final Object examples[] = { "defaultbutton", "label", + "labelcontent", "tree", "embedded", "textfield", + "textfieldvalidation", "datefield", "button", + "select/select", "select/native", "select/optiongroup", + "select/twincol", "filterselect", "validator", "table", + "upload", "link", "gridlayout", "orderedlayout", + "formlayout", "panel", "expandlayout", "tabsheet", + "alignment", "alignment/grid", "window", "window/opener", + "window/multiple", "classresource", "usererror", + "progress/window", "progress/thread", "progress", + "customlayout", "spacing", "margin", "clientinfo", + "fillinform/templates"}; + for (int i = 0; i < examples.length; i++) { + main.addComponent(new Label("" + examples[i] + "", + Label.CONTENT_XHTML)); + } + return null; + } + + if (example.equals("defaultbutton")) { + example_defaultButton(main, param); + } else if (example.equals("label")) { + example_Label(main, param); + } else if (example.equals("labelcontent")) { + example_LabelContent(main, param); + } else if (example.equals("tree")) { + example_Tree(main, param); + } else if (example.equals("embedded")) { + example_Embedded(main, param); + } else if (example.equals("textfield")) { + example_TextField(main, param); + } else if (example.equals("textfieldvalidation")) { + example_TextFieldValidation(main, param); + } else if (example.equals("usererror")) { + example_UserError(main, param); + } else if (example.equals("datefield")) { + example_DateField(main, param); + } else if (example.equals("button")) { + example_Button(main, param); + } else if (example.equals("checkbox")) { + example_CheckBox(main, param); + } else if (example.equals("select")) { + example_Select(main, param); + } else if (example.equals("filterselect")) { + example_FilterSelect(main, param); + } else if (example.equals("validator")) { + example_Validator(main, param); + } else if (example.equals("table")) { + example_Table(main, param); + } else if (example.equals("upload")) { + example_Upload(main, param); + } else if (example.equals("link")) { + example_Link(main, param); + } else if (example.equals("gridlayout")) { + example_GridLayout(main, param); + } else if (example.equals("orderedlayout")) { + example_OrderedLayout(main, param); + } else if (example.equals("formlayout")) { + example_FormLayout(main, param); + } else if (example.equals("tabsheet")) { + example_TabSheet(main, param); + } else if (example.equals("panel")) { + example_Panel(main, param); + } else if (example.equals("expandlayout")) { + example_ExpandLayout(main, param); + } else if (example.equals("alignment")) { + example_Alignment(main, param); + } else if (example.equals("window")) { + example_Window(main, param); + } else if (example.equals("classresource")) { + example_ClassResource(main, param); + } else if (example.equals("progress")) { + example_ProgressIndicator(main, param); + } else if (example.equals("customlayout")) { + example_CustomLayout(main, param); + } else if (example.equals("spacing")) { + example_Spacing(main, param); + } else if (example.equals("margin")) { + example_Margin(main, param); + } else if (example.equals("clientinfo")) { + example_ClientInfo(main, param); + } else if (example.equals("fillinform")) { + example_FillInForm(main, param); + } else { + ; // main.addComponent(new Label("Unknown test '"+example+"'.")); + } + + return null; + } + + /* + * public Window getWindow(String name) { Window superwin = + * super.getWindow(name); if (superwin != null) return superwin; + * + * main.addComponent(new Label("Request 2 for window '"+name+"'.")); if + * (name.equals("panel")) { Window window = new Window("Other Window " + + * getwincount++); example_Panel(window, null); return window; } return + * null; } + */ + public void handleButton(Button.ClickEvent event) { + ol.addStyleName("myLayout2"); + } + + void example_defaultButton(Window main, String param) { + main.addComponent(new DefaultButtonExample(main)); + } + + void example_Label(Window main, String param) { + /* Some container for the Label. */ + final Panel panel = new Panel("Panel Containing a Label"); + main.addComponent(panel); + + panel.addComponent(new Label( + "This is a Label inside a Panel. There is enough " + + "text in the label to make the text wrap if it " + + "exceeds the width of the panel.")); + } + + void example_LabelContent(Window main, String param) { + final GridLayout labelgrid = new GridLayout(2, 1); + labelgrid.addStyleName("labelgrid"); + labelgrid.addComponent(new Label("CONTENT_DEFAULT")); + labelgrid.addComponent(new Label( + "This is a label in default mode: ", + Label.CONTENT_DEFAULT)); + labelgrid.addComponent(new Label("CONTENT_PREFORMATTED")); + labelgrid + .addComponent(new Label( + "This is a preformatted label.\nThe newline character \\n breaks the line.", + Label.CONTENT_PREFORMATTED)); + labelgrid.addComponent(new Label("CONTENT_RAW")); + labelgrid + .addComponent(new Label( + "This is a label in raw mode.
It can contain, for example, unbalanced markup.", + Label.CONTENT_RAW)); + labelgrid.addComponent(new Label("CONTENT_TEXT")); + labelgrid.addComponent(new Label( + "This is a label in (plain) text mode", Label.CONTENT_TEXT)); + labelgrid.addComponent(new Label("CONTENT_XHTML")); + labelgrid.addComponent(new Label( + "This is an XHTML formatted label", + Label.CONTENT_XHTML)); + labelgrid.addComponent(new Label("CONTENT_XML")); + labelgrid.addComponent(new Label( + "This is an XML formatted label", + Label.CONTENT_XML)); + main.addComponent(labelgrid); + + final ClassResource labelimage = new ClassResource("smiley.jpg", this); + main.addComponent(new Label("Here we have an image within some text.", + Label.CONTENT_XHTML)); + } + + void example_Tree(Window main, String param) { + final Object[][] planets = new Object[][] { + new Object[] { "Mercury" }, + new Object[] { "Venus" }, + new Object[] { "Earth", "The Moon" }, + new Object[] { "Mars", "Phobos", "Deimos" }, + new Object[] { "Jupiter", "Io", "Europa", "Ganymedes", "Callisto" }, + new Object[] { "Saturn", "Titan", "Tethys", "Dione", "Rhea", "Iapetus" }, + new Object[] { "Uranus", "Miranda", "Ariel", "Umbriel", "Titania", "Oberon" }, + new Object[] { "Neptune", "Triton", "Proteus", "Nereid", "Larissa" } }; + + final Tree tree = new Tree(); + + /* Add planets as root items in the tree. */ + for (int i = 0; i < planets.length; i++) { + final String planet = (String) (planets[i][0]); + tree.addItem(planet); + + if (planets[i].length == 1) { + /* The planet has no moons so make it a leaf. */ + tree.setChildrenAllowed(planet, false); + } else { + /* Add children (moons) under the planets. */ + for (int j = 1; j < planets[i].length; j++) { + final String moon = (String) planets[i][j]; + + /* Add the item as a regular item. */ + tree.addItem(moon); + + /* Set it to be a child. */ + tree.setParent(moon, planet); + + /* Make the moons look like leaves. */ + tree.setChildrenAllowed(moon, false); + } + + /* Expand the subtree. */ + tree.expandItemsRecursively(planet); + } + } + + // Horizontal layout with the tree on the left and a details panel on the right. + final ExpandLayout horlayout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); + horlayout.addStyleName("treeexample"); + horlayout.setSizeFull(); + + final Panel treepanel = new Panel("The Planets and Major Moons"); + treepanel.addComponent(tree); + horlayout.addComponent(treepanel); + + final Panel detailspanel = new Panel("Details"); + horlayout.addComponent(detailspanel); + horlayout.expand(detailspanel); + + final OrderedLayout detailslayout = new OrderedLayout(); + detailspanel.setLayout(detailslayout); + + // When a tree item (planet or moon) is clicked, open the item in Details view. + tree.setImmediate(true); + tree.addListener(new ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + String planet = (String) tree.getValue(); + detailspanel.setCaption("Details on " + planet); + detailslayout.removeAllComponents(); + + // Put some stuff in the Details view. + detailslayout.addComponent(new Label("Where is the cat?")); + detailslayout.addComponent(new Label("The cat is in " + planet + ".")); + } + }); + + main.setLayout(horlayout); + } + + void example_Select(Window main, String param) { + final OrderedLayout layout = new OrderedLayout( + OrderedLayout.ORIENTATION_HORIZONTAL); + layout.addStyleName("aligntop"); + + if (param.equals("twincol")) { + final SelectExample select1 = new SelectExample(this, param, + "Select some items", true); + layout.addComponent(select1); + } else if (param.equals("filter")) { + final SelectExample select1 = new SelectExample(this, param, + "Enter containing substring", false); + layout.addComponent(select1); + } else { + final SelectExample select1 = new SelectExample(this, param, + "Single Selection Mode", false); + final SelectExample select2 = new SelectExample(this, param, + "Multiple Selection Mode", true); + layout.addComponent(select1); + layout.addComponent(select2); + } + main.addComponent(layout); + } + + void example_FilterSelect(Window main, String param) { + final Select select = new Select("Enter containing substring"); + main.addComponent(select); + + select + .setFilteringMode(AbstractSelect.Filtering.FILTERINGMODE_CONTAINS); + + /* Fill the component with some items. */ + final String[] planets = new String[] { "Mercury", "Venus", "Earth", + "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" }; + + for (int i = 0; i < planets.length; i++) { + for (int j = 0; j < planets.length; j++) { + select.addItem(planets[j] + " to " + planets[i]); + } + } + } + + void example_TextField(Window main, String param) { + /* Add a single-line text field. */ + final TextField subject = new TextField("Subject"); + subject.setColumns(40); + main.addComponent(subject); + + /* Add a multi-line text field. */ + final TextField message = new TextField("Message"); + message.setRows(7); + message.setColumns(40); + main.addComponent(message); + } + + void example_TextFieldValidation(Window main, String param) { + // Create a text field with a label + final TextField username = new TextField("Username"); + main.addComponent(username); + + // Set visible length to 16 characters + username.setColumns(16); + + // Set content length to minimum of 6 and maximum of 16 characters. + // The string also may not be null. + username.addValidator(new StringLengthValidator( + "Must be 6 to 16 characters long", 6, 16, false)); + + // Setting component immediate causes a ValueChangeEvent to occur + // when the TextField loses focus. + username.setImmediate(true); + + // Listen for ValueChangeEvents and handle them + username.addListener(new ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + // Get the source of the event + final TextField username = (TextField) (event.getProperty()); + + try { + // Validate the field value. + username.validate(); + } catch (final Validator.InvalidValueException e) { + // The value was not ok. The error was set. + } + } + }); + } + + void example_UserError(final Window main, String param) { + if (param != null) { + if (param.equals("form")) { + + final FormLayout layout = new FormLayout(); + main.addComponent(layout); + + final TextField textfield = new TextField("Enter name"); + layout.addComponent(textfield); + textfield.setComponentError(null); + + final Button button = new Button("Click me!"); + layout.addComponent(button); + + button.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + if (((String) textfield.getValue()).length() == 0) { + textfield.setComponentError(new UserError( + "Must not be empty")); + } else { + textfield.setComponentError(null); + } + } + }); + } + } else { + final TextField textfield = new TextField("Enter name"); + main.addComponent(textfield); + textfield.setComponentError(null); + + final Button button = new Button("Click me!"); + main.addComponent(button); + + button.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + if (((String) textfield.getValue()).length() == 0) { + textfield.setComponentError(new UserError( + "Must not be empty")); + } else { + textfield.setComponentError(null); + } + } + }); + } + } + + void example_DateField(Window main, String param) { + OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL); + + /* Create a DateField with the calendar style. */ + final DateField popupdate = new PopupDateField("Popup calendar field"); + + /* Set resolution of the date/time display. */ + popupdate.setResolution(DateField.RESOLUTION_MIN); + + /* Set the date and time to present. */ + popupdate.setValue(new java.util.Date()); + + /* Create a DateField with the calendar style. */ + final DateField inlinedate = new InlineDateField("Inline calendar field"); + + /* Set locale of the DateField to American English. */ + inlinedate.setLocale(new Locale("en", "US")); + + /* Set the date and time to present. */ + inlinedate.setValue(new java.util.Date()); + + /* Set resolution of the date/time display. */ + inlinedate.setResolution(DateField.RESOLUTION_MIN); + + layout.addComponent(popupdate); + layout.addComponent(inlinedate); + layout.setSpacing(true); + main.addComponent(layout); + } + + void example_Validator(Window main, String param) { + main.addComponent(new SSNField()); + } + + void example_Table(Window main, String param) { + main.addComponent(new TableExample()); + } + + void example_Upload(Window main, String param) { + main.addComponent(new MyUploader()); + } + + void example_Link(Window main, String param) { + + /* Create a link that opens the popup window. */ + final Link alink = new Link(); + + /* Set the resource to be opened in the window. */ + alink.setResource(new ExternalResource("http://www.itmill.com/")); + + main.addComponent(alink); + + final ClassResource mydocument = new ClassResource("mydocument.pdf", + this); + main.addComponent(new Link("The document (pdf)", mydocument)); + main.addComponent(new Link("link to a resource", new ExternalResource( + "http://www.itmill.com/"))); + } + + void example_Button(Window main, String param) { + if (param != null) { + if (param.equals("buttons")) { + main.addComponent(new TheButton()); + } + return; + } + + // butts1 = new TheButton (); + // main.addComponent(butts1); + + // butts2 = new TheButtons (main); + // butts3 = new TheButtons2 (main); + + // Button checkbox = new Button ("This is a checkbox"); + + // main.addComponent(checkbox); + final Button button = new Button("My Button"); + main.addComponent(button); + } + + void example_CheckBox(Window main, String param) { + /* A check box with default state (not checked, i.e., false). */ + final CheckBox checkbox1 = new CheckBox("My CheckBox"); + main.addComponent(checkbox1); + + /* Another check box with explicitly set checked state. */ + final CheckBox checkbox2 = new CheckBox("Checked CheckBox"); + /* + * @TODO: Build fails here, why? checkbox2.setValue(true); + */ + main.addComponent(checkbox2); + + /* + * Make some application logic. We use anynymous listener classes here. + * The above references were defined as "final" to allow accessing them + * from inside anonymous classes. + */ + checkbox1.addListener(new ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + /* Copy the value to the other checkbox. */ + checkbox2.setValue(checkbox1.getValue()); + } + }); + checkbox2.addListener(new ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + /* Copy the value to the other checkbox. */ + checkbox1.setValue(checkbox2.getValue()); + } + }); + } + + void example_Panel(Window main, String param) { + // Create a panel with a caption. + final Panel panel = new Panel("Contact Information"); + + // Create a layout inside the panel + final OrderedLayout form = new FormLayout(); + + // Set the layout as the root layout of the panel + panel.setLayout(form); + + // Add some components + form.addComponent(new TextField("Name")); + form.addComponent(new TextField("Email")); + + // Add the panel to the main window + final ClassResource icon = new ClassResource("smiley.jpg", main + .getApplication()); + form.addComponent(new Embedded("Image", icon)); + panel.setIcon(icon); + panel.addComponent(form); + main.addComponent(panel); + } + + void example_GridLayout(Window main, String param) { + /* Create a 4 by 4 grid layout. */ + final GridLayout grid = new GridLayout(4, 4); + grid.addStyleName("example-gridlayout"); + + /* Fill out the first row using the cursor. */ + grid.addComponent(new Button("R/C 1")); + for (int i = 0; i < 3; i++) { + grid.addComponent(new Button("Col " + (grid.getCursorX() + 1))); + } + + /* Fill out the first column using coordinates. */ + for (int i = 1; i < 4; i++) { + grid.addComponent(new Button("Row " + i), 0, i); + } + + /* Add some components of various shapes. */ + grid.addComponent(new Button("3x1 button"), 1, 1, 3, 1); + grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3); + final InlineDateField date = new InlineDateField("A 2x2 date field"); + date.setResolution(DateField.RESOLUTION_DAY); + grid.addComponent(date, 2, 2, 3, 3); + + main.addComponent(grid); + } + + void example_Alignment(Window main, String param) { + if (param.equals("grid")) { + /* Create a 3 by 3 grid layout. */ + final GridLayout layout = new GridLayout(3, 3); + // OrderedLayout layout = new + // OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); + main.setLayout(layout); + layout.addStyleName("example-alignment"); + + layout.setWidth(400, Sizeable.UNITS_PIXELS); + layout.setHeight(400, Sizeable.UNITS_PIXELS); + + /* Define cells and their layouts to create. */ + + Object cells[][] = { + {new Button("Top Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_TOP)}, + {new Label("Top Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_TOP)}, + {new Label("Top Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_TOP)}, + {new Button("Center Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, + {new Button("Center Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, + {new Button("Center Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, + {new Button("Bottom Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}, + {new Button("Bottom Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}, + {new Button("Bottom Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}}; + + for (int i=0; i<9; i++) { + ExpandLayout celllayout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); + celllayout.addComponent((Component) cells[i][0]); + celllayout.setComponentAlignment((Component)cells[i][0], ((Integer)cells[i][1]).intValue(), ((Integer)cells[i][2]).intValue()); + layout.addComponent(celllayout); + //layout.setComponentAlignment((Component)cells[i][0], ((Integer)cells[i][1]).intValue(), ((Integer)cells[i][2]).intValue()); + } + } else { + final Panel panel = new Panel("A Panel with a Layout"); + main.addComponent(panel); + + // panel.addComponent(new ) + } + } + + void example_OrderedLayout(Window main, String param) { + final OrderedLayout layout = new OrderedLayout( + OrderedLayout.ORIENTATION_VERTICAL); + layout.addComponent(new TextField("Name")); + layout.addComponent(new TextField("Street address")); + layout.addComponent(new TextField("Postal code")); + main.addComponent(layout); + } + + void example_FormLayout(Window main, String param) { + final FormLayout layout = new FormLayout(); + layout.addComponent(new TextField("Name")); + layout.addComponent(new TextField("Street address")); + layout.addComponent(new TextField("Postal code")); + main.addComponent(layout); + } + + void example_ExpandLayout(Window main, String param) { + if (param != null && param.equals("centered")) { + Label widget = new Label("Here is text"); + + ExpandLayout layout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); + layout.addComponent(widget); + layout.expand(widget); + layout.setComponentAlignment(widget, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); + layout.setWidth(100, Sizeable.UNITS_PERCENTAGE); + layout.setHeight(100, Sizeable.UNITS_PERCENTAGE); + + main.setLayout(layout); + + return; + } else if (param != null && param.equals("window")) { + Window window = new Window("Progress"); + window.setHeight(100, Sizeable.UNITS_PIXELS); + window.setWidth(200, Sizeable.UNITS_PIXELS); + main.addWindow(window); + + ProgressIndicator progress = new ProgressIndicator(new Float(0.4)); + progress.addStyleName("fullwidth"); + progress.setPollingInterval(1000000); + progress.setIndeterminate(false); + + ExpandLayout layout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); + layout.setHeight(100, Sizeable.UNITS_PERCENTAGE); + layout.setComponentAlignment(progress, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); + window.setLayout(layout); + window.addComponent(progress); + + return; + } else if (param != null && param.equals("size")) { + ExpandLayout layout = new ExpandLayout(); + layout.setSizeFull(); + main.setLayout(layout); + + Button button = new Button("This is a button in middle of nowhere"); + layout.addComponent(button); + layout.setComponentAlignment(button, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); + + return; + } + + for (int w = 0; w < 2; w++) { + final ExpandLayout layout = new ExpandLayout( + OrderedLayout.ORIENTATION_VERTICAL); + + /* Set the expanding layout as the root layout of a child window. */ + final Window window = new Window("A Child Window", layout); + main.addWindow(window); + + /* Add some component above the expanding one. */ + layout.addComponent(new Label("Here be some component.")); + + /* Create the expanding component. */ + final Table table = new Table("My Ever-Expanding Table"); + /* + * FIXME Java 5 -> 1.4 for (int i=0; i<5; i++) + * table.addContainerProperty("col "+(i+1), Integer.class, 0); for + * (int j=0; j<20; j++) table.addItem(new + * Object[]{1*j,2*j,3*j,4*j,5*j}, j); + */ + layout.addComponent(table); + + /* Designate the table to be the expanding component. */ + layout.expand(table); + + /* Set it to use all available area. */ + table.setSizeFull(); + + /* Add some component below the expanding one. */ + final Button button2 = new Button("Ok"); + layout.addComponent(button2); + layout.setComponentAlignment(button2, + OrderedLayout.ALIGNMENT_RIGHT, 0); + } + } + + void example_TabSheet(Window main, String param) { + if (param.equals("icon")) { + final TabSheet tabsheet = new TabSheet(); + + tabsheet.addTab(new Label("Contents of the first tab"), + "First Tab", new ClassResource("images/Mercury_small.png", + main.getApplication())); + tabsheet.addTab(new Label("Contents of the second tab"), + "Second Tab", new ClassResource("images/Venus_small.png", + this)); + tabsheet.addTab(new Label("Contents of the third tab"), + "Third tab", new ClassResource("images/Earth_small.png", + this)); + + main.addComponent(tabsheet); + // main.addComponent(new Embedded("Emb", new ClassResource + // ("images/Mercury_small.png", this))); + } else if (param.equals("expanding")) { + // Create the layout + ExpandLayout expanding = new ExpandLayout(OrderedLayout.ORIENTATION_VERTICAL); + + // It is important to set the expanding layout as the root layout + // of the containing window, in this case the main window, and not + // use addComponent(), which would place the layout inside the + // default root layout. + main.setLayout(expanding); + + // Create a tab sheet that fills the expanding layout + final TabSheet tabsheet = new TabSheet(); + tabsheet.addTab(new Label("Contents of the first tab"), "First Tab", null); + tabsheet.addTab(new Label("Contents of the second tab"), "Second Tab", null); + tabsheet.addTab(new Label("Contents of the third tab"), "Third tab", null); + + // Set the tabsheet to scale to full size inside its container + tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE); + tabsheet.setHeight(100, Sizeable.UNITS_PERCENTAGE); + + // Add the tab sheet to the layout as usual + expanding.addComponent(tabsheet); + + // Set the tab sheet to be the expanding component + expanding.expand(tabsheet); + } else if (param.equals("ordered")) { + // Create the layout + OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); + + // It is important to set the expanding layout as the root layout + // of the containing window, in this case the main window, and not + // use addComponent(), which would place the layout inside the + // default root layout. + main.setLayout(layout); + + // Create a tab sheet that fills the expanding layout + final TabSheet tabsheet = new TabSheet(); + tabsheet.addTab(new Label("Contents of the first tab"), "First Tab", null); + tabsheet.addTab(new Label("Contents of the second tab"), "Second Tab", null); + tabsheet.addTab(new Label("Contents of the third tab"), "Third tab", null); + + // Set the tabsheet to scale to full size inside its container + tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE); + //tabsheet().setHeight(100, Sizeable.UNITS_PERCENTAGE); + + // Add the tab sheet to the layout as usual + layout.addComponent(tabsheet); + } else { + main.addComponent(new TabSheetExample()); + } + } + + void example_Embedded(Window main, String param) { + final Embedded image = new Embedded("", new ClassResource("smiley.jpg", + this)); + image.addStyleName("omaimage"); + main.addComponent(image); + + final EmbeddedButton button = new EmbeddedButton(new ClassResource( + "smiley.jpg", this)); + main.addComponent(button); + } + + void example_Window(Window main, String param) { + if (param != null) { + if (param.equals("opener")) { + main.addComponent(new WindowOpener("Window Opener", main)); + } else if (param.equals("multiple")) { + /* Create a new window. */ + final Window mywindow = new Window("Second Window"); + mywindow.setName("mywindow"); + mywindow.addComponent(new Label("This is a second window.")); + + /* Add the window to the application. */ + main.getApplication().addWindow(mywindow); + + /* Add link to the second window in the main window. */ + main.addComponent(new Label("Second window: middle-click to open", + Label.CONTENT_XHTML)); + main.addComponent(new Label( + "The second window can be accessed through URL: " + + mywindow.getURL())); + } + return; + } + + /* Create a new window. */ + final Window mywindow = new Window("My Window"); + mywindow.setName("mywindow"); + + /* Add some components in the window. */ + mywindow.addComponent(new Label("A text label in the window.")); + final Button okbutton = new Button("OK"); + mywindow.addComponent(okbutton); + + /* Set window size. */ + mywindow.setHeight(200); + mywindow.setWidth(400); + + /* Set window position. */ + mywindow.setPositionX(200); + mywindow.setPositionY(50); + + /* Add the window to the Application object. */ + main.addWindow(mywindow); + + } + + void example_ClassResource(Window main, String param) { + final DateField df = new DateField(); + main.addComponent(df); + df.setIcon(new ClassResource("smiley.jpg", main.getApplication())); + main.addComponent(new Embedded("This is Embedded", new ClassResource( + "smiley.jpg", main.getApplication()))); + } + + void example_ProgressIndicator(final Window main, String param) { + if (param != null) { + if (param.equals("thread")) { + + // Create the indicator + final ProgressIndicator indicator = new ProgressIndicator(new Float(0.0)); + main.addComponent(indicator); + + // Set polling frequency to 0.5 seconds. + indicator.setPollingInterval(1000); + + //indicator.addStyleName("invisible"); + final Label text = new Label("-- Not running --"); + main.addComponent(text); + + // Add a button to start the progress + final Button button = new Button("Click to start"); + main.addComponent(button); + + // Another thread to do some work + class WorkThread extends Thread { + public void run () { + double current = 0.0; + while (true) { + // Do some "heavy work" + try { + sleep(50); // Sleep for 50 milliseconds + } catch (InterruptedException e) {} + + // Grow the progress value until it reaches 1.0. + current += 0.01; + if (current>1.0) + indicator.setValue(new Float(1.0)); + else + indicator.setValue(new Float(current)); + + // After the progress is full for a while, stop. + if (current > 1.2) { + // Restore the state to initial. + indicator.setValue(new Float(0.0)); + button.setVisible(true); + break; + } + } + } + } + + // Clicking the button creates and runs a work thread + button.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + final WorkThread thread = new WorkThread(); + thread.start(); + + // The button hides until the work is done. + button.setVisible(false); + } + }); + } else if (param.equals("window")) { + // Create a table in the main window to hold items added in the second window + final Table table = new Table(); + table.setPageLength(5); + table.setWidth(100, Sizeable.UNITS_PERCENTAGE); + table.addContainerProperty("Name", String.class, ""); + main.addComponent(table); + + // Create the second window + final Window adderWindow = new Window("Add Items"); + adderWindow.setName("win-adder"); + main.getApplication().addWindow(adderWindow); + + // Create selection component to add items to the table + final NativeSelect select = new NativeSelect("Select item to add"); + select.setImmediate(true); + adderWindow.addComponent(select); + + // Add some items to the selection + String items[] = new String[]{"-- Select --", "Mercury", "Venus", + "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"}; + for (int i=0; i 0) { - example = relativeUri.substring(0, slashPos); - param = relativeUri.substring(slashPos + 1); - } else { - example = relativeUri; - } - - /* Remove existing components and windows. */ - main.removeAllComponents(); - final Set childwindows = main.getChildWindows(); - for (final Iterator cwi = childwindows.iterator(); cwi.hasNext();) { - final Window child = (Window) cwi.next(); - main.removeWindow(child); - } - main.setLayout(new OrderedLayout()); - - if (example.equals("index")) { - final Object examples[] = { "defaultbutton", "label", - "labelcontent", "tree", "embedded", "textfield", - "textfieldvalidation", "datefield", "button", - "select/select", "select/native", "select/optiongroup", - "select/twincol", "filterselect", "validator", "table", - "upload", "link", "gridlayout", "orderedlayout", - "formlayout", "panel", "expandlayout", "tabsheet", - "alignment", "alignment/grid", "window", "window/opener", - "window/multiple", "classresource", "usererror", - "progress/window", "progress/thread", "progress", - "customlayout", "spacing", "margin", "clientinfo", - "fillinform/templates"}; - for (int i = 0; i < examples.length; i++) { - main.addComponent(new Label("" + examples[i] + "", - Label.CONTENT_XHTML)); - } - return null; - } - - if (example.equals("defaultbutton")) { - example_defaultButton(main, param); - } else if (example.equals("label")) { - example_Label(main, param); - } else if (example.equals("labelcontent")) { - example_LabelContent(main, param); - } else if (example.equals("tree")) { - example_Tree(main, param); - } else if (example.equals("embedded")) { - example_Embedded(main, param); - } else if (example.equals("textfield")) { - example_TextField(main, param); - } else if (example.equals("textfieldvalidation")) { - example_TextFieldValidation(main, param); - } else if (example.equals("usererror")) { - example_UserError(main, param); - } else if (example.equals("datefield")) { - example_DateField(main, param); - } else if (example.equals("button")) { - example_Button(main, param); - } else if (example.equals("checkbox")) { - example_CheckBox(main, param); - } else if (example.equals("select")) { - example_Select(main, param); - } else if (example.equals("filterselect")) { - example_FilterSelect(main, param); - } else if (example.equals("validator")) { - example_Validator(main, param); - } else if (example.equals("table")) { - example_Table(main, param); - } else if (example.equals("upload")) { - example_Upload(main, param); - } else if (example.equals("link")) { - example_Link(main, param); - } else if (example.equals("gridlayout")) { - example_GridLayout(main, param); - } else if (example.equals("orderedlayout")) { - example_OrderedLayout(main, param); - } else if (example.equals("formlayout")) { - example_FormLayout(main, param); - } else if (example.equals("tabsheet")) { - example_TabSheet(main, param); - } else if (example.equals("panel")) { - example_Panel(main, param); - } else if (example.equals("expandlayout")) { - example_ExpandLayout(main, param); - } else if (example.equals("alignment")) { - example_Alignment(main, param); - } else if (example.equals("window")) { - example_Window(main, param); - } else if (example.equals("classresource")) { - example_ClassResource(main, param); - } else if (example.equals("progress")) { - example_ProgressIndicator(main, param); - } else if (example.equals("customlayout")) { - example_CustomLayout(main, param); - } else if (example.equals("spacing")) { - example_Spacing(main, param); - } else if (example.equals("margin")) { - example_Margin(main, param); - } else if (example.equals("clientinfo")) { - example_ClientInfo(main, param); - } else if (example.equals("fillinform")) { - example_FillInForm(main, param); - } else { - ; // main.addComponent(new Label("Unknown test '"+example+"'.")); - } - - return null; - } - - /* - * public Window getWindow(String name) { Window superwin = - * super.getWindow(name); if (superwin != null) return superwin; - * - * main.addComponent(new Label("Request 2 for window '"+name+"'.")); if - * (name.equals("panel")) { Window window = new Window("Other Window " + - * getwincount++); example_Panel(window, null); return window; } return - * null; } - */ - public void handleButton(Button.ClickEvent event) { - ol.addStyleName("myLayout2"); - } - - void example_defaultButton(Window main, String param) { - main.addComponent(new DefaultButtonExample(main)); - } - - void example_Label(Window main, String param) { - /* Some container for the Label. */ - final Panel panel = new Panel("Panel Containing a Label"); - main.addComponent(panel); - - panel.addComponent(new Label( - "This is a Label inside a Panel. There is enough " - + "text in the label to make the text wrap if it " - + "exceeds the width of the panel.")); - } - - void example_LabelContent(Window main, String param) { - final GridLayout labelgrid = new GridLayout(2, 1); - labelgrid.addStyleName("labelgrid"); - labelgrid.addComponent(new Label("CONTENT_DEFAULT")); - labelgrid.addComponent(new Label( - "This is a label in default mode: ", - Label.CONTENT_DEFAULT)); - labelgrid.addComponent(new Label("CONTENT_PREFORMATTED")); - labelgrid - .addComponent(new Label( - "This is a preformatted label.\nThe newline character \\n breaks the line.", - Label.CONTENT_PREFORMATTED)); - labelgrid.addComponent(new Label("CONTENT_RAW")); - labelgrid - .addComponent(new Label( - "This is a label in raw mode.
It can contain, for example, unbalanced markup.", - Label.CONTENT_RAW)); - labelgrid.addComponent(new Label("CONTENT_TEXT")); - labelgrid.addComponent(new Label( - "This is a label in (plain) text mode", Label.CONTENT_TEXT)); - labelgrid.addComponent(new Label("CONTENT_XHTML")); - labelgrid.addComponent(new Label( - "This is an XHTML formatted label", - Label.CONTENT_XHTML)); - labelgrid.addComponent(new Label("CONTENT_XML")); - labelgrid.addComponent(new Label( - "This is an XML formatted label", - Label.CONTENT_XML)); - main.addComponent(labelgrid); - - final ClassResource labelimage = new ClassResource("smiley.jpg", this); - main.addComponent(new Label("Here we have an image within some text.", - Label.CONTENT_XHTML)); - } - - void example_Tree(Window main, String param) { - final Object[][] planets = new Object[][] { - new Object[] { "Mercury" }, - new Object[] { "Venus" }, - new Object[] { "Earth", "The Moon" }, - new Object[] { "Mars", "Phobos", "Deimos" }, - new Object[] { "Jupiter", "Io", "Europa", "Ganymedes", "Callisto" }, - new Object[] { "Saturn", "Titan", "Tethys", "Dione", "Rhea", "Iapetus" }, - new Object[] { "Uranus", "Miranda", "Ariel", "Umbriel", "Titania", "Oberon" }, - new Object[] { "Neptune", "Triton", "Proteus", "Nereid", "Larissa" } }; - - final Tree tree = new Tree(); - - /* Add planets as root items in the tree. */ - for (int i = 0; i < planets.length; i++) { - final String planet = (String) (planets[i][0]); - tree.addItem(planet); - - if (planets[i].length == 1) { - /* The planet has no moons so make it a leaf. */ - tree.setChildrenAllowed(planet, false); - } else { - /* Add children (moons) under the planets. */ - for (int j = 1; j < planets[i].length; j++) { - final String moon = (String) planets[i][j]; - - /* Add the item as a regular item. */ - tree.addItem(moon); - - /* Set it to be a child. */ - tree.setParent(moon, planet); - - /* Make the moons look like leaves. */ - tree.setChildrenAllowed(moon, false); - } - - /* Expand the subtree. */ - tree.expandItemsRecursively(planet); - } - } - - // Horizontal layout with the tree on the left and a details panel on the right. - final ExpandLayout horlayout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); - horlayout.addStyleName("treeexample"); - horlayout.setSizeFull(); - - final Panel treepanel = new Panel("The Planets and Major Moons"); - treepanel.addComponent(tree); - horlayout.addComponent(treepanel); - - final Panel detailspanel = new Panel("Details"); - horlayout.addComponent(detailspanel); - horlayout.expand(detailspanel); - - final OrderedLayout detailslayout = new OrderedLayout(); - detailspanel.setLayout(detailslayout); - - // When a tree item (planet or moon) is clicked, open the item in Details view. - tree.setImmediate(true); - tree.addListener(new ValueChangeListener() { - public void valueChange(ValueChangeEvent event) { - String planet = (String) tree.getValue(); - detailspanel.setCaption("Details on " + planet); - detailslayout.removeAllComponents(); - - // Put some stuff in the Details view. - detailslayout.addComponent(new Label("Where is the cat?")); - detailslayout.addComponent(new Label("The cat is in " + planet + ".")); - } - }); - - main.setLayout(horlayout); - } - - void example_Select(Window main, String param) { - final OrderedLayout layout = new OrderedLayout( - OrderedLayout.ORIENTATION_HORIZONTAL); - layout.addStyleName("aligntop"); - - if (param.equals("twincol")) { - final SelectExample select1 = new SelectExample(this, param, - "Select some items", true); - layout.addComponent(select1); - } else if (param.equals("filter")) { - final SelectExample select1 = new SelectExample(this, param, - "Enter containing substring", false); - layout.addComponent(select1); - } else { - final SelectExample select1 = new SelectExample(this, param, - "Single Selection Mode", false); - final SelectExample select2 = new SelectExample(this, param, - "Multiple Selection Mode", true); - layout.addComponent(select1); - layout.addComponent(select2); - } - main.addComponent(layout); - } - - void example_FilterSelect(Window main, String param) { - final Select select = new Select("Enter containing substring"); - main.addComponent(select); - - select - .setFilteringMode(AbstractSelect.Filtering.FILTERINGMODE_CONTAINS); - - /* Fill the component with some items. */ - final String[] planets = new String[] { "Mercury", "Venus", "Earth", - "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" }; - - for (int i = 0; i < planets.length; i++) { - for (int j = 0; j < planets.length; j++) { - select.addItem(planets[j] + " to " + planets[i]); - } - } - } - - void example_TextField(Window main, String param) { - /* Add a single-line text field. */ - final TextField subject = new TextField("Subject"); - subject.setColumns(40); - main.addComponent(subject); - - /* Add a multi-line text field. */ - final TextField message = new TextField("Message"); - message.setRows(7); - message.setColumns(40); - main.addComponent(message); - } - - void example_TextFieldValidation(Window main, String param) { - // Create a text field with a label - final TextField username = new TextField("Username"); - main.addComponent(username); - - // Set visible length to 16 characters - username.setColumns(16); - - // Set content length to minimum of 6 and maximum of 16 characters. - // The string also may not be null. - username.addValidator(new StringLengthValidator( - "Must be 6 to 16 characters long", 6, 16, false)); - - // Setting component immediate causes a ValueChangeEvent to occur - // when the TextField loses focus. - username.setImmediate(true); - - // Listen for ValueChangeEvents and handle them - username.addListener(new ValueChangeListener() { - public void valueChange(ValueChangeEvent event) { - // Get the source of the event - final TextField username = (TextField) (event.getProperty()); - - try { - // Validate the field value. - username.validate(); - } catch (final Validator.InvalidValueException e) { - // The value was not ok. The error was set. - } - } - }); - } - - void example_UserError(final Window main, String param) { - if (param != null) { - if (param.equals("form")) { - - final FormLayout layout = new FormLayout(); - main.addComponent(layout); - - final TextField textfield = new TextField("Enter name"); - layout.addComponent(textfield); - textfield.setComponentError(null); - - final Button button = new Button("Click me!"); - layout.addComponent(button); - - button.addListener(new Button.ClickListener() { - public void buttonClick(ClickEvent event) { - if (((String) textfield.getValue()).length() == 0) { - textfield.setComponentError(new UserError( - "Must not be empty")); - } else { - textfield.setComponentError(null); - } - } - }); - } - } else { - final TextField textfield = new TextField("Enter name"); - main.addComponent(textfield); - textfield.setComponentError(null); - - final Button button = new Button("Click me!"); - main.addComponent(button); - - button.addListener(new Button.ClickListener() { - public void buttonClick(ClickEvent event) { - if (((String) textfield.getValue()).length() == 0) { - textfield.setComponentError(new UserError( - "Must not be empty")); - } else { - textfield.setComponentError(null); - } - } - }); - } - } - - void example_DateField(Window main, String param) { - OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL); - - /* Create a DateField with the calendar style. */ - final DateField popupdate = new PopupDateField("Popup calendar field"); - - /* Set resolution of the date/time display. */ - popupdate.setResolution(DateField.RESOLUTION_MIN); - - /* Set the date and time to present. */ - popupdate.setValue(new java.util.Date()); - - /* Create a DateField with the calendar style. */ - final DateField inlinedate = new InlineDateField("Inline calendar field"); - - /* Set locale of the DateField to American English. */ - inlinedate.setLocale(new Locale("en", "US")); - - /* Set the date and time to present. */ - inlinedate.setValue(new java.util.Date()); - - /* Set resolution of the date/time display. */ - inlinedate.setResolution(DateField.RESOLUTION_MIN); - - layout.addComponent(popupdate); - layout.addComponent(inlinedate); - layout.setSpacing(true); - main.addComponent(layout); - } - - void example_Validator(Window main, String param) { - main.addComponent(new SSNField()); - } - - void example_Table(Window main, String param) { - main.addComponent(new TableExample()); - } - - void example_Upload(Window main, String param) { - main.addComponent(new MyUploader()); - } - - void example_Link(Window main, String param) { - - /* Create a link that opens the popup window. */ - final Link alink = new Link(); - - /* Set the resource to be opened in the window. */ - alink.setResource(new ExternalResource("http://www.itmill.com/")); - - main.addComponent(alink); - - final ClassResource mydocument = new ClassResource("mydocument.pdf", - this); - main.addComponent(new Link("The document (pdf)", mydocument)); - main.addComponent(new Link("link to a resource", new ExternalResource( - "http://www.itmill.com/"))); - } - - void example_Button(Window main, String param) { - if (param != null) { - if (param.equals("buttons")) { - main.addComponent(new TheButton()); - } - return; - } - - // butts1 = new TheButton (); - // main.addComponent(butts1); - - // butts2 = new TheButtons (main); - // butts3 = new TheButtons2 (main); - - // Button checkbox = new Button ("This is a checkbox"); - - // main.addComponent(checkbox); - final Button button = new Button("My Button"); - main.addComponent(button); - } - - void example_CheckBox(Window main, String param) { - /* A check box with default state (not checked, i.e., false). */ - final CheckBox checkbox1 = new CheckBox("My CheckBox"); - main.addComponent(checkbox1); - - /* Another check box with explicitly set checked state. */ - final CheckBox checkbox2 = new CheckBox("Checked CheckBox"); - /* - * @TODO: Build fails here, why? checkbox2.setValue(true); - */ - main.addComponent(checkbox2); - - /* - * Make some application logic. We use anynymous listener classes here. - * The above references were defined as "final" to allow accessing them - * from inside anonymous classes. - */ - checkbox1.addListener(new ValueChangeListener() { - public void valueChange(ValueChangeEvent event) { - /* Copy the value to the other checkbox. */ - checkbox2.setValue(checkbox1.getValue()); - } - }); - checkbox2.addListener(new ValueChangeListener() { - public void valueChange(ValueChangeEvent event) { - /* Copy the value to the other checkbox. */ - checkbox1.setValue(checkbox2.getValue()); - } - }); - } - - void example_Panel(Window main, String param) { - // Create a panel with a caption. - final Panel panel = new Panel("Contact Information"); - - // Create a layout inside the panel - final OrderedLayout form = new FormLayout(); - - // Set the layout as the root layout of the panel - panel.setLayout(form); - - // Add some components - form.addComponent(new TextField("Name")); - form.addComponent(new TextField("Email")); - - // Add the panel to the main window - final ClassResource icon = new ClassResource("smiley.jpg", main - .getApplication()); - form.addComponent(new Embedded("Image", icon)); - panel.setIcon(icon); - panel.addComponent(form); - main.addComponent(panel); - } - - void example_GridLayout(Window main, String param) { - /* Create a 4 by 4 grid layout. */ - final GridLayout grid = new GridLayout(4, 4); - grid.addStyleName("example-gridlayout"); - - /* Fill out the first row using the cursor. */ - grid.addComponent(new Button("R/C 1")); - for (int i = 0; i < 3; i++) { - grid.addComponent(new Button("Col " + (grid.getCursorX() + 1))); - } - - /* Fill out the first column using coordinates. */ - for (int i = 1; i < 4; i++) { - grid.addComponent(new Button("Row " + i), 0, i); - } - - /* Add some components of various shapes. */ - grid.addComponent(new Button("3x1 button"), 1, 1, 3, 1); - grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3); - final InlineDateField date = new InlineDateField("A 2x2 date field"); - date.setResolution(DateField.RESOLUTION_DAY); - grid.addComponent(date, 2, 2, 3, 3); - - main.addComponent(grid); - } - - void example_Alignment(Window main, String param) { - if (param.equals("grid")) { - /* Create a 3 by 3 grid layout. */ - final GridLayout layout = new GridLayout(3, 3); - // OrderedLayout layout = new - // OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); - main.setLayout(layout); - layout.addStyleName("example-alignment"); - - layout.setWidth(400, Sizeable.UNITS_PIXELS); - layout.setHeight(400, Sizeable.UNITS_PIXELS); - - /* Define cells and their layouts to create. */ - - Object cells[][] = { - {new Button("Top Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_TOP)}, - {new Label("Top Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_TOP)}, - {new Label("Top Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_TOP)}, - {new Button("Center Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, - {new Button("Center Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, - {new Button("Center Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_VERTICAL_CENTER)}, - {new Button("Bottom Left"), new Integer(OrderedLayout.ALIGNMENT_LEFT), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}, - {new Button("Bottom Center"), new Integer(OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}, - {new Button("Bottom Right"), new Integer(OrderedLayout.ALIGNMENT_RIGHT), new Integer(OrderedLayout.ALIGNMENT_BOTTOM)}}; - - for (int i=0; i<9; i++) { - ExpandLayout celllayout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); - celllayout.addComponent((Component) cells[i][0]); - celllayout.setComponentAlignment((Component)cells[i][0], ((Integer)cells[i][1]).intValue(), ((Integer)cells[i][2]).intValue()); - layout.addComponent(celllayout); - //layout.setComponentAlignment((Component)cells[i][0], ((Integer)cells[i][1]).intValue(), ((Integer)cells[i][2]).intValue()); - } - } else { - final Panel panel = new Panel("A Panel with a Layout"); - main.addComponent(panel); - - // panel.addComponent(new ) - } - } - - void example_OrderedLayout(Window main, String param) { - final OrderedLayout layout = new OrderedLayout( - OrderedLayout.ORIENTATION_VERTICAL); - layout.addComponent(new TextField("Name")); - layout.addComponent(new TextField("Street address")); - layout.addComponent(new TextField("Postal code")); - main.addComponent(layout); - } - - void example_FormLayout(Window main, String param) { - final FormLayout layout = new FormLayout(); - layout.addComponent(new TextField("Name")); - layout.addComponent(new TextField("Street address")); - layout.addComponent(new TextField("Postal code")); - main.addComponent(layout); - } - - void example_ExpandLayout(Window main, String param) { - if (param != null && param.equals("centered")) { - Label widget = new Label("Here is text"); - - ExpandLayout layout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); - layout.addComponent(widget); - layout.expand(widget); - layout.setComponentAlignment(widget, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); - layout.setWidth(100, Sizeable.UNITS_PERCENTAGE); - layout.setHeight(100, Sizeable.UNITS_PERCENTAGE); - - main.setLayout(layout); - - return; - } else if (param != null && param.equals("window")) { - Window window = new Window("Progress"); - window.setHeight(100, Sizeable.UNITS_PIXELS); - window.setWidth(200, Sizeable.UNITS_PIXELS); - main.addWindow(window); - - ProgressIndicator progress = new ProgressIndicator(new Float(0.4)); - progress.addStyleName("fullwidth"); - progress.setPollingInterval(1000000); - progress.setIndeterminate(false); - - ExpandLayout layout = new ExpandLayout(OrderedLayout.ORIENTATION_HORIZONTAL); - layout.setHeight(100, Sizeable.UNITS_PERCENTAGE); - layout.setComponentAlignment(progress, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); - window.setLayout(layout); - window.addComponent(progress); - - return; - } else if (param != null && param.equals("size")) { - ExpandLayout layout = new ExpandLayout(); - layout.setSizeFull(); - main.setLayout(layout); - - Button button = new Button("This is a button in middle of nowhere"); - layout.addComponent(button); - layout.setComponentAlignment(button, OrderedLayout.ALIGNMENT_HORIZONTAL_CENTER, OrderedLayout.ALIGNMENT_VERTICAL_CENTER); - - return; - } - - for (int w = 0; w < 2; w++) { - final ExpandLayout layout = new ExpandLayout( - OrderedLayout.ORIENTATION_VERTICAL); - - /* Set the expanding layout as the root layout of a child window. */ - final Window window = new Window("A Child Window", layout); - main.addWindow(window); - - /* Add some component above the expanding one. */ - layout.addComponent(new Label("Here be some component.")); - - /* Create the expanding component. */ - final Table table = new Table("My Ever-Expanding Table"); - /* - * FIXME Java 5 -> 1.4 for (int i=0; i<5; i++) - * table.addContainerProperty("col "+(i+1), Integer.class, 0); for - * (int j=0; j<20; j++) table.addItem(new - * Object[]{1*j,2*j,3*j,4*j,5*j}, j); - */ - layout.addComponent(table); - - /* Designate the table to be the expanding component. */ - layout.expand(table); - - /* Set it to use all available area. */ - table.setSizeFull(); - - /* Add some component below the expanding one. */ - final Button button2 = new Button("Ok"); - layout.addComponent(button2); - layout.setComponentAlignment(button2, - OrderedLayout.ALIGNMENT_RIGHT, 0); - } - } - - void example_TabSheet(Window main, String param) { - if (param.equals("icon")) { - final TabSheet tabsheet = new TabSheet(); - - tabsheet.addTab(new Label("Contents of the first tab"), - "First Tab", new ClassResource("images/Mercury_small.png", - main.getApplication())); - tabsheet.addTab(new Label("Contents of the second tab"), - "Second Tab", new ClassResource("images/Venus_small.png", - this)); - tabsheet.addTab(new Label("Contents of the third tab"), - "Third tab", new ClassResource("images/Earth_small.png", - this)); - - main.addComponent(tabsheet); - // main.addComponent(new Embedded("Emb", new ClassResource - // ("images/Mercury_small.png", this))); - } else if (param.equals("expanding")) { - // Create the layout - ExpandLayout expanding = new ExpandLayout(OrderedLayout.ORIENTATION_VERTICAL); - - // It is important to set the expanding layout as the root layout - // of the containing window, in this case the main window, and not - // use addComponent(), which would place the layout inside the - // default root layout. - main.setLayout(expanding); - - // Create a tab sheet that fills the expanding layout - final TabSheet tabsheet = new TabSheet(); - tabsheet.addTab(new Label("Contents of the first tab"), "First Tab", null); - tabsheet.addTab(new Label("Contents of the second tab"), "Second Tab", null); - tabsheet.addTab(new Label("Contents of the third tab"), "Third tab", null); - - // Set the tabsheet to scale to full size inside its container - tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE); - tabsheet.setHeight(100, Sizeable.UNITS_PERCENTAGE); - - // Add the tab sheet to the layout as usual - expanding.addComponent(tabsheet); - - // Set the tab sheet to be the expanding component - expanding.expand(tabsheet); - } else if (param.equals("ordered")) { - // Create the layout - OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); - - // It is important to set the expanding layout as the root layout - // of the containing window, in this case the main window, and not - // use addComponent(), which would place the layout inside the - // default root layout. - main.setLayout(layout); - - // Create a tab sheet that fills the expanding layout - final TabSheet tabsheet = new TabSheet(); - tabsheet.addTab(new Label("Contents of the first tab"), "First Tab", null); - tabsheet.addTab(new Label("Contents of the second tab"), "Second Tab", null); - tabsheet.addTab(new Label("Contents of the third tab"), "Third tab", null); - - // Set the tabsheet to scale to full size inside its container - tabsheet.setWidth(100, Sizeable.UNITS_PERCENTAGE); - //tabsheet().setHeight(100, Sizeable.UNITS_PERCENTAGE); - - // Add the tab sheet to the layout as usual - layout.addComponent(tabsheet); - } else { - main.addComponent(new TabSheetExample()); - } - } - - void example_Embedded(Window main, String param) { - final Embedded image = new Embedded("", new ClassResource("smiley.jpg", - this)); - image.addStyleName("omaimage"); - main.addComponent(image); - - final EmbeddedButton button = new EmbeddedButton(new ClassResource( - "smiley.jpg", this)); - main.addComponent(button); - } - - void example_Window(Window main, String param) { - if (param != null) { - if (param.equals("opener")) { - main.addComponent(new WindowOpener("Window Opener", main)); - } else if (param.equals("multiple")) { - /* Create a new window. */ - final Window mywindow = new Window("Second Window"); - mywindow.setName("mywindow"); - mywindow.addComponent(new Label("This is a second window.")); - - /* Add the window to the application. */ - main.getApplication().addWindow(mywindow); - - /* Add link to the second window in the main window. */ - main.addComponent(new Label("Second window: middle-click to open", - Label.CONTENT_XHTML)); - main.addComponent(new Label( - "The second window can be accessed through URL: " - + mywindow.getURL())); - } - return; - } - - /* Create a new window. */ - final Window mywindow = new Window("My Window"); - mywindow.setName("mywindow"); - - /* Add some components in the window. */ - mywindow.addComponent(new Label("A text label in the window.")); - final Button okbutton = new Button("OK"); - mywindow.addComponent(okbutton); - - /* Set window size. */ - mywindow.setHeight(200); - mywindow.setWidth(400); - - /* Set window position. */ - mywindow.setPositionX(200); - mywindow.setPositionY(50); - - /* Add the window to the Application object. */ - main.addWindow(mywindow); - - } - - void example_ClassResource(Window main, String param) { - final DateField df = new DateField(); - main.addComponent(df); - df.setIcon(new ClassResource("smiley.jpg", main.getApplication())); - main.addComponent(new Embedded("This is Embedded", new ClassResource( - "smiley.jpg", main.getApplication()))); - } - - void example_ProgressIndicator(final Window main, String param) { - if (param != null) { - if (param.equals("thread")) { - - // Create the indicator - final ProgressIndicator indicator = new ProgressIndicator(new Float(0.0)); - main.addComponent(indicator); - - // Set polling frequency to 0.5 seconds. - indicator.setPollingInterval(1000); - - //indicator.addStyleName("invisible"); - final Label text = new Label("-- Not running --"); - main.addComponent(text); - - // Add a button to start the progress - final Button button = new Button("Click to start"); - main.addComponent(button); - - // Another thread to do some work - class WorkThread extends Thread { - public void run () { - double current = 0.0; - while (true) { - // Do some "heavy work" - try { - sleep(50); // Sleep for 50 milliseconds - } catch (InterruptedException e) {} - - // Grow the progress value until it reaches 1.0. - current += 0.01; - if (current>1.0) - indicator.setValue(new Float(1.0)); - else - indicator.setValue(new Float(current)); - - // After the progress is full for a while, stop. - if (current > 1.2) { - // Restore the state to initial. - indicator.setValue(new Float(0.0)); - button.setVisible(true); - break; - } - } - } - } - - // Clicking the button creates and runs a work thread - button.addListener(new Button.ClickListener() { - public void buttonClick(ClickEvent event) { - final WorkThread thread = new WorkThread(); - thread.start(); - - // The button hides until the work is done. - button.setVisible(false); - } - }); - } else if (param.equals("window")) { - // Create a table in the main window to hold items added in the second window - final Table table = new Table(); - table.setPageLength(5); - table.setWidth(100, Sizeable.UNITS_PERCENTAGE); - table.addContainerProperty("Name", String.class, ""); - main.addComponent(table); - - // Create the second window - final Window adderWindow = new Window("Add Items"); - adderWindow.setName("win-adder"); - main.getApplication().addWindow(adderWindow); - - // Create selection component to add items to the table - final NativeSelect select = new NativeSelect("Select item to add"); - select.setImmediate(true); - adderWindow.addComponent(select); - - // Add some items to the selection - String items[] = new String[]{"-- Select --", "Mercury", "Venus", - "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"}; - for (int i=0; i