/*******************************************************************************
* Copyright (c) 2002, 2009 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
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.swt.internal.widgets.sashkit;
import java.io.IOException;
import junit.framework.TestCase;
import org.eclipse.rwt.Fixture;
import org.eclipse.rwt.graphics.Graphics;
import org.eclipse.rwt.internal.lifecycle.JSConst;
import org.eclipse.rwt.lifecycle.IWidgetAdapter;
import org.eclipse.rwt.lifecycle.WidgetUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
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 SashLCA_Test extends TestCase {
public void testPreserveValues() {
Display display = new Display();
Composite shell = new Shell( display, SWT.NONE );
Sash sash = new Sash( shell, SWT.NONE );
Fixture.markInitialized( display );
Fixture.preserveWidgets();
IWidgetAdapter adapter = WidgetUtil.getAdapter( sash );
Object[] Listeners;
Listeners = ( Object[] )adapter.getPreserved( Props.SELECTION_LISTENERS );
assertEquals( 0, Listeners.length );
SelectionListener listener = new SelectionAdapter() {
public void widgetSelected( SelectionEvent event ) {
}
};
sash.addSelectionListener( listener );
Fixture.preserveWidgets();
Listeners = ( Object[] )adapter.getPreserved( Props.SELECTION_LISTENERS );
assertEquals( 1, Listeners.length );
assertEquals( listener, Listeners[ 0 ] );
//control: enabled
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( Boolean.TRUE, adapter.getPreserved( Props.ENABLED ) );
Fixture.clearPreserved();
sash.setEnabled( false );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( Boolean.FALSE, adapter.getPreserved( Props.ENABLED ) );
Fixture.clearPreserved();
sash.setEnabled( true );
//visible
sash.setSize( 10, 10 );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( Boolean.TRUE, adapter.getPreserved( Props.VISIBLE ) );
Fixture.clearPreserved();
sash.setVisible( false );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( Boolean.FALSE, adapter.getPreserved( Props.VISIBLE ) );
Fixture.clearPreserved();
//menu
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( null, adapter.getPreserved( Props.MENU ) );
Fixture.clearPreserved();
Menu menu = new Menu( sash );
MenuItem item = new MenuItem( menu, SWT.NONE );
item.setText( "1 Item" );
sash.setMenu( menu );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( menu, adapter.getPreserved( Props.MENU ) );
Fixture.clearPreserved();
//bound
Rectangle rectangle = new Rectangle( 10, 10, 30, 50 );
sash.setBounds( rectangle );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( rectangle, adapter.getPreserved( Props.BOUNDS ) );
Fixture.clearPreserved();
//control_listeners
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
Boolean hasListeners
= ( Boolean )adapter.getPreserved( Props.CONTROL_LISTENERS );
assertEquals( Boolean.FALSE, hasListeners );
Fixture.clearPreserved();
sash.addControlListener( new ControlListener() {
public void controlMoved( final ControlEvent e ) {
}
public void controlResized( final ControlEvent e ) {
}
} );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
hasListeners = ( Boolean )adapter.getPreserved( Props.CONTROL_LISTENERS );
assertEquals( Boolean.TRUE, hasListeners );
Fixture.clearPreserved();
//z-index
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertTrue( adapter.getPreserved( Props.Z_INDEX ) != null );
Fixture.clearPreserved();
//foreground background font
Color background = Graphics.getColor( 122, 33, 203 );
sash.setBackground( background );
Color foreground = Graphics.getColor( 211, 178, 211 );
sash.setForeground( foreground );
Font font = Graphics.getFont( "font", 12, SWT.BOLD );
sash.setFont( font );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
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( sash );
assertTrue( adapter.getPreserved( Props.Z_INDEX ) != null );
Fixture.clearPreserved();
//tooltiptext
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( null, sash.getToolTipText() );
Fixture.clearPreserved();
sash.setToolTipText( "some text" );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
assertEquals( "some text", sash.getToolTipText() );
Fixture.clearPreserved();
//activate_listeners Focus_listeners
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
hasListeners = ( Boolean )adapter.getPreserved( Props.FOCUS_LISTENER );
assertEquals( Boolean.FALSE, hasListeners );
Fixture.clearPreserved();
sash.addFocusListener( new FocusListener() {
public void focusGained( final FocusEvent event ) {
}
public void focusLost( final FocusEvent event ) {
}
} );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
hasListeners = ( Boolean )adapter.getPreserved( Props.FOCUS_LISTENER );
assertEquals( Boolean.TRUE, hasListeners );
Fixture.clearPreserved();
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
hasListeners = ( Boolean )adapter.getPreserved( Props.ACTIVATE_LISTENER );
assertEquals( Boolean.FALSE, hasListeners );
Fixture.clearPreserved();
ActivateEvent.addListener( sash, new ActivateAdapter() {
} );
Fixture.preserveWidgets();
adapter = WidgetUtil.getAdapter( sash );
hasListeners = ( Boolean )adapter.getPreserved( Props.ACTIVATE_LISTENER );
assertEquals( Boolean.TRUE, hasListeners );
Fixture.clearPreserved();
display.dispose();
}
public void testRenderChanges() throws IOException {
Fixture.fakeResponseWriter();
Display display = new Display();
Shell shell = new Shell( display, SWT.NONE );
Sash sash = new Sash( shell, SWT.NONE );
shell.open();
Fixture.markInitialized( display );
Fixture.markInitialized( sash );
Fixture.preserveWidgets();
sash.setBounds( new Rectangle( 20, 100, 50, 60 ) );
SashLCA sashLCA = new SashLCA();
sashLCA.renderChanges( sash );
assertTrue( Fixture.getAllMarkup()
.indexOf( "setSpace( 20, 50, 100, 60 );" ) != -1 );
Fixture.clearPreserved();
Fixture.fakeResponseWriter();
Fixture.preserveWidgets();
sashLCA.renderChanges( sash );
assertEquals( "", Fixture.getAllMarkup() );
}
public void testSelectionEvent() {
Display display = new Display();
Shell shell = new Shell( display, SWT.NONE );
final Sash sash = new Sash( shell, SWT.NONE );
final StringBuffer log = new StringBuffer();
SelectionListener selectionListener = new SelectionAdapter() {
public void widgetSelected( SelectionEvent event ) {
assertEquals( sash, event.getSource() );
assertEquals( null, event.item );
assertEquals( 0, event.x );
assertEquals( 0, event.y );
assertEquals( 0, event.width );
assertEquals( 0, event.height );
assertEquals( 0, event.stateMask );
assertEquals( SWT.DRAG, event.detail );
assertEquals( true, event.doit );
log.append( "widgetSelected" );
}
};
sash.addSelectionListener( selectionListener );
String sashId = WidgetUtil.getId( sash );
Fixture.fakeRequestParam( JSConst.EVENT_WIDGET_SELECTED, sashId );
Fixture.fakeRequestParam( JSConst.EVENT_WIDGET_SELECTED + ".detail",
"drag" );
Fixture.readDataAndProcessAction( sash );
assertEquals( "widgetSelected", log.toString() );
}
protected void setUp() throws Exception {
Fixture.setUp();
}
protected void tearDown() throws Exception {
Fixture.tearDown();
}
}