/******************************************************************************* * Copyright (c) 2013, 2015 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.rap.rwt.internal.scripting; import java.util.ArrayList; import java.util.List; import org.eclipse.rap.rwt.internal.scripting.ClientListenerOperation.AddListener; import org.eclipse.rap.rwt.internal.scripting.ClientListenerOperation.RemoveListener; import org.eclipse.rap.rwt.scripting.ClientListener; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Widget; public class ClientListenerUtil { private static final String OPERATIONS = "rwt.clientListenerOperations"; public static String getRemoteId( ClientFunction function ) { return function.getRemoteId(); } public static String getEventType( int bindingType ) { switch( bindingType ) { case SWT.KeyUp: return "KeyUp"; case SWT.KeyDown: return "KeyDown"; case SWT.FocusIn: return "FocusIn"; case SWT.FocusOut: return "FocusOut"; case SWT.MouseDown: return "MouseDown"; case SWT.MouseUp: return "MouseUp"; case SWT.MouseEnter: return "MouseEnter"; case SWT.MouseExit: return "MouseExit"; case SWT.MouseMove: return "MouseMove"; case SWT.MouseDoubleClick: return "MouseDoubleClick"; case SWT.Modify: return "Modify"; case SWT.Show: return "Show"; case SWT.Hide: return "Hide"; case SWT.Verify: return "Verify"; case SWT.Paint: return "Paint"; case SWT.Resize: return "Resize"; case SWT.Selection: return "Selection"; case SWT.DefaultSelection: return "DefaultSelection"; case SWT.MouseWheel: return "MouseWheel"; default: throw new IllegalArgumentException( "Unsupported event type " + bindingType ); } } public static void clientListenerAdded( Widget widget, int eventType, ClientListener listener ) { List<ClientListenerOperation> operations = getClientListenerOperations( widget ); if( operations == null ) { operations = new ArrayList<>( 1 ); widget.setData( OPERATIONS, operations ); } operations.add( new AddListener( eventType, listener ) ); } public static void clientListenerRemoved( Widget widget, int eventType, ClientListener listener ) { List<ClientListenerOperation> operations = getClientListenerOperations( widget ); if( operations == null ) { operations = new ArrayList<>( 1 ); widget.setData( OPERATIONS, operations ); } operations.add( new RemoveListener( eventType, listener ) ); } @SuppressWarnings( "unchecked" ) public static List<ClientListenerOperation> getClientListenerOperations( Widget widget ) { return ( List<ClientListenerOperation> )widget.getData( OPERATIONS ); } public static void clearClientListenerOperations( Widget widget ) { widget.setData( OPERATIONS, null ); } }