/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.foundation.ui.test; import java.util.ArrayList; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.PlatformUI; import org.jboss.tools.foundation.ui.widget.IWidgetVisitor; import org.jboss.tools.foundation.ui.widget.WidgetVisitorUtility; import org.junit.Assert; import org.junit.Test; public class WidgetUtilityTest{ @Test public void testEnableAllChildren(){ Shell shell = new Shell(); Composite c = new Composite(shell, SWT.NONE); Text t1 = new Text(c, SWT.NONE); Text t2 = new Text(c, SWT.NONE); Text t3 = new Text(c, SWT.NONE); Assert.assertTrue(t1.getEnabled()); Assert.assertTrue(t2.getEnabled()); Assert.assertTrue(t3.getEnabled()); Assert.assertTrue(c.getEnabled()); new WidgetVisitorUtility().setEnablementRecursive(c, false); Assert.assertFalse(t1.getEnabled()); Assert.assertFalse(t2.getEnabled()); Assert.assertFalse(t3.getEnabled()); Assert.assertFalse(c.getEnabled()); new WidgetVisitorUtility().setEnablementRecursive(c, true); Assert.assertTrue(t1.getEnabled()); Assert.assertTrue(t2.getEnabled()); Assert.assertTrue(t3.getEnabled()); Assert.assertTrue(c.getEnabled()); } @Test public void testDoForAllChildren(){ Shell shell = new Shell(); Composite c = new Composite(shell, SWT.NONE); Text t1 = new Text(c, SWT.NONE); Text t2 = new Text(c, SWT.NONE); Text t3 = new Text(c, SWT.NONE); Assert.assertTrue(t1.getEditable()); Assert.assertTrue(t2.getEditable()); Assert.assertTrue(t3.getEditable()); new WidgetVisitorUtility(false).accept(c, new IWidgetVisitor() { public boolean visit(Control control) { if( control instanceof Text) { ((Text)control).setEditable(false); } return true; } }); Assert.assertFalse(t1.getEditable()); Assert.assertFalse(t2.getEditable()); Assert.assertFalse(t3.getEditable()); new WidgetVisitorUtility(false).accept(c, new IWidgetVisitor() { public boolean visit(Control control) { if( control instanceof Text) { ((Text)control).setEditable(true); } return true; } }); Assert.assertTrue(t1.getEditable()); Assert.assertTrue(t2.getEditable()); Assert.assertTrue(t3.getEditable()); } @Test public void testAccepts(){ Shell shell = new Shell(); Composite c = new Composite(shell, SWT.NONE); Text t1 = new Text(c, SWT.NONE); Text t2 = new Text(c, SWT.NONE); Text t3 = new Text(c, SWT.NONE); Assert.assertTrue(t1.getEnabled()); Assert.assertTrue(t2.getEnabled()); Assert.assertTrue(t3.getEnabled()); Assert.assertTrue(c.getEnabled()); new WidgetVisitorUtility().accept(c, new IWidgetVisitor() { public boolean visit(Control control) { control.setEnabled(false); return true; } }); Assert.assertFalse(t1.getEnabled()); Assert.assertFalse(t2.getEnabled()); Assert.assertFalse(t3.getEnabled()); Assert.assertFalse(c.getEnabled()); new WidgetVisitorUtility().accept(c, new IWidgetVisitor() { public boolean visit(Control control) { control.setEnabled(true); return true; } }); Assert.assertTrue(t1.getEnabled()); Assert.assertTrue(t2.getEnabled()); Assert.assertTrue(t3.getEnabled()); Assert.assertTrue(c.getEnabled()); } @Test public void testAcceptVisitsExpectedControls(){ Shell shell = new Shell(); Composite c = new Composite(shell, SWT.NONE); Composite child = new Composite(c, SWT.NONE); Composite child2 = new Composite(c, SWT.NONE); Text t1 = new Text(child2, SWT.NONE); Text t2 = new Text(child2, SWT.NONE); Text t3 = new Text(child2, SWT.NONE); final ArrayList<Control> list = new ArrayList<Control>(); IWidgetVisitor v = new IWidgetVisitor() { public boolean visit(Control control) { list.add(control); return true; } }; new WidgetVisitorUtility(false).accept(c,v); Assert.assertTrue(list.contains(t1)); Assert.assertTrue(list.contains(t2)); Assert.assertTrue(list.contains(t3)); Assert.assertTrue(list.contains(child)); Assert.assertTrue(list.contains(child2)); Assert.assertFalse(list.contains(c)); new WidgetVisitorUtility(true).accept(c,v); Assert.assertTrue(list.contains(t1)); Assert.assertTrue(list.contains(t2)); Assert.assertTrue(list.contains(t3)); Assert.assertTrue(list.contains(child)); Assert.assertTrue(list.contains(child2)); Assert.assertTrue(list.contains(c)); } }