/******************************************************************************* * Copyright (c) 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.datetimekit; 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.widgets.IDateTimeAdapter; import org.eclipse.swt.internal.widgets.Props; import org.eclipse.swt.widgets.*; public class DateTimeLCA_Test extends TestCase { public void testDateTimeDatePreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM | SWT.DROP_DOWN ); dateTime.setDay( 1 ); dateTime.setMonth( 1 ); dateTime.setYear( 2008 ); Fixture.markInitialized( display ); // Test preserved day, month, year Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); Integer day = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_DAY ); assertEquals( 1, day.intValue() ); Integer month = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_MONTH ); assertEquals( 1, month.intValue() ); Integer year = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_YEAR ); assertEquals( 2008, year.intValue() ); Fixture.clearPreserved(); // Test preserved control properties testPreserveControlProperties( dateTime ); // Test preserved sub widgets bounds IDateTimeAdapter dtAdapter = DateTimeLCAUtil.getDateTimeAdapter( dateTime ); Fixture.preserveWidgets(); String propName = IDateTimeAdapter.WEEKDAY_TEXTFIELD + "_BOUNDS"; Rectangle bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.WEEKDAY_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.DAY_TEXTFIELD + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.DAY_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.MONTH_TEXTFIELD + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.MONTH_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.YEAR_TEXTFIELD + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.YEAR_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.WEEKDAY_MONTH_SEPARATOR + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.WEEKDAY_MONTH_SEPARATOR ), bounds ); propName = IDateTimeAdapter.MONTH_DAY_SEPARATOR + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.MONTH_DAY_SEPARATOR ), bounds ); propName = IDateTimeAdapter.DAY_YEAR_SEPARATOR + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.DAY_YEAR_SEPARATOR ), bounds ); propName = IDateTimeAdapter.SPINNER + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.SPINNER ), bounds ); propName = IDateTimeAdapter.DROP_DOWN_BUTTON + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.DROP_DOWN_BUTTON ), bounds ); Fixture.clearPreserved(); // Test preserved selection listeners testPreserveSelectionListener( dateTime ); display.dispose(); } public void testDateTimeTimePreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); DateTime dateTime = new DateTime( shell, SWT.TIME | SWT.MEDIUM ); dateTime.setHours( 1 ); dateTime.setMinutes( 2 ); dateTime.setSeconds( 3 ); Fixture.markInitialized( display ); // Test preserved hours, minutes, seconds Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); Integer hours = ( Integer )adapter.getPreserved( DateTimeTimeLCA.PROP_HOURS ); assertEquals( 1, hours.intValue() ); Integer minutes = ( Integer )adapter.getPreserved( DateTimeTimeLCA.PROP_MINUTES ); assertEquals( 2, minutes.intValue() ); Integer seconds = ( Integer )adapter.getPreserved( DateTimeTimeLCA.PROP_SECONDS ); assertEquals( 3, seconds.intValue() ); Fixture.clearPreserved(); // Test preserved control properties testPreserveControlProperties( dateTime ); // Test preserved sub widgets bounds IDateTimeAdapter dtAdapter = DateTimeLCAUtil.getDateTimeAdapter( dateTime ); Fixture.preserveWidgets(); String propName = IDateTimeAdapter.HOURS_TEXTFIELD + "_BOUNDS"; Rectangle bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.HOURS_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.MINUTES_TEXTFIELD + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.MINUTES_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.SECONDS_TEXTFIELD + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.SECONDS_TEXTFIELD ), bounds ); propName = IDateTimeAdapter.HOURS_MINUTES_SEPARATOR + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.HOURS_MINUTES_SEPARATOR ), bounds ); propName = IDateTimeAdapter.MINUTES_SECONDS_SEPARATOR + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.MINUTES_SECONDS_SEPARATOR ), bounds ); propName = IDateTimeAdapter.SPINNER + "_BOUNDS"; bounds = ( Rectangle )adapter.getPreserved( propName ); assertEquals( dtAdapter.getBounds( IDateTimeAdapter.SPINNER ), bounds ); Fixture.clearPreserved(); // Test preserved selection listeners testPreserveSelectionListener( dateTime ); display.dispose(); } public void testDateTimeCalendarPreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); DateTime dateTime = new DateTime( shell, SWT.CALENDAR ); dateTime.setDay( 1 ); dateTime.setMonth( 1 ); dateTime.setYear( 2008 ); Fixture.markInitialized( display ); // Test preserved day, month, year Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); Integer day = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_DAY ); assertEquals( 1, day.intValue() ); Integer month = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_MONTH ); assertEquals( 1, month.intValue() ); Integer year = ( Integer )adapter.getPreserved( DateTimeDateLCA.PROP_YEAR ); assertEquals( 2008, year.intValue() ); Fixture.clearPreserved(); // Test preserved control properties testPreserveControlProperties( dateTime ); // Test preserved selection listeners testPreserveSelectionListener( dateTime ); display.dispose(); } public void testSelectionEvent() { // Date Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); DateTime dateTime = new DateTime( shell, SWT.DATE | SWT.MEDIUM ); testSelectionEvent( dateTime ); // Time dateTime = new DateTime( shell, SWT.TIME | SWT.MEDIUM ); testSelectionEvent( dateTime ); } private void testPreserveControlProperties( final DateTime dateTime ) { // control: enabled Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( Boolean.TRUE, adapter.getPreserved( Props.ENABLED ) ); Fixture.clearPreserved(); dateTime.setEnabled( false ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( Boolean.FALSE, adapter.getPreserved( Props.ENABLED ) ); Fixture.clearPreserved(); dateTime.setEnabled( true ); // visible dateTime.setSize( 10, 10 ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( Boolean.TRUE, adapter.getPreserved( Props.VISIBLE ) ); Fixture.clearPreserved(); dateTime.setVisible( false ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( Boolean.FALSE, adapter.getPreserved( Props.VISIBLE ) ); Fixture.clearPreserved(); // menu Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( null, adapter.getPreserved( Props.MENU ) ); Fixture.clearPreserved(); Menu menu = new Menu( dateTime ); MenuItem item = new MenuItem( menu, SWT.NONE ); item.setText( "1 Item" ); dateTime.setMenu( menu ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( menu, adapter.getPreserved( Props.MENU ) ); Fixture.clearPreserved(); // foreground background font Color background = Graphics.getColor( 122, 33, 203 ); dateTime.setBackground( background ); Color foreground = Graphics.getColor( 211, 178, 211 ); dateTime.setForeground( foreground ); Font font = Graphics.getFont( "font", 12, SWT.BOLD ); dateTime.setFont( font ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); assertEquals( background, adapter.getPreserved( Props.BACKGROUND ) ); assertEquals( foreground, adapter.getPreserved( Props.FOREGROUND ) ); assertEquals( font, adapter.getPreserved( Props.FONT ) ); Fixture.clearPreserved(); } private void testPreserveSelectionListener( final DateTime dateTime ) { Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); Boolean hasListeners = ( Boolean )adapter.getPreserved( Props.SELECTION_LISTENERS ); assertEquals( Boolean.FALSE, hasListeners ); Fixture.clearPreserved(); SelectionListener selectionListener = new SelectionAdapter() { }; dateTime.addSelectionListener( selectionListener ); Fixture.preserveWidgets(); adapter = WidgetUtil.getAdapter( dateTime ); hasListeners = ( Boolean )adapter.getPreserved( Props.SELECTION_LISTENERS ); assertEquals( Boolean.TRUE, hasListeners ); Fixture.clearPreserved(); } private void testSelectionEvent( final DateTime dateTime ) { final StringBuffer log = new StringBuffer(); SelectionListener selectionListener = new SelectionAdapter() { public void widgetSelected( final SelectionEvent event ) { assertEquals( dateTime, event.getSource() ); assertEquals( null, event.item ); assertEquals( SWT.NONE, event.detail ); assertEquals( 0, event.x ); assertEquals( 0, event.y ); assertEquals( 0, event.width ); assertEquals( 0, event.height ); assertEquals( true, event.doit ); log.append( "widgetSelected" ); } }; dateTime.addSelectionListener( selectionListener ); String dateTimeId = WidgetUtil.getId( dateTime ); Fixture.fakeRequestParam( JSConst.EVENT_WIDGET_SELECTED, dateTimeId ); Fixture.readDataAndProcessAction( dateTime ); assertEquals( "widgetSelected", log.toString() ); } protected void setUp() throws Exception { Fixture.setUp(); } protected void tearDown() throws Exception { Fixture.tearDown(); } }