/******************************************************************************* * Copyright (c) 2008, 2010 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.datetimekit; import java.io.IOException; import org.eclipse.rwt.lifecycle.*; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.internal.widgets.IDateTimeAdapter; import org.eclipse.swt.internal.widgets.Props; import org.eclipse.swt.widgets.DateTime; final class DateTimeLCAUtil { private DateTimeLCAUtil() { // prevent instantiation } static IDateTimeAdapter getDateTimeAdapter( final DateTime dateTime ) { return ( IDateTimeAdapter )dateTime.getAdapter( IDateTimeAdapter.class ); } static void preserveSubWidgetBounds( final DateTime dateTime, final int subWidgetID ) { IWidgetAdapter adapter = WidgetUtil.getAdapter( dateTime ); IDateTimeAdapter dateTimeAdapter = getDateTimeAdapter( dateTime ); Rectangle subWidgetBounds = dateTimeAdapter.getBounds( subWidgetID ); adapter.preserve( subWidgetID + "_BOUNDS", subWidgetBounds ); } static void writeSubWidgetBounds( final DateTime dateTime, final int subWidgetID ) throws IOException { IDateTimeAdapter dateTimeAdapter = getDateTimeAdapter( dateTime ); Rectangle newValue = dateTimeAdapter.getBounds( subWidgetID ); if( WidgetLCAUtil.hasChanged( dateTime, subWidgetID + "_BOUNDS", newValue ) ) { JSWriter writer = JSWriter.getWriterFor( dateTime ); writer.call( "setBounds", new Object[]{ new Integer( subWidgetID ), new Integer( newValue.x ), new Integer( newValue.y ), new Integer( newValue.width ), new Integer( newValue.height ) }); } } static void writeListener( final DateTime dateTime ) throws IOException { boolean hasListener = SelectionEvent.hasListener( dateTime ); Boolean newValue = Boolean.valueOf( hasListener ); String prop = Props.SELECTION_LISTENERS; if( WidgetLCAUtil.hasChanged( dateTime, prop, newValue, Boolean.FALSE ) ) { JSWriter writer = JSWriter.getWriterFor( dateTime ); writer.set( "hasSelectionListener", newValue ); } } static void initCellSize( final DateTime dateTime ) throws IOException { IDateTimeAdapter dateTimeAdapter = DateTimeLCAUtil.getDateTimeAdapter( dateTime ); JSWriter writer = JSWriter.getWriterFor( dateTime ); Point cellSize = dateTimeAdapter.getCellSize(); writer.callFieldAssignment( new JSVar( "org.eclipse.swt.widgets.Calendar" ), "CELL_WIDTH", String.valueOf( cellSize.x ) ); writer.callFieldAssignment( new JSVar( "org.eclipse.swt.widgets.Calendar" ), "CELL_HEIGHT", String.valueOf( cellSize.y ) ); } }