blob: eb102842b381f21fcc746faa58e107f2c7fa015b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002-2006 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;
import java.util.HashSet;
import java.util.Set;
import junit.framework.TestCase;
import org.eclipse.swt.RWTFixture;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
public class UntypedEventAdapter_Test extends TestCase {
private static final String EVENT_FIRED = "fired|";
private static int eventType;
private static String log;
protected void setUp() throws Exception {
RWTFixture.setUp();
eventType = 0;
log = "";
}
protected void tearDown() throws Exception {
RWTFixture.tearDown();
}
public void testListenerTypes() throws Exception {
Display display = new Display();
Control widget = new Shell( display );
UntypedEventAdapter adapter = new UntypedEventAdapter();
Listener listener = new Listener() {
public void handleEvent( final Event event ) {
eventType = event.type;
}
};
adapter.addListener( SWT.Move, listener );
adapter.controlMoved( new ControlEvent( widget, 0 ) );
assertEquals( SWT.Move, eventType );
adapter.addListener( SWT.Resize, listener );
adapter.controlResized( new ControlEvent( widget, 0 ) );
assertEquals( SWT.Resize, eventType );
adapter.addListener( SWT.Dispose, listener );
adapter.widgetDisposed( new DisposeEvent( widget ) );
assertEquals( SWT.Dispose, eventType );
adapter.addListener( SWT.Selection, listener );
adapter.widgetSelected( new SelectionEvent( widget, null, 0 ) );
assertEquals( SWT.Selection, eventType );
adapter.addListener( SWT.DefaultSelection, listener );
adapter.widgetDefaultSelected( new SelectionEvent( widget, null, 0 ) );
assertEquals( SWT.DefaultSelection, eventType );
adapter.addListener( SWT.FocusIn, listener );
adapter.focusGained( new FocusEvent( widget, FocusEvent.FOCUS_GAINED ) );
assertEquals( SWT.FocusIn, eventType );
adapter.addListener( SWT.FocusOut, listener );
adapter.focusLost( new FocusEvent( widget, FocusEvent.FOCUS_LOST ) );
assertEquals( SWT.FocusOut, eventType );
adapter.addListener( SWT.Expand, listener );
adapter.treeExpanded( new TreeEvent( widget, null, 0 ) );
assertEquals( SWT.Expand, eventType );
adapter.addListener( SWT.Collapse, listener );
adapter.treeCollapsed( new TreeEvent( widget, null, 0 ) );
assertEquals( SWT.Collapse, eventType );
adapter.addListener( SWT.Activate, listener );
adapter.shellActivated( new ShellEvent( widget, 0 ) );
assertEquals( SWT.Activate, eventType );
adapter.addListener( SWT.Deactivate, listener );
adapter.shellDeactivated( new ShellEvent( widget, 0 ) );
assertEquals( SWT.Deactivate, eventType );
adapter.addListener( SWT.Close, listener );
adapter.shellClosed( new ShellEvent( widget, 0 ) );
assertEquals( SWT.Close, eventType );
adapter.addListener( SWT.Hide, listener );
adapter.menuHidden( new MenuEvent( widget, 0 ) );
assertEquals( SWT.Hide, eventType );
adapter.addListener( SWT.Show, listener );
adapter.menuShown( new MenuEvent( widget, 0 ) );
assertEquals( SWT.Show, eventType );
adapter.addListener( SWT.Modify, listener );
adapter.modifyText( new ModifyEvent( widget ) );
assertEquals( SWT.Modify, eventType );
adapter.addListener( SWT.SetData, listener );
adapter.update( new SetDataEvent( widget, null, 0 ) );
assertEquals( SWT.SetData, eventType );
adapter.addListener( SWT.MouseDown, listener );
adapter.mouseDown( new MouseEvent( widget, 0 ) );
assertEquals( SWT.MouseDown, eventType );
adapter.addListener( SWT.MouseUp, listener );
adapter.mouseUp( new MouseEvent( widget, 0 ) );
assertEquals( SWT.MouseUp, eventType );
adapter.addListener( SWT.MouseDoubleClick, listener );
adapter.mouseDoubleClick( new MouseEvent( widget, 0 ) );
assertEquals( SWT.MouseDoubleClick, eventType );
}
public void testAdditionAndRemovalOfListener() throws Exception {
Display display = new Display();
Control widget = new Shell( display );
UntypedEventAdapter adapter = new UntypedEventAdapter();
final Set eventBuffer = new HashSet();
Listener listener = new Listener() {
public void handleEvent( final Event event ) {
eventType = event.type;
log += EVENT_FIRED;
eventBuffer.add( event );
}
};
adapter.addListener( SWT.Move, listener );
adapter.addListener( SWT.Move, listener );
adapter.controlMoved( new ControlEvent( widget, 0 ) );
assertEquals( SWT.Move, eventType );
assertEquals( EVENT_FIRED + EVENT_FIRED, log );
assertEquals( 1, eventBuffer.size() );
log = "";
eventType = 0;
eventBuffer.clear();
adapter.removeListener( SWT.Move, listener );
adapter.controlMoved( new ControlEvent( widget, 0 ) );
assertEquals( SWT.Move, eventType );
assertEquals( EVENT_FIRED, log );
assertEquals( 1, eventBuffer.size() );
log = "";
eventType = 0;
eventBuffer.clear();
adapter.removeListener( SWT.Move, listener );
adapter.controlMoved( new ControlEvent( widget, 0 ) );
assertEquals( 0, eventType );
assertEquals( "", log );
assertEquals( 0, eventBuffer.size() );
}
public void testExecutionOrder() throws Exception {
Display display = new Display();
Control widget = new Shell( display );
UntypedEventAdapter adapter = new UntypedEventAdapter();
Listener listener1 = new Listener() {
public void handleEvent( final Event event ) {
log += "L1|";
}
};
Listener listener2 = new Listener() {
public void handleEvent( final Event event ) {
log += "L2|";
}
};
adapter.addListener( SWT.Move, listener1 );
adapter.addListener( SWT.Move, listener2 );
adapter.controlMoved( new ControlEvent( widget, 0 ) );
assertEquals( "L1|L2|", log );
}
public void testEventFields() {
final Event[] eventLog = { null };
final Display display = new Display();
final Shell shell = new Shell( display );
Listener listener = new Listener() {
public void handleEvent( final Event event ) {
eventLog[ 0 ] = event;
}
};
// Move event
UntypedEventAdapter adapter = new UntypedEventAdapter();
adapter.addListener( SWT.Move, listener );
ControlEvent event = new ControlEvent( shell, ControlEvent.CONTROL_MOVED );
adapter.controlMoved( event );
assertNotNull( eventLog[ 0 ] );
assertSame( display, eventLog [ 0 ].display );
assertSame( shell, eventLog [ 0 ].widget );
// Selection event
adapter = new UntypedEventAdapter();
adapter.addListener( SWT.Selection, listener );
SelectionEvent selEvent
= new SelectionEvent( shell, null, SelectionEvent.WIDGET_SELECTED );
selEvent.x = 1;
selEvent.y = 2;
selEvent.width = 3;
selEvent.height = 4;
selEvent.text = "some text";
selEvent.detail = 123;
adapter.widgetSelected( selEvent );
assertEquals( selEvent.text, eventLog[ 0 ].text );
assertEquals( selEvent.x, eventLog[ 0 ].x );
assertEquals( selEvent.y, eventLog[ 0 ].y );
assertEquals( selEvent.height, eventLog[ 0 ].height );
assertEquals( selEvent.width, eventLog[ 0 ].width );
assertEquals( selEvent.detail, eventLog[ 0 ].detail );
}
}