/******************************************************************************* * Copyright (c) 2010 EclipseSource and others. 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: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.swt.widgets; import java.util.ArrayList; import junit.framework.TestCase; import org.eclipse.rwt.Fixture; import org.eclipse.rwt.lifecycle.PhaseId; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.internal.graphics.IGCAdapter; public class Canvas_Test extends TestCase { protected void setUp() throws Exception { Fixture.setUp(); Fixture.fakePhase( PhaseId.PROCESS_ACTION ); } protected void tearDown() throws Exception { Fixture.tearDown(); } public void testPaintEvent() { final java.util.List log = new ArrayList(); Display display = new Display(); Shell shell = new Shell( display ); Canvas canvas = new Canvas( shell, SWT.NONE ); canvas.addPaintListener( new PaintListener() { public void paintControl( final PaintEvent event ) { log.add( event ); } } ); assertEquals( 0, log.size() ); canvas.redraw(); assertEquals( 1, log.size() ); PaintEvent event = ( PaintEvent )log.get( 0 ); assertSame( canvas, event.widget ); assertTrue( event.gc.isDisposed() ); } public void testRemovePaintListener() { final java.util.List log = new ArrayList(); Display display = new Display(); Shell shell = new Shell( display ); Canvas canvas = new Canvas( shell, SWT.NONE ); PaintListener listener = new PaintListener() { public void paintControl( final PaintEvent event ) { log.add( event ); } }; canvas.addPaintListener( listener ); canvas.removePaintListener( listener ); canvas.redraw(); assertEquals( 0, log.size() ); } public void testResize() { final java.util.List log = new ArrayList(); Display display = new Display(); Shell shell = new Shell( display ); Canvas canvas = new Canvas( shell, SWT.NONE ); canvas.addPaintListener( new PaintListener() { public void paintControl( final PaintEvent event ) { log.add( event ); } } ); assertEquals( 0, log.size() ); canvas.setSize( 100, 100 ); assertEquals( 1, log.size() ); } public void testMultiplePaintEvents() { final java.util.List log = new ArrayList(); Display display = new Display(); Shell shell = new Shell( display ); Canvas canvas = new Canvas( shell, SWT.NONE ); canvas.addPaintListener( new PaintListener() { public void paintControl( final PaintEvent event ) { log.add( event ); event.gc.drawLine( 1, 2, 3, 4 ); } } ); canvas.redraw(); canvas.redraw(); assertEquals( 2, log.size() ); IGCAdapter adapter = ( IGCAdapter )canvas.getAdapter( IGCAdapter.class ); assertEquals( 1, adapter.getGCOperations().length ); } }