From adc8c0ad3573272c236040c3a76005b9e73a5737 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Mon, 11 May 2009 09:19:03 +0000 Subject: #2904: initial bulk rename "com.itmill.toolkit" -> "com.vaadin" - com.itmill.toolkit.external not yet fully renamed svn changeset:7715/svn branch:6.0 --- .../featurebrowser/JavaScriptAPIExample.java | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java (limited to 'src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java') diff --git a/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java b/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java new file mode 100644 index 0000000000..d902eb8323 --- /dev/null +++ b/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java @@ -0,0 +1,97 @@ +/* +@ITMillApache2LicenseForJavaFiles@ + */ + +package com.vaadin.automatedtests.featurebrowser; + +import java.util.Date; + +import com.vaadin.terminal.PaintException; +import com.vaadin.terminal.PaintTarget; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.CustomComponent; +import com.vaadin.ui.Label; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Button.ClickEvent; + +/** + * An example using a RichTextArea to edit a Label in XHTML-mode. + * + */ +public class JavaScriptAPIExample extends CustomComponent { + + public static final String txt = "

For advanced client side programmers Toolkit offers a simple method which can be used to force sync client with server. This may be needed for example if another part of a mashup changes things on server.

(more examples will be added here as the APIs are made public)

javascript:itmill.forceSync();"; + + private final VerticalLayout main; + private final Label l; + private final TextField editor = new TextField(); + + public JavaScriptAPIExample() { + // main layout + main = new VerticalLayout(); + main.setMargin(true); + setCompositionRoot(main); + editor.setRows(7); + editor.setColumns(50); + // Add the label + l = new Label(txt); + l.setContentMode(Label.CONTENT_XHTML); + main.addComponent(l); + // Edit button with inline click-listener + Button b = new Button("Edit", new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + // swap Label <-> RichTextArea + if (main.getComponentIterator().next() == l) { + editor.setValue(l.getValue()); + main.replaceComponent(l, editor); + event.getButton().setCaption("Save"); + } else { + l.setValue(editor.getValue()); + main.replaceComponent(editor, l); + event.getButton().setCaption("Edit"); + } + } + }); + main.addComponent(b); + main.setComponentAlignment(b, Alignment.MIDDLE_RIGHT); + + // + Label l = new Label( + "This label will update it's server-side value AFTER it's rendered to the client-side. " + + "The client will be synchronized on reload, when you click a button, " + + "or when itmill.forceSync() is called.") { + + @Override + public void paintContent(PaintTarget target) throws PaintException { + + super.paintContent(target); + Delay d = new Delay(this); + d.start(); + } + + }; + main.addComponent(l); + + } + + private class Delay extends Thread { + Label label; + + public Delay(Label l) { + label = l; + } + + @Override + public void run() { + try { + Thread.sleep(500); + label.setValue(new Date().toString()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } +} -- cgit v1.2.3