/* * This file is part of the Echo Web Application Framework (hereinafter "Echo"). * Copyright (C) 2002-2009 NextApp, Inc. * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. */ package nextapp.echo2.testapp.interactive.testscreen; import nextapp.echo2.app.Button; import nextapp.echo2.app.Insets; import nextapp.echo2.app.Column; import nextapp.echo2.app.event.ActionEvent; import nextapp.echo2.app.event.ActionListener; import nextapp.echo2.app.layout.SplitPaneLayoutData; import nextapp.echo2.testapp.interactive.CoolDelayMessage; import nextapp.echo2.webcontainer.ContainerContext; import nextapp.echo2.webcontainer.DefaultServerDelayMessage; /** * A test for handling of long-running server-interactions. */ public class DelayTest extends Column { private int clickCount = 0; public DelayTest() { super(); SplitPaneLayoutData splitPaneLayoutData = new SplitPaneLayoutData(); splitPaneLayoutData.setInsets(new Insets(10)); setLayoutData(splitPaneLayoutData); Button delayButton = new Button("Test 3 second delay"); delayButton.setStyleName("Default"); delayButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { Thread.sleep(3000); } catch (InterruptedException ex) { } } }); add(delayButton); final Button blockedButton = new Button("This button has been clicked 0 times"); blockedButton.setStyleName("Default"); blockedButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { blockedButton.setText("This button has been clicked " + ++clickCount + " times"); } }); add(blockedButton); Button setNullButton = new Button("Set ServerDelayMessage to None"); setNullButton.setStyleName("Default"); setNullButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ContainerContext containerContext = (ContainerContext) getApplicationInstance().getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME); containerContext.setServerDelayMessage(null); } }); add(setNullButton); Button setDefaultButton = new Button("Set ServerDelayMessage to Default"); setDefaultButton.setStyleName("Default"); setDefaultButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ContainerContext containerContext = (ContainerContext) getApplicationInstance().getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME); containerContext.setServerDelayMessage(DefaultServerDelayMessage.INSTANCE); } }); add(setDefaultButton); Button setCustomDefaultButton = new Button("Set ServerDelayMessage to Custom DefaultServerDelayMessage"); setCustomDefaultButton.setStyleName("Default"); setCustomDefaultButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ContainerContext containerContext = (ContainerContext) getApplicationInstance().getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME); containerContext.setServerDelayMessage(new DefaultServerDelayMessage("Well, this seems to be taking a while. " + "Now might be a good time to grab a snack or a frosty beverage from the kitchen.")); } }); add(setCustomDefaultButton); Button coolButton = new Button("Set ServerDelayMessage to CoolDelayMessage"); coolButton.setStyleName("Default"); coolButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ContainerContext containerContext = (ContainerContext) getApplicationInstance().getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME); containerContext.setServerDelayMessage(new CoolDelayMessage(containerContext, "PLEASE WAIT")); } }); add(coolButton); } }