/******************************************************************************* * Copyright (c) 2002, 2009 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.menukit; import java.io.IOException; import org.eclipse.rwt.lifecycle.JSWriter; import org.eclipse.rwt.lifecycle.WidgetLCAUtil; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.internal.widgets.IMenuAdapter; import org.eclipse.swt.widgets.Menu; final class PopupMenuLCA extends MenuDelegateLCA { void preserveValues( final Menu menu ) { MenuLCAUtil.preserveEnabled( menu ); MenuLCAUtil.preserveMenuListener( menu ); MenuLCAUtil.preserveWidth( menu ); WidgetLCAUtil.preserveCustomVariant( menu ); WidgetLCAUtil.preserveHelpListener( menu ); } void readData( final Menu menu ) { MenuLCAUtil.readMenuEvent( menu ); WidgetLCAUtil.processHelp( menu ); } void renderInitialization( final Menu menu ) throws IOException { JSWriter writer = JSWriter.getWriterFor( menu ); writer.newWidget( "org.eclipse.rwt.widgets.Menu" ); } void renderChanges( final Menu menu ) throws IOException { WidgetLCAUtil.writeCustomVariant( menu ); writeShow( menu ); MenuLCAUtil.writeEnabled( menu ); MenuLCAUtil.writeMenuListener( menu ); MenuLCAUtil.writeUnhideMenu( menu ); WidgetLCAUtil.writeHelpListener( menu ); } private static void writeShow( final Menu menu ) throws IOException { if( menu.isVisible() ) { JSWriter writer = JSWriter.getWriterFor( menu ); IMenuAdapter adapter = ( IMenuAdapter )menu.getAdapter( IMenuAdapter.class ); Point location = adapter.getLocation(); Object[] args = new Object[] { menu, new Integer( location.x ), new Integer( location.y ) }; writer.call( "showMenu", args ); menu.setVisible( false ); } } }