/******************************************************************************* * Copyright (c) 2002, 2008 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are 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: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package org.eclipse.swt.internal.widgets.labelkit; import java.io.IOException; import junit.framework.TestCase; import org.eclipse.rwt.Fixture; import org.eclipse.rwt.graphics.Graphics; import org.eclipse.rwt.lifecycle.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.events.ActivateAdapter; import org.eclipse.swt.internal.events.ActivateEvent; import org.eclipse.swt.internal.widgets.Props; import org.eclipse.swt.widgets.*; public class LabelLCA_Test extends TestCase { public void testStandardPreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); Label label = new Label( shell, SWT.NONE ); Fixture.markInitialized( display ); testPreserveValues( display, label ); //Text Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( label ); assertEquals( "", adapter.getPreserved( Props.TEXT ) ); Fixture.clearPreserved(); label.setText( "xyz" ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( label.getText(), adapter.getPreserved( Props.TEXT ) ); Fixture.clearPreserved(); //Image Image image = Graphics.getImage( Fixture.IMAGE1 ); label.setImage( image ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertSame( image, adapter.getPreserved( Props.IMAGE ) ); Fixture.clearPreserved(); //aligment Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); Integer alignment = ( Integer )adapter.getPreserved( "alignment" ); assertEquals( new Integer( SWT.LEFT ), alignment ); Fixture.clearPreserved(); label.setAlignment( SWT.RIGHT ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); alignment = ( Integer )adapter.getPreserved( "alignment" ); assertEquals( new Integer( SWT.RIGHT ), alignment ); Fixture.clearPreserved(); label.setAlignment( SWT.CENTER ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); alignment = ( Integer )adapter.getPreserved( "alignment" ); assertEquals( new Integer( SWT.CENTER ), alignment ); Fixture.clearPreserved(); label.setAlignment( SWT.LEFT ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); alignment = ( Integer )adapter.getPreserved( "alignment" ); assertEquals( new Integer( SWT.LEFT ), alignment ); Fixture.clearPreserved(); display.dispose(); } private void testPreserveValues( final Display display, final Label label ) { // bound Rectangle rectangle = new Rectangle( 10, 10, 10, 10 ); label.setBounds( rectangle ); Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( label ); assertEquals( rectangle, adapter.getPreserved( Props.BOUNDS ) ); Fixture.clearPreserved(); // z-index Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertTrue( adapter.getPreserved( Props.Z_INDEX ) != null ); Fixture.clearPreserved(); //menu Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( null, adapter.getPreserved( Props.MENU ) ); Fixture.clearPreserved(); Menu menu = new Menu( label ); MenuItem item = new MenuItem( menu, SWT.NONE ); item.setText( "1 Item" ); label.setMenu( menu ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( menu, adapter.getPreserved( Props.MENU ) ); //visible Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( Boolean.TRUE, adapter.getPreserved( Props.VISIBLE ) ); Fixture.clearPreserved(); label.setVisible( false ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( Boolean.FALSE, adapter.getPreserved( Props.VISIBLE ) ); Fixture.clearPreserved(); //enabled Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( Boolean.TRUE, adapter.getPreserved( Props.ENABLED ) ); Fixture.clearPreserved(); label.setEnabled( false ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( Boolean.FALSE, adapter.getPreserved( Props.ENABLED ) ); Fixture.clearPreserved(); label.setEnabled( true ); //control_listeners Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); Boolean hasListeners; hasListeners = ( Boolean )adapter.getPreserved( Props.CONTROL_LISTENERS ); assertEquals( Boolean.FALSE, hasListeners ); Fixture.clearPreserved(); label.addControlListener( new ControlAdapter() { } ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); hasListeners = ( Boolean )adapter.getPreserved( Props.CONTROL_LISTENERS ); assertEquals( Boolean.TRUE, hasListeners ); Fixture.clearPreserved(); //foreground background font Color background = Graphics.getColor( 122, 33, 203 ); label.setBackground( background ); Color foreground = Graphics.getColor( 211, 178, 211 ); label.setForeground( foreground ); Font font = Graphics.getFont( "font", 12, SWT.BOLD ); label.setFont( font ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( background, adapter.getPreserved( Props.BACKGROUND ) ); assertEquals( foreground, adapter.getPreserved( Props.FOREGROUND ) ); assertEquals( font, adapter.getPreserved( Props.FONT ) ); Fixture.clearPreserved(); //tab_index Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertTrue( adapter.getPreserved( Props.Z_INDEX ) != null ); Fixture.clearPreserved(); //tooltiptext Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( null, label.getToolTipText() ); Fixture.clearPreserved(); label.setToolTipText( "some text" ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); assertEquals( "some text", label.getToolTipText() ); Fixture.clearPreserved(); //activate_listeners Focus_listeners Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); hasListeners = ( Boolean )adapter.getPreserved( Props.ACTIVATE_LISTENER ); assertEquals( Boolean.FALSE, hasListeners ); Fixture.clearPreserved(); ActivateEvent.addListener( label, new ActivateAdapter() { } ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( label ); hasListeners = ( Boolean )adapter.getPreserved( Props.ACTIVATE_LISTENER ); assertEquals( Boolean.TRUE, hasListeners ); Fixture.clearPreserved(); } public void testSeparatorPreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); int style = SWT.SEPARATOR | SWT.HORIZONTAL; Label label = new Label( shell, style ); Fixture.markInitialized( display ); testPreserveValues( display, label ); display.dispose(); } public void testRenderText() throws IOException { Display display = new Display(); Shell shell = new Shell( display, SWT.NONE ); Label label = new Label( shell, SWT.NONE ); LabelLCA lca = new LabelLCA(); ControlLCAUtil.preserveValues( label ); Fixture.markInitialized( label ); Fixture.preserveWidgets(); Fixture.fakeResponseWriter(); label.setText( "test" ); lca.renderChanges( label ); String expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"test\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); label.setText( "\ntest" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"<br/>test\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); label.setText( "te\nst" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"te<br/>st\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); label.setText( "test\n" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"test<br/>\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); label.setText( "te\n\nst" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"te<br/><br/>st\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); label.setText( "te\ns\nt" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"te<br/>s<br/>t\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); // truncate zeros label.setText( "te\000st" ); lca.renderChanges( label ); expected = "LabelUtil.setText( wm.findWidgetById( \"w2\" ), \"te\" );"; assertTrue( Fixture.getAllMarkup().indexOf( expected ) != -1 ); } public void testEscape() throws Exception { Display display = new Display(); Shell shell = new Shell( display, SWT.NONE ); Label label = new Label( shell, SWT.NONE ); label.setText( "&E<s>ca'pe\" && text" ); label.setToolTipText( "&E<s>ca'pe\" && tooltip" ); Fixture.fakeResponseWriter(); StandardLabelLCA lca = new StandardLabelLCA(); lca.renderChanges( label ); String expected1 = "\"E<s>ca'pe" & text\""; String expected2 = "\"&E<s>ca'pe" && tooltip\""; String actual = Fixture.getAllMarkup(); assertTrue( actual.indexOf( expected1 ) != -1 ); assertTrue( actual.indexOf( expected2 ) != -1 ); } public void testRenderDispose() throws IOException { Display display = new Display(); Shell shell = new Shell( display, SWT.NONE ); Label label = new Label( shell, SWT.NONE ); label.dispose(); Fixture.fakeResponseWriter(); LabelLCA labelLCA = new LabelLCA(); labelLCA.renderDispose( label ); assertEquals( "wm.dispose( \"w2\" );", Fixture.getAllMarkup() ); } protected void setUp() throws Exception { Fixture.setUp(); } protected void tearDown() throws Exception { Fixture.tearDown(); } }