From 6a3c715dae922edd723c9423b4308d5d7948b74e Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 27 Oct 2009 07:57:12 +0000 Subject: Split demo and tests files to own source folders, for #3298 svn changeset:9390/svn branch:6.2 --- .../featurebrowser/JavaScriptAPIExample.java | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 tests/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java (limited to 'tests/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java') diff --git a/tests/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java b/tests/src/com/vaadin/automatedtests/featurebrowser/JavaScriptAPIExample.java new file mode 100644 index 0000000000..21e49ce320 --- /dev/null +++ b/tests/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 Vaadin 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:vaadin.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 vaadin.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