/******************************************************************************* * 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.internal.widgets.canvaskit; import java.io.IOException; import org.eclipse.rwt.lifecycle.*; import org.eclipse.swt.internal.graphics.GCOperation; import org.eclipse.swt.internal.graphics.IGCAdapter; import org.eclipse.swt.widgets.*; public final class CanvasLCA extends AbstractWidgetLCA { public void preserveValues( final Widget widget ) { ControlLCAUtil.preserveValues( ( Control )widget ); WidgetLCAUtil.preserveCustomVariant( widget ); WidgetLCAUtil.preserveBackgroundGradient( widget ); WidgetLCAUtil.preserveRoundedBorder( widget ); } public void readData( final Widget widget ) { ControlLCAUtil.processMouseEvents( ( Control )widget ); ControlLCAUtil.processKeyEvents( ( Control )widget ); ControlLCAUtil.processMenuDetect( ( Control )widget ); } public void renderInitialization( final Widget widget ) throws IOException { Canvas canvas = ( Canvas )widget; JSWriter writer = JSWriter.getWriterFor( canvas ); writer.newWidget( "org.eclipse.swt.widgets.Canvas" ); ControlLCAUtil.writeStyleFlags( canvas ); } public void renderChanges( final Widget widget ) throws IOException { ControlLCAUtil.writeChanges( ( Control )widget ); WidgetLCAUtil.writeBackgroundGradient( widget ); WidgetLCAUtil.writeRoundedBorder( widget ); WidgetLCAUtil.writeCustomVariant( widget ); writeGCOperations( ( Canvas )widget ); } public void renderDispose( final Widget widget ) throws IOException { JSWriter writer = JSWriter.getWriterFor( widget ); writer.dispose(); } private static void writeGCOperations( final Canvas canvas ) throws IOException { IGCAdapter adapter = ( IGCAdapter )canvas.getAdapter( IGCAdapter.class ); GCOperation[] operations = adapter.getGCOperations(); if( operations.length > 0 ) { GCOperationWriter operationWriter = new GCOperationWriter( canvas ); for( int i = 0; i < operations.length; i++ ) { operationWriter.write( operations[ i ] ); } } } }