From: Marko Grönroos Date: Thu, 29 May 2008 13:21:45 +0000 (+0000) Subject: Renamed manual related testbench. X-Git-Tag: 6.7.0.beta1~4683 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8acbce77cb67017dd3efd51a8d8c76202383b086;p=vaadin-framework.git Renamed manual related testbench. svn changeset:4697/svn branch:trunk --- diff --git a/WebContent/ITMILL/themes/tests-book/img/smiley.jpg b/WebContent/ITMILL/themes/tests-book/img/smiley.jpg new file mode 100644 index 0000000000..dc1a399c76 Binary files /dev/null and b/WebContent/ITMILL/themes/tests-book/img/smiley.jpg differ diff --git a/WebContent/ITMILL/themes/tests-book/layouts/layoutname.html b/WebContent/ITMILL/themes/tests-book/layouts/layoutname.html new file mode 100644 index 0000000000..6b75910783 --- /dev/null +++ b/WebContent/ITMILL/themes/tests-book/layouts/layoutname.html @@ -0,0 +1,19 @@ + + + + + + + +
+ + + + + + + + + +
User name:
Password:
+
\ No newline at end of file diff --git a/WebContent/ITMILL/themes/tests-book/styles.css b/WebContent/ITMILL/themes/tests-book/styles.css new file mode 100644 index 0000000000..a8cebfad29 --- /dev/null +++ b/WebContent/ITMILL/themes/tests-book/styles.css @@ -0,0 +1,116 @@ +@import url(../default/styles.css); + +/*****************************************************************************/ +/* Styling for tests.magi application. */ +/*****************************************************************************/ + +#tk5testbench2 { + background: white; +} + +/*****************************************************************************/ +/* For example_Tree() */ +/*****************************************************************************/ + +.i-expandlayout-treeexample .i-panel .i-orderedlayout { + padding: 0px; +} + +.i-orderedlayout-margin-top { padding-top: 0px; } +.i-orderedlayout-margin-left { padding-left: 0px; } +.i-orderedlayout-margin-bottom { padding-bottom: 0px; } +.i-orderedlayout-margin-right { padding-right: 0px; } + +/*****************************************************************************/ +/* For example_GridLayout() */ +/*****************************************************************************/ +table.i-gridlayout-example-gridlayout { + background: blue; +} + +.i-gridlayout-example-gridlayout td { + background: white; +} + +/*****************************************************************************/ +/* For example_Alignment() */ +/*****************************************************************************/ +.i-gridlayout-example-alignment { + background: blue; +} +.i-gridlayout-example-alignment .i-expandlayout { + background: white; + width: 150px; + height: 75px; +} + +.i-orderedlayout { + margin: 5px; +} + +/* For SelectExample.java. */ +.i-orderedlayout tr { + vertical-align: top; +} + +/*****************************************************************************/ +/* For example_ProgressIndicator() */ +/*****************************************************************************/ +.i-progressindicator-invisible { + display: none; +} + +.i-progressindicator-fullwidth { + width: 100px; +} + +/*****************************************************************************/ +/* For example_Spacing() */ +/*****************************************************************************/ +.i-orderedlayout-spacingexample table { + background: blue; +} + +.i-orderedlayout-spacingexample td { + background: white; +} + +/* Set horizontal cell spacing for all OrderedLayouts. */ +.i-orderedlayout-hspacing { + padding-left: 10px; +} + +/* Set horizontal cell spacing in specific layout with "spacingexample" style. */ +.i-orderedlayout-spacingexample .i-orderedlayout-hspacing { + padding-left: 30px; +} + +/* Set vertical cell spacing in specific layout with "spacingexample" style. */ +.i-orderedlayout-spacingexample .i-orderedlayout-vspacing { + margin-top: 30px; +} + +table.i-gridlayout-spacingexample { + background: blue; +} + +.i-gridlayout-spacingexample td { + background: white; +} + +/*****************************************************************************/ +/* For example_Margin() */ +/*****************************************************************************/ +.i-orderedlayout-marginexample1 { padding-left: 200px; } +.i-orderedlayout-marginexample1 { padding-right: 100px; } +.i-orderedlayout-marginexample1 { padding-top: 50px; } +.i-orderedlayout-marginexample1 { padding-bottom: 25px; } + +.i-orderedlayout-marginexample2 .i-orderedlayout-margin-left { padding-left: 200px; } +.i-orderedlayout-marginexample2 .i-orderedlayout-margin-right { padding-right: 100px; } +.i-orderedlayout-marginexample2 .i-orderedlayout-margin-top { padding-top: 50px; } +.i-orderedlayout-marginexample2 .i-orderedlayout-margin-bottom { padding-bottom: 25px; } + +.i-orderedlayout-marginexample1 { background: #d0d0ff; border: 1px;} +.i-orderedlayout-marginexample2 { background: #ffd0d0; border: 1px;} +.i-orderedlayout-marginexample table { background: white; } diff --git a/WebContent/ITMILL/themes/tests-magi/img/smiley.jpg b/WebContent/ITMILL/themes/tests-magi/img/smiley.jpg deleted file mode 100644 index dc1a399c76..0000000000 Binary files a/WebContent/ITMILL/themes/tests-magi/img/smiley.jpg and /dev/null differ diff --git a/WebContent/ITMILL/themes/tests-magi/layouts/layoutname.html b/WebContent/ITMILL/themes/tests-magi/layouts/layoutname.html deleted file mode 100644 index 6b75910783..0000000000 --- a/WebContent/ITMILL/themes/tests-magi/layouts/layoutname.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - -
- - - - - - - - - -
User name:
Password:
-
\ No newline at end of file diff --git a/WebContent/ITMILL/themes/tests-magi/styles.css b/WebContent/ITMILL/themes/tests-magi/styles.css deleted file mode 100644 index a8cebfad29..0000000000 --- a/WebContent/ITMILL/themes/tests-magi/styles.css +++ /dev/null @@ -1,116 +0,0 @@ -@import url(../default/styles.css); - -/*****************************************************************************/ -/* Styling for tests.magi application. */ -/*****************************************************************************/ - -#tk5testbench2 { - background: white; -} - -/*****************************************************************************/ -/* For example_Tree() */ -/*****************************************************************************/ - -.i-expandlayout-treeexample .i-panel .i-orderedlayout { - padding: 0px; -} - -.i-orderedlayout-margin-top { padding-top: 0px; } -.i-orderedlayout-margin-left { padding-left: 0px; } -.i-orderedlayout-margin-bottom { padding-bottom: 0px; } -.i-orderedlayout-margin-right { padding-right: 0px; } - -/*****************************************************************************/ -/* For example_GridLayout() */ -/*****************************************************************************/ -table.i-gridlayout-example-gridlayout { - background: blue; -} - -.i-gridlayout-example-gridlayout td { - background: white; -} - -/*****************************************************************************/ -/* For example_Alignment() */ -/*****************************************************************************/ -.i-gridlayout-example-alignment { - background: blue; -} -.i-gridlayout-example-alignment .i-expandlayout { - background: white; - width: 150px; - height: 75px; -} - -.i-orderedlayout { - margin: 5px; -} - -/* For SelectExample.java. */ -.i-orderedlayout tr { - vertical-align: top; -} - -/*****************************************************************************/ -/* For example_ProgressIndicator() */ -/*****************************************************************************/ -.i-progressindicator-invisible { - display: none; -} - -.i-progressindicator-fullwidth { - width: 100px; -} - -/*****************************************************************************/ -/* For example_Spacing() */ -/*****************************************************************************/ -.i-orderedlayout-spacingexample table { - background: blue; -} - -.i-orderedlayout-spacingexample td { - background: white; -} - -/* Set horizontal cell spacing for all OrderedLayouts. */ -.i-orderedlayout-hspacing { - padding-left: 10px; -} - -/* Set horizontal cell spacing in specific layout with "spacingexample" style. */ -.i-orderedlayout-spacingexample .i-orderedlayout-hspacing { - padding-left: 30px; -} - -/* Set vertical cell spacing in specific layout with "spacingexample" style. */ -.i-orderedlayout-spacingexample .i-orderedlayout-vspacing { - margin-top: 30px; -} - -table.i-gridlayout-spacingexample { - background: blue; -} - -.i-gridlayout-spacingexample td { - background: white; -} - -/*****************************************************************************/ -/* For example_Margin() */ -/*****************************************************************************/ -.i-orderedlayout-marginexample1 { padding-left: 200px; } -.i-orderedlayout-marginexample1 { padding-right: 100px; } -.i-orderedlayout-marginexample1 { padding-top: 50px; } -.i-orderedlayout-marginexample1 { padding-bottom: 25px; } - -.i-orderedlayout-marginexample2 .i-orderedlayout-margin-left { padding-left: 200px; } -.i-orderedlayout-marginexample2 .i-orderedlayout-margin-right { padding-right: 100px; } -.i-orderedlayout-marginexample2 .i-orderedlayout-margin-top { padding-top: 50px; } -.i-orderedlayout-marginexample2 .i-orderedlayout-margin-bottom { padding-bottom: 25px; } - -.i-orderedlayout-marginexample1 { background: #d0d0ff; border: 1px;} -.i-orderedlayout-marginexample2 { background: #ffd0d0; border: 1px;} -.i-orderedlayout-marginexample table { background: white; } diff --git a/src/com/itmill/toolkit/tests/book/ChatApplication.java b/src/com/itmill/toolkit/tests/book/ChatApplication.java new file mode 100644 index 0000000000..eaea83062c --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/ChatApplication.java @@ -0,0 +1,68 @@ +package com.itmill.toolkit.tests.book; + +import java.util.*; +import com.itmill.toolkit.Application; +import com.itmill.toolkit.ui.*; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class ChatApplication extends Application implements Button.ClickListener { + /* ChatApplication instances of different users. + * Warning: a hack, not safe, because sessions can expire. */ + static List users = new ArrayList(); + + /* Messages as a shared list. */ + static List messages = new ArrayList(); + int localSize = 0; + + /* User interface. */ + Table messageTable = new Table(); + TextField username = new TextField("Username:"); + TextField message = new TextField("Message:"); + + public void init() { + final Window main = new Window ("Chat"); + setMainWindow(main); + setTheme("tests-magi"); + users.add(this); + + main.addComponent(username); + + main.addComponent(messageTable); + messageTable.addContainerProperty("Sender", String.class, ""); + messageTable.addContainerProperty("Message", String.class, ""); + updateTable(); + + main.addComponent(message); + + Button send = new Button("Send"); + send.addListener(this); + main.addComponent(send); + + // Poll for new messages once a second. + ProgressIndicator poller = new ProgressIndicator(); + poller.addStyleName("invisible"); + main.addComponent(poller); + } + + public void buttonClick(ClickEvent event) { + synchronized(users) { + // Create the new message in the shared list. + messages.add(new String[]{new String((String) username.getValue()), + new String((String) message.getValue())}); + + // Update the message tables for all users. + for (Iterator i = users.iterator();i.hasNext();) + ((ChatApplication)i.next()).updateTable(); + } + } + + void updateTable() { + if (localSize == messages.size()) + return; // No updating needed + + // Add new messages to the table + while (localSize < messages.size()) + messageTable.addItem((Object[])messages.get(localSize++), + new Integer(localSize-1)); + } +} diff --git a/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java b/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java new file mode 100644 index 0000000000..2ed44785bd --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/DefaultButtonExample.java @@ -0,0 +1,102 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.event.ShortcutAction; +import com.itmill.toolkit.event.Action.Handler; +import com.itmill.toolkit.ui.AbstractField; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.FormLayout; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Window; + +public class DefaultButtonExample extends CustomComponent implements Handler { + // Define and create user interface components + Panel panel = new Panel("Login"); + OrderedLayout formlayout = new FormLayout(); + TextField username = new TextField("Username"); + TextField password = new TextField("Password"); + OrderedLayout buttons = new FormLayout(); + + // Create buttons and define their listener methods. Here we use parameterless + // methods so that we can use same methods for both click events and + // keyboard actions. + Button ok = new Button("OK", this, "okHandler"); + Button cancel = new Button("Cancel", this, "cancelHandler"); + + // Have the unmodified Enter key cause an event + Action action_ok = new ShortcutAction("Default key", + ShortcutAction.KeyCode.ENTER, + null); + + // Have the C key modified with Alt cause an event + Action action_cancel = new ShortcutAction("Alt+C", + ShortcutAction.KeyCode.C, + new int[] { ShortcutAction.ModifierKey.ALT }); + + Window window = null; + + public DefaultButtonExample(Window win) { + // Set up the user interface + setCompositionRoot(panel); + panel.addComponent(formlayout); + formlayout.setOrientation(OrderedLayout.ORIENTATION_VERTICAL); + formlayout.addComponent(username); + formlayout.addComponent(password); + formlayout.addComponent(buttons); + buttons.setOrientation(OrderedLayout.ORIENTATION_HORIZONTAL); + buttons.addComponent(ok); + buttons.addComponent(cancel); + + // Set focus to username + username.focus(); + + // Set this object as the action handler + System.out.println("adding ah"); + win.addActionHandler(this); + window = win; + + System.out.println("start done."); + } + + /** + * Retrieve actions for a specific component. This method will be called for + * each object that has a handler; in this example the Ok and Cancel + * buttons. + */ + public Action[] getActions(Object target, Object sender) { + System.out.println("getActions()"); + return new Action[] {action_ok, action_cancel}; + } + + /** + * Handle actions received from keyboard. This simply directs the actions to + * the same listener methods that are called with ButtonClick events. + */ + public void handleAction(Action action, Object sender, Object target) { + if (action == action_ok) + okHandler(); + if (action == action_cancel) + cancelHandler(); + } + + public void okHandler() { + // Do something: report the click + formlayout.addComponent(new Label("OK clicked. "+ + "User="+username.getValue()+ + ", password="+password.getValue())); + // + } + + public void cancelHandler() { + // Do something: report the click + formlayout.addComponent(new Label("Cancel clicked. User="+username.getValue()+", password="+password.getValue())); + } +} diff --git a/src/com/itmill/toolkit/tests/book/EmbeddedButton.java b/src/com/itmill/toolkit/tests/book/EmbeddedButton.java new file mode 100644 index 0000000000..4ec0d3a198 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/EmbeddedButton.java @@ -0,0 +1,39 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.terminal.Resource; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; + +public class EmbeddedButton extends CustomComponent implements + Button.ClickListener { + Button thebutton; + + public EmbeddedButton(Resource icon) { + /* Create a Button without a caption. */ + thebutton = new Button(); + + /* Set the icon of the button from a resource. */ + thebutton.setIcon(icon); + + /* + * Set the style to link; this leaves out the button frame so you just + * have the image in the link. + */ + thebutton.setStyle("link"); + + /* Listen for ClickEvents. */ + thebutton.addListener(this); + + setCompositionRoot(thebutton); + } + + /** Handle button click events from the button. */ + public void buttonClick(Button.ClickEvent event) { + thebutton.setIcon(null); + thebutton.setCaption("You successfully clicked on the icon"); + } +} diff --git a/src/com/itmill/toolkit/tests/book/MagiTestApplication.java b/src/com/itmill/toolkit/tests/book/MagiTestApplication.java new file mode 100644 index 0000000000..c715d4d7c4 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/MagiTestApplication.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 MagiTestApplication 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" + + "Class of the Item ID: " + + event.getProperty().getValue().getClass().getName() + + "
" + "Caption: " + + select.getItemCaption(event.getProperty().getValue())); + status.setContentMode(Label.CONTENT_XHTML); + } + } +} diff --git a/src/com/itmill/toolkit/tests/book/TabSheetExample.java b/src/com/itmill/toolkit/tests/book/TabSheetExample.java new file mode 100644 index 0000000000..20c9c28785 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TabSheetExample.java @@ -0,0 +1,64 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.TabSheet; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent; + +public class TabSheetExample extends CustomComponent implements + Button.ClickListener, TabSheet.SelectedTabChangeListener { + TabSheet tabsheet = new TabSheet(); + Button tab1 = new Button("Push this button"); + Label tab2 = new Label("Contents of Second Tab"); + Label tab3 = new Label("Contents of Third Tab"); + + TabSheetExample() { + setCompositionRoot(tabsheet); + + /* Listen for changes in tab selection. */ + tabsheet.addListener(this); + + /* First tab contains a button, for which we listen button click events. */ + tab1.addListener(this); + tabsheet.addTab(tab1, "First Tab", null); + + /* A tab that is initially invisible. */ + tab2.setVisible(false); + tabsheet.addTab(tab2, "Second Tab", null); + + /* A tab that is initially disabled. */ + tab3.setEnabled(false); + tabsheet.addTab(tab3, "Third tab", null); + } + + public void buttonClick(ClickEvent event) { + /* Enable the invisible and disabled tabs. */ + tab2.setVisible(true); + tab3.setEnabled(true); + + /* Change selection automatically to second tab. */ + tabsheet.setSelectedTab(tab2); + } + + public void selectedTabChange(SelectedTabChangeEvent event) { + /* + * Cast to a TabSheet. This isn't really necessary in this example, as + * we have only one TabSheet component, but would be useful if there + * were multiple TabSheets. + */ + final TabSheet source = (TabSheet) event.getSource(); + if (source == tabsheet) { + /* If the first tab was selected. */ + if (source.getSelectedTab() == tab1) { + tab2.setVisible(false); + tab3.setEnabled(false); + } + } + } +} diff --git a/src/com/itmill/toolkit/tests/book/TableExample.java b/src/com/itmill/toolkit/tests/book/TableExample.java new file mode 100644 index 0000000000..cac01d204c --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TableExample.java @@ -0,0 +1,72 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.data.Property; +import com.itmill.toolkit.data.Property.ValueChangeEvent; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Table; + +public class TableExample extends CustomComponent { + /* Create the table with a caption. */ + Table table = new Table("This is my Table"); + + /* A layout needed for the example. */ + OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); + + /* Feedback for selecting items from the table. */ + Label current = new Label("Selected: -"); + + TableExample() { + setCompositionRoot(layout); + layout.addComponent(table); + + /* Define the names, data types, and default values of columns. */ + table.addContainerProperty("First Name", String.class, + "(no first name)"); + table.addContainerProperty("Last Name", String.class, "(no last name)"); + table.addContainerProperty("Year", Integer.class, null); + + /* We use these entries to generate random items in a table. */ + final String[] firstnames = new String[] { "Donald", "Patty", "Sally", + "Douglas" }; + final String[] lastnames = new String[] { "Smith", "Jones", " Adams", + "Knuth" }; + + /* Add some items in the table and assign them an Item ID (IID). */ + for (int i = 0; i < 500; i++) { + /* Add a randomly generated item in the Table. */ + table.addItem(new Object[] { + firstnames[(int) (Math.random() * (firstnames.length - 0.01))], + lastnames[(int) (Math.random() * (lastnames.length - 0.01))], + new Integer((int) (1900 + Math.random() * 100)) }, + new Integer(i)); + } + + /* Set the number of items visible in the table. */ + table.setPageLength(10); + + /* Enable some UI features for the table. */ + table.setColumnReorderingAllowed(true); + table.setColumnCollapsingAllowed(true); + + /* Allow selecting items from the table. */ + table.setSelectable(true); + + /* When an item is selected, the selection is sent immediately to server. */ + table.setImmediate(true); + + /* Handle selection change. */ + table.addListener(new Property.ValueChangeListener() { + public void valueChange(ValueChangeEvent event) { + current.setValue("Selected: " + table.getValue().toString()); + } + }); + + layout.addComponent(current); + } +} diff --git a/src/com/itmill/toolkit/tests/book/TheButton.java b/src/com/itmill/toolkit/tests/book/TheButton.java new file mode 100644 index 0000000000..56f3054733 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TheButton.java @@ -0,0 +1,27 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; + +public class TheButton extends CustomComponent implements Button.ClickListener { + Button thebutton; + + public TheButton() { + /* Create a Button with the given caption. */ + thebutton = new Button("Do not push this button"); + + /* Listen for ClickEvents. */ + thebutton.addListener(this); + + setCompositionRoot(thebutton); + } + + /** Handle button click events from the button. */ + public void buttonClick(Button.ClickEvent event) { + thebutton.setCaption("Do not push this button again"); + } +} diff --git a/src/com/itmill/toolkit/tests/book/TheButtons.java b/src/com/itmill/toolkit/tests/book/TheButtons.java new file mode 100644 index 0000000000..e5a22457ee --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TheButtons.java @@ -0,0 +1,33 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.AbstractComponentContainer; +import com.itmill.toolkit.ui.Button; + +public class TheButtons implements Button.ClickListener { + Button thebutton; + Button secondbutton; + + /** Creates two buttons into given container. */ + public TheButtons(AbstractComponentContainer container) { + thebutton = new Button("Do not push this button"); + thebutton.addListener(this); + container.addComponent(thebutton); + + secondbutton = new Button("I am a button too"); + secondbutton.addListener(this); + container.addComponent(secondbutton); + } + + /** Handle button click events from the two buttons. */ + public void buttonClick(Button.ClickEvent event) { + if (event.getButton() == thebutton) { + thebutton.setCaption("Do not push this button again"); + } else if (event.getButton() == secondbutton) { + secondbutton.setCaption("I am not a number"); + } + } +} diff --git a/src/com/itmill/toolkit/tests/book/TheButtons2.java b/src/com/itmill/toolkit/tests/book/TheButtons2.java new file mode 100644 index 0000000000..a5fc7711ce --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TheButtons2.java @@ -0,0 +1,33 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.AbstractComponentContainer; +import com.itmill.toolkit.ui.Button; + +public class TheButtons2 { + Button thebutton; + Button secondbutton; + + /** Creates two buttons in given container. */ + public TheButtons2(AbstractComponentContainer container) { + thebutton = new Button("Do not push this button"); + thebutton.addListener(Button.ClickEvent.class, this, "theButtonClick"); + container.addComponent(thebutton); + + secondbutton = new Button("I am a button too"); + secondbutton.addListener(Button.ClickEvent.class, this, + "secondButtonClick"); + container.addComponent(secondbutton); + } + + public void theButtonClick(Button.ClickEvent event) { + thebutton.setCaption("Do not push this button again"); + } + + public void secondButtonClick(Button.ClickEvent event) { + secondbutton.setCaption("I am not a number!"); + } +} diff --git a/src/com/itmill/toolkit/tests/book/TheButtons3.java b/src/com/itmill/toolkit/tests/book/TheButtons3.java new file mode 100644 index 0000000000..47ee1c5b61 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/TheButtons3.java @@ -0,0 +1,43 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.AbstractComponentContainer; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Button.ClickEvent; + +/** This example demonstrates the use of inline classes for event listeners. */ +public class TheButtons3 { + Button thebutton; /* This component is stored as a member variable. */ + + /** Creates two buttons in given container. */ + public TheButtons3(AbstractComponentContainer container) { + thebutton = new Button("Do not push this button"); + thebutton.addListener(new Button.ClickListener() { + /* + * Define the method in the local class to handle the click. + */ + public void buttonClick(ClickEvent event) { + thebutton.setCaption("Do not push this button again"); + } + }); + container.addComponent(thebutton); + + /* + * Have the second button as a local variable in the constructor. Only + * "final" local variables can be accessed from an anonymous class. + */ + final Button secondbutton = new Button("I am a button too"); + secondbutton.addListener(new Button.ClickListener() { + /* + * Define the method in the local class to handle the click. + */ + public void buttonClick(ClickEvent event) { + secondbutton.setCaption("I am not a number!"); + } + }); + container.addComponent(secondbutton); + } +} diff --git a/src/com/itmill/toolkit/tests/book/WindowOpener.java b/src/com/itmill/toolkit/tests/book/WindowOpener.java new file mode 100644 index 0000000000..b37d28108d --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/WindowOpener.java @@ -0,0 +1,74 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Window.CloseEvent; + +/** Component contains a button that allows opening a window. */ +public class WindowOpener extends CustomComponent implements + Window.CloseListener { + Window mainwindow; // Reference to main window + Window mywindow; // The window to be opened + Button openbutton; // Button for opening the window + Button closebutton; // A button in the window + Label explanation; // A descriptive text + + public WindowOpener(String label, Window main) { + mainwindow = main; + + /* The component consists of a button that opens the window. */ + final OrderedLayout layout = new OrderedLayout(); + layout.addComponent(openbutton = new Button("Open Window", this, + "openButtonClick")); + layout.addComponent(explanation = new Label("Explanation")); + setCompositionRoot(layout); + } + + /** Handle the clicks for the two buttons. */ + public void openButtonClick(Button.ClickEvent event) { + /* Create a new window. */ + mywindow = new Window("My Dialog"); + + /* Listen for close events for the window. */ + mywindow.addListener(this); + + /* Add components in the window. */ + mywindow.addComponent(new Label("A text label in the window.")); + closebutton = new Button("Close", this, "closeButtonClick"); + mywindow.addComponent(closebutton); + + /* Add the window inside the main window. */ + mainwindow.addWindow(mywindow); + + /* Allow opening only one window at a time. */ + openbutton.setEnabled(false); + + explanation.setValue("Window opened"); + } + + /** Handle Close button click and close the window. */ + public void closeButtonClick(Button.ClickEvent event) { + /* Windows are managed by the application object. */ + mainwindow.removeWindow(mywindow); + + /* Return to initial state. */ + openbutton.setEnabled(true); + + explanation.setValue("Closed with button"); + } + + /** In case the window is closed otherwise. */ + public void windowClose(CloseEvent e) { + /* Return to initial state. */ + openbutton.setEnabled(true); + + explanation.setValue("Closed with window controls"); + } +} diff --git a/src/com/itmill/toolkit/tests/book/WindowTestApplication.java b/src/com/itmill/toolkit/tests/book/WindowTestApplication.java new file mode 100644 index 0000000000..c553c17073 --- /dev/null +++ b/src/com/itmill/toolkit/tests/book/WindowTestApplication.java @@ -0,0 +1,72 @@ +package com.itmill.toolkit.tests.book; + +import com.itmill.toolkit.Application; +import com.itmill.toolkit.ui.*; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.terminal.*; + +public class WindowTestApplication extends Application { + Window anotherpage = null; + + public void init() { + final Window main = new Window ("Window Test Application"); + setMainWindow(main); + setTheme("tests-magi"); + + /* Create a new window. */ + final Window mywindow = new Window("Second Window"); + + /* Manually set the name of the window. */ + mywindow.setName("mywindow"); + + /* Add some content to the window. */ + mywindow.addComponent(new Label("This is a second window.")); + + /* Add the window to the application. */ + addWindow(mywindow); + + /* Add a button to open a new window. */ + main.addComponent(new Button("Click to open new window", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + // Open the window. + main.open(new ExternalResource(mywindow.getURL()), "_new"); + } + })); + + /* Add a link to the second window. */ + Link link = new Link("Click to open second window", + new ExternalResource(mywindow.getURL())); + link.setTargetName("_new"); + //link.setTargetHeight(300); + //link.setTargetWidth(300); + //link.setTargetBorder(Link.TARGET_BORDER_DEFAULT); + main.addComponent(link); + + /* Add the link manually inside a Label. */ + main.addComponent(new Label("Second window: click to open", + Label.CONTENT_XHTML)); + main.addComponent(new Label("The second window can be accessed through URL: " + + mywindow.getURL())); + + /* Add link to the yet another window that does not yet exist. */ + main.addComponent(new Label("Yet another window: click to open", + Label.CONTENT_XHTML)); + main.addComponent(new Label("The yet another window can be accessed through URL: " + + getURL()+"anotherpage/")); + } + + public Window getWindow(String name) { + if (name.equals("anotherpage")) { + if (anotherpage == null) { + anotherpage = new Window("Yet Another Page"); + anotherpage.addComponent(new Label("This is a yet another window.")); + } + return anotherpage; + } + return super.getWindow(name); + } + +} diff --git a/src/com/itmill/toolkit/tests/book/smiley.jpg b/src/com/itmill/toolkit/tests/book/smiley.jpg new file mode 100644 index 0000000000..dc1a399c76 Binary files /dev/null and b/src/com/itmill/toolkit/tests/book/smiley.jpg differ diff --git a/src/com/itmill/toolkit/tests/magi/ChatApplication.java b/src/com/itmill/toolkit/tests/magi/ChatApplication.java deleted file mode 100644 index ffb9a9d285..0000000000 --- a/src/com/itmill/toolkit/tests/magi/ChatApplication.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.itmill.toolkit.tests.magi; - -import java.util.*; -import com.itmill.toolkit.Application; -import com.itmill.toolkit.ui.*; -import com.itmill.toolkit.ui.Button.ClickEvent; - -public class ChatApplication extends Application implements Button.ClickListener { - /* ChatApplication instances of different users. - * Warning: a hack, not safe, because sessions can expire. */ - static List users = new ArrayList(); - - /* Messages as a shared list. */ - static List messages = new ArrayList(); - int localSize = 0; - - /* User interface. */ - Table messageTable = new Table(); - TextField username = new TextField("Username:"); - TextField message = new TextField("Message:"); - - public void init() { - final Window main = new Window ("Chat"); - setMainWindow(main); - setTheme("tests-magi"); - users.add(this); - - main.addComponent(username); - - main.addComponent(messageTable); - messageTable.addContainerProperty("Sender", String.class, ""); - messageTable.addContainerProperty("Message", String.class, ""); - updateTable(); - - main.addComponent(message); - - Button send = new Button("Send"); - send.addListener(this); - main.addComponent(send); - - // Poll for new messages once a second. - ProgressIndicator poller = new ProgressIndicator(); - poller.addStyleName("invisible"); - main.addComponent(poller); - } - - public void buttonClick(ClickEvent event) { - synchronized(users) { - // Create the new message in the shared list. - messages.add(new String[]{new String((String) username.getValue()), - new String((String) message.getValue())}); - - // Update the message tables for all users. - for (Iterator i = users.iterator();i.hasNext();) - ((ChatApplication)i.next()).updateTable(); - } - } - - void updateTable() { - if (localSize == messages.size()) - return; // No updating needed - - // Add new messages to the table - while (localSize < messages.size()) - messageTable.addItem((Object[])messages.get(localSize++), - new Integer(localSize-1)); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/DefaultButtonExample.java b/src/com/itmill/toolkit/tests/magi/DefaultButtonExample.java deleted file mode 100644 index 11b7432b2b..0000000000 --- a/src/com/itmill/toolkit/tests/magi/DefaultButtonExample.java +++ /dev/null @@ -1,102 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.event.Action; -import com.itmill.toolkit.event.ShortcutAction; -import com.itmill.toolkit.event.Action.Handler; -import com.itmill.toolkit.ui.AbstractField; -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.CustomComponent; -import com.itmill.toolkit.ui.FormLayout; -import com.itmill.toolkit.ui.Label; -import com.itmill.toolkit.ui.OrderedLayout; -import com.itmill.toolkit.ui.Panel; -import com.itmill.toolkit.ui.TextField; -import com.itmill.toolkit.ui.Window; - -public class DefaultButtonExample extends CustomComponent implements Handler { - // Define and create user interface components - Panel panel = new Panel("Login"); - OrderedLayout formlayout = new FormLayout(); - TextField username = new TextField("Username"); - TextField password = new TextField("Password"); - OrderedLayout buttons = new FormLayout(); - - // Create buttons and define their listener methods. Here we use parameterless - // methods so that we can use same methods for both click events and - // keyboard actions. - Button ok = new Button("OK", this, "okHandler"); - Button cancel = new Button("Cancel", this, "cancelHandler"); - - // Have the unmodified Enter key cause an event - Action action_ok = new ShortcutAction("Default key", - ShortcutAction.KeyCode.ENTER, - null); - - // Have the C key modified with Alt cause an event - Action action_cancel = new ShortcutAction("Alt+C", - ShortcutAction.KeyCode.C, - new int[] { ShortcutAction.ModifierKey.ALT }); - - Window window = null; - - public DefaultButtonExample(Window win) { - // Set up the user interface - setCompositionRoot(panel); - panel.addComponent(formlayout); - formlayout.setOrientation(OrderedLayout.ORIENTATION_VERTICAL); - formlayout.addComponent(username); - formlayout.addComponent(password); - formlayout.addComponent(buttons); - buttons.setOrientation(OrderedLayout.ORIENTATION_HORIZONTAL); - buttons.addComponent(ok); - buttons.addComponent(cancel); - - // Set focus to username - username.focus(); - - // Set this object as the action handler - System.out.println("adding ah"); - win.addActionHandler(this); - window = win; - - System.out.println("start done."); - } - - /** - * Retrieve actions for a specific component. This method will be called for - * each object that has a handler; in this example the Ok and Cancel - * buttons. - */ - public Action[] getActions(Object target, Object sender) { - System.out.println("getActions()"); - return new Action[] {action_ok, action_cancel}; - } - - /** - * Handle actions received from keyboard. This simply directs the actions to - * the same listener methods that are called with ButtonClick events. - */ - public void handleAction(Action action, Object sender, Object target) { - if (action == action_ok) - okHandler(); - if (action == action_cancel) - cancelHandler(); - } - - public void okHandler() { - // Do something: report the click - formlayout.addComponent(new Label("OK clicked. "+ - "User="+username.getValue()+ - ", password="+password.getValue())); - // - } - - public void cancelHandler() { - // Do something: report the click - formlayout.addComponent(new Label("Cancel clicked. User="+username.getValue()+", password="+password.getValue())); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/EmbeddedButton.java b/src/com/itmill/toolkit/tests/magi/EmbeddedButton.java deleted file mode 100644 index 8400ba43b6..0000000000 --- a/src/com/itmill/toolkit/tests/magi/EmbeddedButton.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.terminal.Resource; -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.CustomComponent; - -public class EmbeddedButton extends CustomComponent implements - Button.ClickListener { - Button thebutton; - - public EmbeddedButton(Resource icon) { - /* Create a Button without a caption. */ - thebutton = new Button(); - - /* Set the icon of the button from a resource. */ - thebutton.setIcon(icon); - - /* - * Set the style to link; this leaves out the button frame so you just - * have the image in the link. - */ - thebutton.setStyle("link"); - - /* Listen for ClickEvents. */ - thebutton.addListener(this); - - setCompositionRoot(thebutton); - } - - /** Handle button click events from the button. */ - public void buttonClick(Button.ClickEvent event) { - thebutton.setIcon(null); - thebutton.setCaption("You successfully clicked on the icon"); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/MagiTestApplication.java b/src/com/itmill/toolkit/tests/magi/MagiTestApplication.java deleted file mode 100644 index 015c5384c0..0000000000 --- a/src/com/itmill/toolkit/tests/magi/MagiTestApplication.java +++ /dev/null @@ -1,1179 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -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 MagiTestApplication 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" - + "Class of the Item ID: " - + event.getProperty().getValue().getClass().getName() - + "
" + "Caption: " - + select.getItemCaption(event.getProperty().getValue())); - status.setContentMode(Label.CONTENT_XHTML); - } - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TabSheetExample.java b/src/com/itmill/toolkit/tests/magi/TabSheetExample.java deleted file mode 100644 index a19ac56d15..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TabSheetExample.java +++ /dev/null @@ -1,64 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.CustomComponent; -import com.itmill.toolkit.ui.Label; -import com.itmill.toolkit.ui.TabSheet; -import com.itmill.toolkit.ui.Button.ClickEvent; -import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent; - -public class TabSheetExample extends CustomComponent implements - Button.ClickListener, TabSheet.SelectedTabChangeListener { - TabSheet tabsheet = new TabSheet(); - Button tab1 = new Button("Push this button"); - Label tab2 = new Label("Contents of Second Tab"); - Label tab3 = new Label("Contents of Third Tab"); - - TabSheetExample() { - setCompositionRoot(tabsheet); - - /* Listen for changes in tab selection. */ - tabsheet.addListener(this); - - /* First tab contains a button, for which we listen button click events. */ - tab1.addListener(this); - tabsheet.addTab(tab1, "First Tab", null); - - /* A tab that is initially invisible. */ - tab2.setVisible(false); - tabsheet.addTab(tab2, "Second Tab", null); - - /* A tab that is initially disabled. */ - tab3.setEnabled(false); - tabsheet.addTab(tab3, "Third tab", null); - } - - public void buttonClick(ClickEvent event) { - /* Enable the invisible and disabled tabs. */ - tab2.setVisible(true); - tab3.setEnabled(true); - - /* Change selection automatically to second tab. */ - tabsheet.setSelectedTab(tab2); - } - - public void selectedTabChange(SelectedTabChangeEvent event) { - /* - * Cast to a TabSheet. This isn't really necessary in this example, as - * we have only one TabSheet component, but would be useful if there - * were multiple TabSheets. - */ - final TabSheet source = (TabSheet) event.getSource(); - if (source == tabsheet) { - /* If the first tab was selected. */ - if (source.getSelectedTab() == tab1) { - tab2.setVisible(false); - tab3.setEnabled(false); - } - } - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TableExample.java b/src/com/itmill/toolkit/tests/magi/TableExample.java deleted file mode 100644 index f600f6b788..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TableExample.java +++ /dev/null @@ -1,72 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.data.Property; -import com.itmill.toolkit.data.Property.ValueChangeEvent; -import com.itmill.toolkit.ui.CustomComponent; -import com.itmill.toolkit.ui.Label; -import com.itmill.toolkit.ui.OrderedLayout; -import com.itmill.toolkit.ui.Table; - -public class TableExample extends CustomComponent { - /* Create the table with a caption. */ - Table table = new Table("This is my Table"); - - /* A layout needed for the example. */ - OrderedLayout layout = new OrderedLayout(OrderedLayout.ORIENTATION_VERTICAL); - - /* Feedback for selecting items from the table. */ - Label current = new Label("Selected: -"); - - TableExample() { - setCompositionRoot(layout); - layout.addComponent(table); - - /* Define the names, data types, and default values of columns. */ - table.addContainerProperty("First Name", String.class, - "(no first name)"); - table.addContainerProperty("Last Name", String.class, "(no last name)"); - table.addContainerProperty("Year", Integer.class, null); - - /* We use these entries to generate random items in a table. */ - final String[] firstnames = new String[] { "Donald", "Patty", "Sally", - "Douglas" }; - final String[] lastnames = new String[] { "Smith", "Jones", " Adams", - "Knuth" }; - - /* Add some items in the table and assign them an Item ID (IID). */ - for (int i = 0; i < 500; i++) { - /* Add a randomly generated item in the Table. */ - table.addItem(new Object[] { - firstnames[(int) (Math.random() * (firstnames.length - 0.01))], - lastnames[(int) (Math.random() * (lastnames.length - 0.01))], - new Integer((int) (1900 + Math.random() * 100)) }, - new Integer(i)); - } - - /* Set the number of items visible in the table. */ - table.setPageLength(10); - - /* Enable some UI features for the table. */ - table.setColumnReorderingAllowed(true); - table.setColumnCollapsingAllowed(true); - - /* Allow selecting items from the table. */ - table.setSelectable(true); - - /* When an item is selected, the selection is sent immediately to server. */ - table.setImmediate(true); - - /* Handle selection change. */ - table.addListener(new Property.ValueChangeListener() { - public void valueChange(ValueChangeEvent event) { - current.setValue("Selected: " + table.getValue().toString()); - } - }); - - layout.addComponent(current); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TheButton.java b/src/com/itmill/toolkit/tests/magi/TheButton.java deleted file mode 100644 index 877b35cf03..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TheButton.java +++ /dev/null @@ -1,27 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.CustomComponent; - -public class TheButton extends CustomComponent implements Button.ClickListener { - Button thebutton; - - public TheButton() { - /* Create a Button with the given caption. */ - thebutton = new Button("Do not push this button"); - - /* Listen for ClickEvents. */ - thebutton.addListener(this); - - setCompositionRoot(thebutton); - } - - /** Handle button click events from the button. */ - public void buttonClick(Button.ClickEvent event) { - thebutton.setCaption("Do not push this button again"); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TheButtons.java b/src/com/itmill/toolkit/tests/magi/TheButtons.java deleted file mode 100644 index 627e472c63..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TheButtons.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.AbstractComponentContainer; -import com.itmill.toolkit.ui.Button; - -public class TheButtons implements Button.ClickListener { - Button thebutton; - Button secondbutton; - - /** Creates two buttons into given container. */ - public TheButtons(AbstractComponentContainer container) { - thebutton = new Button("Do not push this button"); - thebutton.addListener(this); - container.addComponent(thebutton); - - secondbutton = new Button("I am a button too"); - secondbutton.addListener(this); - container.addComponent(secondbutton); - } - - /** Handle button click events from the two buttons. */ - public void buttonClick(Button.ClickEvent event) { - if (event.getButton() == thebutton) { - thebutton.setCaption("Do not push this button again"); - } else if (event.getButton() == secondbutton) { - secondbutton.setCaption("I am not a number"); - } - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TheButtons2.java b/src/com/itmill/toolkit/tests/magi/TheButtons2.java deleted file mode 100644 index 316907f819..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TheButtons2.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.AbstractComponentContainer; -import com.itmill.toolkit.ui.Button; - -public class TheButtons2 { - Button thebutton; - Button secondbutton; - - /** Creates two buttons in given container. */ - public TheButtons2(AbstractComponentContainer container) { - thebutton = new Button("Do not push this button"); - thebutton.addListener(Button.ClickEvent.class, this, "theButtonClick"); - container.addComponent(thebutton); - - secondbutton = new Button("I am a button too"); - secondbutton.addListener(Button.ClickEvent.class, this, - "secondButtonClick"); - container.addComponent(secondbutton); - } - - public void theButtonClick(Button.ClickEvent event) { - thebutton.setCaption("Do not push this button again"); - } - - public void secondButtonClick(Button.ClickEvent event) { - secondbutton.setCaption("I am not a number!"); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/TheButtons3.java b/src/com/itmill/toolkit/tests/magi/TheButtons3.java deleted file mode 100644 index a3256711e8..0000000000 --- a/src/com/itmill/toolkit/tests/magi/TheButtons3.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.AbstractComponentContainer; -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.Button.ClickEvent; - -/** This example demonstrates the use of inline classes for event listeners. */ -public class TheButtons3 { - Button thebutton; /* This component is stored as a member variable. */ - - /** Creates two buttons in given container. */ - public TheButtons3(AbstractComponentContainer container) { - thebutton = new Button("Do not push this button"); - thebutton.addListener(new Button.ClickListener() { - /* - * Define the method in the local class to handle the click. - */ - public void buttonClick(ClickEvent event) { - thebutton.setCaption("Do not push this button again"); - } - }); - container.addComponent(thebutton); - - /* - * Have the second button as a local variable in the constructor. Only - * "final" local variables can be accessed from an anonymous class. - */ - final Button secondbutton = new Button("I am a button too"); - secondbutton.addListener(new Button.ClickListener() { - /* - * Define the method in the local class to handle the click. - */ - public void buttonClick(ClickEvent event) { - secondbutton.setCaption("I am not a number!"); - } - }); - container.addComponent(secondbutton); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/WindowOpener.java b/src/com/itmill/toolkit/tests/magi/WindowOpener.java deleted file mode 100644 index ca33aa49ab..0000000000 --- a/src/com/itmill/toolkit/tests/magi/WindowOpener.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.ui.Button; -import com.itmill.toolkit.ui.CustomComponent; -import com.itmill.toolkit.ui.Label; -import com.itmill.toolkit.ui.OrderedLayout; -import com.itmill.toolkit.ui.Window; -import com.itmill.toolkit.ui.Window.CloseEvent; - -/** Component contains a button that allows opening a window. */ -public class WindowOpener extends CustomComponent implements - Window.CloseListener { - Window mainwindow; // Reference to main window - Window mywindow; // The window to be opened - Button openbutton; // Button for opening the window - Button closebutton; // A button in the window - Label explanation; // A descriptive text - - public WindowOpener(String label, Window main) { - mainwindow = main; - - /* The component consists of a button that opens the window. */ - final OrderedLayout layout = new OrderedLayout(); - layout.addComponent(openbutton = new Button("Open Window", this, - "openButtonClick")); - layout.addComponent(explanation = new Label("Explanation")); - setCompositionRoot(layout); - } - - /** Handle the clicks for the two buttons. */ - public void openButtonClick(Button.ClickEvent event) { - /* Create a new window. */ - mywindow = new Window("My Dialog"); - - /* Listen for close events for the window. */ - mywindow.addListener(this); - - /* Add components in the window. */ - mywindow.addComponent(new Label("A text label in the window.")); - closebutton = new Button("Close", this, "closeButtonClick"); - mywindow.addComponent(closebutton); - - /* Add the window inside the main window. */ - mainwindow.addWindow(mywindow); - - /* Allow opening only one window at a time. */ - openbutton.setEnabled(false); - - explanation.setValue("Window opened"); - } - - /** Handle Close button click and close the window. */ - public void closeButtonClick(Button.ClickEvent event) { - /* Windows are managed by the application object. */ - mainwindow.removeWindow(mywindow); - - /* Return to initial state. */ - openbutton.setEnabled(true); - - explanation.setValue("Closed with button"); - } - - /** In case the window is closed otherwise. */ - public void windowClose(CloseEvent e) { - /* Return to initial state. */ - openbutton.setEnabled(true); - - explanation.setValue("Closed with window controls"); - } -} diff --git a/src/com/itmill/toolkit/tests/magi/WindowTestApplication.java b/src/com/itmill/toolkit/tests/magi/WindowTestApplication.java deleted file mode 100644 index 9d866a48f6..0000000000 --- a/src/com/itmill/toolkit/tests/magi/WindowTestApplication.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.itmill.toolkit.tests.magi; - -import com.itmill.toolkit.Application; -import com.itmill.toolkit.ui.*; -import com.itmill.toolkit.ui.Button.ClickEvent; -import com.itmill.toolkit.terminal.*; - -public class WindowTestApplication extends Application { - Window anotherpage = null; - - public void init() { - final Window main = new Window ("Window Test Application"); - setMainWindow(main); - setTheme("tests-magi"); - - /* Create a new window. */ - final Window mywindow = new Window("Second Window"); - - /* Manually set the name of the window. */ - mywindow.setName("mywindow"); - - /* Add some content to the window. */ - mywindow.addComponent(new Label("This is a second window.")); - - /* Add the window to the application. */ - addWindow(mywindow); - - /* Add a button to open a new window. */ - main.addComponent(new Button("Click to open new window", - new Button.ClickListener() { - public void buttonClick(ClickEvent event) { - // Open the window. - main.open(new ExternalResource(mywindow.getURL()), "_new"); - } - })); - - /* Add a link to the second window. */ - Link link = new Link("Click to open second window", - new ExternalResource(mywindow.getURL())); - link.setTargetName("_new"); - //link.setTargetHeight(300); - //link.setTargetWidth(300); - //link.setTargetBorder(Link.TARGET_BORDER_DEFAULT); - main.addComponent(link); - - /* Add the link manually inside a Label. */ - main.addComponent(new Label("Second window: click to open", - Label.CONTENT_XHTML)); - main.addComponent(new Label("The second window can be accessed through URL: " - + mywindow.getURL())); - - /* Add link to the yet another window that does not yet exist. */ - main.addComponent(new Label("Yet another window: click to open", - Label.CONTENT_XHTML)); - main.addComponent(new Label("The yet another window can be accessed through URL: " - + getURL()+"anotherpage/")); - } - - public Window getWindow(String name) { - if (name.equals("anotherpage")) { - if (anotherpage == null) { - anotherpage = new Window("Yet Another Page"); - anotherpage.addComponent(new Label("This is a yet another window.")); - } - return anotherpage; - } - return super.getWindow(name); - } - -} diff --git a/src/com/itmill/toolkit/tests/magi/smiley.jpg b/src/com/itmill/toolkit/tests/magi/smiley.jpg deleted file mode 100644 index dc1a399c76..0000000000 Binary files a/src/com/itmill/toolkit/tests/magi/smiley.jpg and /dev/null differ