/* * Copyright (c) 2013, grossmann * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the jo-widgets.org nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL jo-widgets.org BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.jowidgets.api.test; import org.jowidgets.api.controller.IShowingStateListener; import org.jowidgets.api.toolkit.Toolkit; import org.jowidgets.api.widgets.IButton; import org.jowidgets.api.widgets.IComposite; import org.jowidgets.api.widgets.IFrame; import org.jowidgets.api.widgets.IInputField; import org.jowidgets.api.widgets.ITabFolder; import org.jowidgets.api.widgets.ITabItem; import org.jowidgets.api.widgets.ITextControl; import org.jowidgets.common.application.IApplication; import org.jowidgets.common.application.IApplicationLifecycle; import org.jowidgets.tools.widgets.blueprint.BPF; import org.junit.Assert; import org.junit.Test; public class VisibilityTest { @Test public void simpleFrameTest() { runTest(new IFrameTestRunner() { @Override public void run(final IFrame frame) { Assert.assertFalse(frame.isShowing()); final ShowingStateListener listener = new ShowingStateListener(); Assert.assertNull(listener.getLastState()); frame.addShowingStateListener(listener); Assert.assertNull(listener.getLastState()); frame.setVisible(true); Assert.assertTrue(listener.getLastState()); Assert.assertTrue(frame.isShowing()); frame.setVisible(false); Assert.assertFalse(listener.getLastState()); Assert.assertFalse(frame.isShowing()); } }); } @Test public void simpleContainerTest() { runTest(new IFrameTestRunner() { @Override public void run(final IFrame frame) { final ITextControl textField = frame.add(BPF.textField()); final IInputField<Integer> inputField = frame.add(BPF.inputFieldIntegerNumber()); final IButton button = frame.add(BPF.button("test")); final ShowingStateListener textFieldListener = new ShowingStateListener(); Assert.assertNull(textFieldListener.getLastState()); textField.addShowingStateListener(textFieldListener); final ShowingStateListener inputFieldListener = new ShowingStateListener(); Assert.assertNull(inputFieldListener.getLastState()); inputField.addShowingStateListener(inputFieldListener); final ShowingStateListener buttonListener = new ShowingStateListener(); Assert.assertNull(buttonListener.getLastState()); button.addShowingStateListener(buttonListener); Assert.assertFalse(textField.isShowing()); Assert.assertNull(textFieldListener.getLastState()); Assert.assertFalse(inputField.isShowing()); Assert.assertNull(inputFieldListener.getLastState()); Assert.assertFalse(button.isShowing()); Assert.assertNull(buttonListener.getLastState()); frame.setVisible(true); Assert.assertTrue(textField.isShowing()); Assert.assertTrue(textFieldListener.getLastState()); Assert.assertTrue(inputField.isShowing()); Assert.assertTrue(inputFieldListener.getLastState()); Assert.assertTrue(button.isShowing()); Assert.assertTrue(buttonListener.getLastState()); frame.setVisible(false); Assert.assertFalse(textField.isShowing()); Assert.assertFalse(textFieldListener.getLastState()); Assert.assertFalse(inputField.isShowing()); Assert.assertFalse(inputFieldListener.getLastState()); Assert.assertFalse(button.isShowing()); Assert.assertFalse(buttonListener.getLastState()); } }); } @Test public void composedContainerTest() { runTest(new IFrameTestRunner() { @Override public void run(final IFrame frame) { final IComposite composite1 = frame.add(BPF.composite()); final IComposite composite2 = frame.add(BPF.composite()); final ITextControl textField1 = composite1.add(BPF.textField()); final IInputField<Integer> inputField1 = composite1.add(BPF.inputFieldIntegerNumber()); final IButton button1 = composite1.add(BPF.button("test")); final ShowingStateListener textFieldListener1 = new ShowingStateListener(); Assert.assertNull(textFieldListener1.getLastState()); textField1.addShowingStateListener(textFieldListener1); final ShowingStateListener inputFieldListener1 = new ShowingStateListener(); Assert.assertNull(inputFieldListener1.getLastState()); inputField1.addShowingStateListener(inputFieldListener1); final ShowingStateListener buttonListener1 = new ShowingStateListener(); Assert.assertNull(buttonListener1.getLastState()); button1.addShowingStateListener(buttonListener1); final ITextControl textField2 = composite2.add(BPF.textField()); final IInputField<Integer> inputField2 = composite2.add(BPF.inputFieldIntegerNumber()); final IButton button2 = composite2.add(BPF.button("test")); final ShowingStateListener textFieldListener2 = new ShowingStateListener(); Assert.assertNull(textFieldListener2.getLastState()); textField2.addShowingStateListener(textFieldListener2); final ShowingStateListener inputFieldListener2 = new ShowingStateListener(); Assert.assertNull(inputFieldListener2.getLastState()); inputField2.addShowingStateListener(inputFieldListener2); final ShowingStateListener buttonListener2 = new ShowingStateListener(); Assert.assertNull(buttonListener2.getLastState()); button2.addShowingStateListener(buttonListener2); Assert.assertFalse(textField1.isShowing()); Assert.assertFalse(inputField1.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(textField2.isShowing()); Assert.assertFalse(inputField2.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertNull(textFieldListener1.getLastState()); Assert.assertNull(inputFieldListener1.getLastState()); Assert.assertNull(buttonListener1.getLastState()); Assert.assertNull(textFieldListener2.getLastState()); Assert.assertNull(inputFieldListener2.getLastState()); Assert.assertNull(buttonListener2.getLastState()); frame.setVisible(true); Assert.assertTrue(textField1.isShowing()); Assert.assertTrue(inputField1.isShowing()); Assert.assertTrue(button1.isShowing()); Assert.assertTrue(textField2.isShowing()); Assert.assertTrue(inputField2.isShowing()); Assert.assertTrue(button2.isShowing()); Assert.assertTrue(textFieldListener1.getLastState()); Assert.assertTrue(inputFieldListener1.getLastState()); Assert.assertTrue(buttonListener1.getLastState()); Assert.assertTrue(textFieldListener2.getLastState()); Assert.assertTrue(inputFieldListener2.getLastState()); Assert.assertTrue(buttonListener2.getLastState()); composite1.setVisible(false); Assert.assertFalse(textField1.isShowing()); Assert.assertFalse(inputField1.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertTrue(textField2.isShowing()); Assert.assertTrue(inputField2.isShowing()); Assert.assertTrue(button2.isShowing()); Assert.assertFalse(textFieldListener1.getLastState()); Assert.assertFalse(inputFieldListener1.getLastState()); Assert.assertFalse(buttonListener1.getLastState()); Assert.assertTrue(textFieldListener2.getLastState()); Assert.assertTrue(inputFieldListener2.getLastState()); Assert.assertTrue(buttonListener2.getLastState()); composite2.setVisible(false); Assert.assertFalse(textField1.isShowing()); Assert.assertFalse(inputField1.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(textField2.isShowing()); Assert.assertFalse(inputField2.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertFalse(textFieldListener1.getLastState()); Assert.assertFalse(inputFieldListener1.getLastState()); Assert.assertFalse(buttonListener1.getLastState()); Assert.assertFalse(textFieldListener2.getLastState()); Assert.assertFalse(inputFieldListener2.getLastState()); Assert.assertFalse(buttonListener2.getLastState()); composite1.setVisible(true); composite2.setVisible(true); Assert.assertTrue(textField1.isShowing()); Assert.assertTrue(inputField1.isShowing()); Assert.assertTrue(button1.isShowing()); Assert.assertTrue(textField2.isShowing()); Assert.assertTrue(inputField2.isShowing()); Assert.assertTrue(button2.isShowing()); Assert.assertTrue(textFieldListener1.getLastState()); Assert.assertTrue(inputFieldListener1.getLastState()); Assert.assertTrue(buttonListener1.getLastState()); Assert.assertTrue(textFieldListener2.getLastState()); Assert.assertTrue(inputFieldListener2.getLastState()); Assert.assertTrue(buttonListener2.getLastState()); frame.setVisible(false); Assert.assertFalse(textField1.isShowing()); Assert.assertFalse(inputField1.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(textField2.isShowing()); Assert.assertFalse(inputField2.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertFalse(textFieldListener1.getLastState()); Assert.assertFalse(inputFieldListener1.getLastState()); Assert.assertFalse(buttonListener1.getLastState()); Assert.assertFalse(textFieldListener2.getLastState()); Assert.assertFalse(inputFieldListener2.getLastState()); Assert.assertFalse(buttonListener2.getLastState()); } }); } @Test public void tabFolderTest() { runTest(new IFrameTestRunner() { @Override public void run(final IFrame frame) { final ITabFolder tabFolder = frame.add(BPF.tabFolder()); final ITabItem item1 = tabFolder.addItem(BPF.tabItem()); final ITabItem item2 = tabFolder.addItem(BPF.tabItem()); final ITabItem item3 = tabFolder.addItem(BPF.tabItem()); final IButton button1 = item1.add(BPF.button()); final IButton button2 = item2.add(BPF.button()); final IButton button3 = item3.add(BPF.button()); final ShowingStateListener item1Listener = new ShowingStateListener(); Assert.assertNull(item1Listener.getLastState()); item1.addShowingStateListener(item1Listener); final ShowingStateListener item2Listener = new ShowingStateListener(); Assert.assertNull(item2Listener.getLastState()); item2.addShowingStateListener(item2Listener); final ShowingStateListener item3Listener = new ShowingStateListener(); Assert.assertNull(item3Listener.getLastState()); item3.addShowingStateListener(item3Listener); final ShowingStateListener button1Listener = new ShowingStateListener(); Assert.assertNull(button1Listener.getLastState()); button1.addShowingStateListener(button1Listener); final ShowingStateListener button2Listener = new ShowingStateListener(); Assert.assertNull(button2Listener.getLastState()); button2.addShowingStateListener(button2Listener); final ShowingStateListener button3Listener = new ShowingStateListener(); Assert.assertNull(button3Listener.getLastState()); button3.addShowingStateListener(button3Listener); Assert.assertFalse(item1.isShowing()); Assert.assertFalse(item2.isShowing()); Assert.assertFalse(item3.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertFalse(button3.isShowing()); Assert.assertNull(item1Listener.getLastState()); Assert.assertNull(item2Listener.getLastState()); Assert.assertNull(item3Listener.getLastState()); Assert.assertNull(button1Listener.getLastState()); Assert.assertNull(button2Listener.getLastState()); Assert.assertNull(button3Listener.getLastState()); frame.setVisible(true); Assert.assertTrue(item1.isShowing()); Assert.assertFalse(item2.isShowing()); Assert.assertFalse(item3.isShowing()); Assert.assertTrue(button1.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertFalse(button3.isShowing()); Assert.assertTrue(item1Listener.getLastState()); Assert.assertNull(item2Listener.getLastState()); Assert.assertNull(item3Listener.getLastState()); Assert.assertTrue(button1Listener.getLastState()); Assert.assertNull(button2Listener.getLastState()); Assert.assertNull(button3Listener.getLastState()); item2.select(); Assert.assertFalse(item1.isSelected()); Assert.assertTrue(item2.isSelected()); Assert.assertFalse(item3.isSelected()); Assert.assertFalse(item1.isShowing()); Assert.assertTrue(item2.isShowing()); Assert.assertFalse(item3.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertTrue(button2.isShowing()); Assert.assertFalse(button3.isShowing()); Assert.assertFalse(item1Listener.getLastState()); Assert.assertTrue(item2Listener.getLastState()); Assert.assertNull(item3Listener.getLastState()); Assert.assertFalse(button1Listener.getLastState()); Assert.assertTrue(button2Listener.getLastState()); Assert.assertNull(button3Listener.getLastState()); item3.select(); Assert.assertFalse(item1.isSelected()); Assert.assertFalse(item2.isSelected()); Assert.assertTrue(item3.isSelected()); Assert.assertFalse(item1.isShowing()); Assert.assertFalse(item2.isShowing()); Assert.assertTrue(item3.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertTrue(button3.isShowing()); Assert.assertFalse(item1Listener.getLastState()); Assert.assertFalse(item2Listener.getLastState()); Assert.assertTrue(item3Listener.getLastState()); Assert.assertFalse(button1Listener.getLastState()); Assert.assertFalse(button2Listener.getLastState()); Assert.assertTrue(button3Listener.getLastState()); frame.setVisible(false); Assert.assertFalse(item1.isShowing()); Assert.assertFalse(item2.isShowing()); Assert.assertFalse(item3.isShowing()); Assert.assertFalse(button1.isShowing()); Assert.assertFalse(button2.isShowing()); Assert.assertFalse(button3.isShowing()); Assert.assertFalse(item1Listener.getLastState()); Assert.assertFalse(item2Listener.getLastState()); Assert.assertFalse(item3Listener.getLastState()); Assert.assertFalse(button1Listener.getLastState()); Assert.assertFalse(button2Listener.getLastState()); Assert.assertFalse(button3Listener.getLastState()); } }); } private void runTest(final IFrameTestRunner runner) { Toolkit.getApplicationRunner().run(new IApplication() { @Override public void start(final IApplicationLifecycle lifecycle) { final IFrame frame = Toolkit.createRootFrame(BPF.frame().setAutoDispose(false)); runner.run(frame); frame.dispose(); lifecycle.finish(); } }); } interface IFrameTestRunner { void run(IFrame frame); } private static final class ShowingStateListener implements IShowingStateListener { private Boolean lastState; @Override public void showingStateChanged(final boolean isShowing) { lastState = Boolean.valueOf(isShowing); } private Boolean getLastState() { return lastState; } } }