Ongoing work on bug 334028: Rework event system

Bring DND test back to normal
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/MenuDetectEvent.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/MenuDetectEvent.java
index 0f08938..25e679e 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/MenuDetectEvent.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/MenuDetectEvent.java
@@ -80,7 +80,7 @@
   }
 
   protected boolean allowProcessing() {
-    return EventUtil.isAccessible( widget );
+    return EventUtil.allowProcessing( sourceEvent );
   }
 
   /**
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/ShellEvent.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/ShellEvent.java
index 559d163..2489ce7 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/ShellEvent.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/events/ShellEvent.java
@@ -11,8 +11,6 @@
  ******************************************************************************/
 package org.eclipse.swt.events;
 
-import org.eclipse.rap.rwt.Adaptable;
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Event;
 
 
@@ -32,8 +30,6 @@
 
   private static final long serialVersionUID = 1L;
 
-  private static final int[] EVENT_TYPES = { SWT.Close, SWT.Activate, SWT.Deactivate };
-
   /**
    * A flag indicating whether the operation should be allowed.
    * Setting this field to <code>false</code> will cancel the operation.
@@ -51,31 +47,4 @@
     doit = event.doit;
   }
 
-  /**
-   * @since 2.0
-   * @deprecated not part of the API, do not use in application code
-   */
-  @Deprecated
-  public static boolean hasListener( Adaptable adaptable ) {
-    return hasListener( adaptable, EVENT_TYPES );
-  }
-
-  /**
-   * @since 2.0
-   * @deprecated not part of the API, do not use in application code
-   */
-  @Deprecated
-  public static void addListener( Adaptable adaptable, ShellListener listener ) {
-    addListener( adaptable, EVENT_TYPES, listener );
-  }
-
-  /**
-   * @since 2.0
-   * @deprecated not part of the API, do not use in application code
-   */
-  @Deprecated
-  public static void removeListener( Adaptable adaptable, ShellListener listener ) {
-    removeListener( adaptable, EVENT_TYPES, listener );
-  }
-
 }
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/EventUtil.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/EventUtil.java
index 63caa3f..0f05a2a 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/EventUtil.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/EventUtil.java
@@ -14,7 +14,9 @@
 import org.eclipse.rap.rwt.internal.service.ContextProvider;
 import org.eclipse.rap.rwt.service.IServiceStore;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.internal.events.EventTypes;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Shell;
@@ -43,8 +45,35 @@
     return eventTime.intValue();
   }
 
+  public static boolean allowProcessing( Event event ) {
+    boolean result;
+    if( event.widget.isDisposed() ) {
+      result = false;
+    } else {
+      switch( event.type ) {
+        case SWT.Activate:
+        case SWT.Deactivate:
+        case SWT.Move:
+        case SWT.Resize:
+        case SWT.Paint:
+        case SWT.Modify:
+        case SWT.Verify:
+        case SWT.SetData:
+        case EventTypes.PROGRESS_CHANGED:
+        case EventTypes.PROGRESS_COMPLETED:
+          result = true;
+        break;
+        default:
+          result = isAccessible( event.widget );
+        break;
+      }
+    }
+    return result;
+  }
+
   public static boolean isAccessible( Widget widget ) {
-    boolean result = !widget.isDisposed();
+    boolean result;
+    result = !widget.isDisposed();
     if( result ) {
       if( widget instanceof Control ) {
         result = isAccessible( ( Control )widget );
@@ -63,9 +92,7 @@
   }
 
   private static boolean isAccessible( Control control ) {
-    return    control.getEnabled()
-           && control.getVisible()
-           && isShellAccessible( control.getShell() );
+    return control.getEnabled() && control.getVisible() && isShellAccessible( control.getShell() );
   }
 
   private static boolean isAccessible( Menu menu ) {
@@ -73,13 +100,11 @@
   }
 
   private static boolean isAccessible( MenuItem menuItem ) {
-    Shell shell = menuItem.getParent().getShell();
-    return menuItem.getEnabled() && isShellAccessible( shell );
+    return menuItem.getEnabled() && isShellAccessible( menuItem.getParent().getShell() );
   }
 
   private static boolean isAccessible( ToolItem toolItem ) {
-    Shell shell = toolItem.getParent().getShell();
-    return toolItem.getEnabled() && isShellAccessible( shell );
+    return toolItem.getEnabled() && isShellAccessible( toolItem.getParent().getShell() );
   }
 
   private static boolean isShellAccessible( Shell shell ) {
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Display.java
index b1650e3..9efa727 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Display.java
@@ -1177,7 +1177,7 @@
     while( !result && events.length > 0 ) {
       Event event = events[ 0 ];
       EventList.getInstance().remove( event );
-      if( EventUtil.isAccessible( event.widget ) ) {
+      if( EventUtil.allowProcessing( event ) ) {
         event.widget.notifyListeners( event.type, event );
         result = true;
       } else {
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java
index 1997181..689a8ea 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java
@@ -16,7 +16,6 @@
 import org.eclipse.rap.rwt.lifecycle.ProcessActionRunner;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
-import org.eclipse.swt.events.ShellEvent;
 import org.eclipse.swt.events.ShellListener;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
@@ -1081,7 +1080,13 @@
    */
   public void addShellListener( ShellListener listener ) {
     checkWidget();
-    ShellEvent.addListener( this, listener );
+    if( listener == null ) {
+      error( SWT.ERROR_NULL_ARGUMENT );
+    }
+    TypedListener typedListener = new TypedListener( listener );
+    addListener( SWT.Close, typedListener );
+    addListener( SWT.Activate, typedListener );
+    addListener( SWT.Deactivate, typedListener );
   }
 
   /**
@@ -1103,7 +1108,12 @@
    */
   public void removeShellListener( ShellListener listener ) {
     checkWidget();
-    ShellEvent.removeListener( this, listener );
+    if( listener == null ) {
+      error( SWT.ERROR_NULL_ARGUMENT );
+    }
+    removeListener( SWT.Close, listener );
+    removeListener( SWT.Activate, listener );
+    removeListener( SWT.Deactivate, listener );
   }
 
   ///////////
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/custom/scrolledcompositekit/ScrolledCompositeLCA.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/custom/scrolledcompositekit/ScrolledCompositeLCA.java
index 3609b76..5f92c99 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/custom/scrolledcompositekit/ScrolledCompositeLCA.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/custom/scrolledcompositekit/ScrolledCompositeLCA.java
@@ -48,7 +48,6 @@
   private static final String PROP_SHOW_FOCUSED_CONTROL = "showFocusedControl";
   private static final String PROP_SCROLLBARS_VISIBLE = "scrollBarsVisible";
   private static final String PROP_SCROLLBARS_SELECTION_LISTENER = "scrollBarsSelection";
-  private static final String EVENT_SCROLLBAR_SELECTED = "scrollBarSelected";
 
   // Default values
   private static final Point DEFAULT_ORIGIN = new Point( 0, 0 );
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/displaykit/DisplayLCA.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/displaykit/DisplayLCA.java
index 81bc791..8252d9e 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/displaykit/DisplayLCA.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/displaykit/DisplayLCA.java
@@ -15,6 +15,7 @@
 import static org.eclipse.rap.rwt.internal.protocol.ProtocolUtil.readPropertyValueAsString;
 
 import java.io.IOException;
+
 import org.eclipse.rap.rwt.branding.AbstractBranding;
 import org.eclipse.rap.rwt.internal.application.RWTFactory;
 import org.eclipse.rap.rwt.internal.branding.BrandingUtil;
@@ -33,7 +34,6 @@
 import org.eclipse.rap.rwt.internal.theme.ThemeUtil;
 import org.eclipse.rap.rwt.internal.uicallback.UICallBackServiceHandler;
 import org.eclipse.rap.rwt.internal.util.ActiveKeysUtil;
-import org.eclipse.rap.rwt.internal.util.NumberFormatUtil;
 import org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA;
 import org.eclipse.rap.rwt.lifecycle.IWidgetAdapter;
 import org.eclipse.rap.rwt.lifecycle.IWidgetLifeCycleAdapter;
@@ -365,18 +365,6 @@
     return readPropertyValueAsString( getId( display ), propertyName );
   }
 
-  private static int readIntPropertyValue( Display display, String propertyName, int defaultValue )
-  {
-    String value = readPropertyValue( display, propertyName );
-    int result;
-    if( value == null ) {
-      result = defaultValue;
-    } else {
-      result = NumberFormatUtil.parseInt( value );
-    }
-    return result;
-  }
-
   private static IDisplayAdapter getDisplayAdapter( Display display ) {
     Object adapter = display.getAdapter( IDisplayAdapter.class );
     return ( IDisplayAdapter )adapter;
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/shellkit/ShellLCA.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/shellkit/ShellLCA.java
index 716e8d6..734c018 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/shellkit/ShellLCA.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/shellkit/ShellLCA.java
@@ -29,7 +29,6 @@
 import org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil;
 import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ShellEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
@@ -91,7 +90,7 @@
     preserveProperty( shell, PROP_FULLSCREEN, Boolean.valueOf( shell.getFullScreen() ) );
     preserveProperty( shell, PROP_MINIMUM_SIZE, shell.getMinimumSize() );
     preserveProperty( shell, PROP_DEFAULT_BUTTON, shell.getDefaultButton() );
-    preserveListener( shell, PROP_SHELL_LISTENER, ShellEvent.hasListener( shell ) );
+    preserveListener( shell, PROP_SHELL_LISTENER, hasShellListener( shell ) );
   }
 
   public void readData( Widget widget ) {
@@ -269,10 +268,16 @@
     // the "activeControl" property and "controlActivated" event (also sent by the shell and
     // processed in ShellLCA#processActivate).
     // The listener property for this event is rendered by ControlLCAUtil#renderActivateListener
-    boolean newValue = ShellEvent.hasListener( shell );
+    boolean newValue = hasShellListener( shell );
     renderListener( shell, PROP_SHELL_LISTENER, newValue, false );
   }
 
+  private static boolean hasShellListener( Shell shell ) {
+    return shell.isListening( SWT.Close ) 
+        || shell.isListening( SWT.Activate ) 
+        || shell.isListening( SWT.Deactivate );
+  }
+
   private static String getMode( Shell shell ) {
     String result = null;
     if( shell.getMinimized() ) {
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java
index b6eaea5..4aaff41 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java
@@ -72,7 +72,6 @@
   private static final String PROP_ENABLE_CELL_TOOLTIP = "enableCellToolTip";
   private static final String PROP_CELL_TOOLTIP_TEXT = "cellToolTipText";
   private static final String PROP_MARKUP_ENABLED = "markupEnabled";
-  private static final String EVENT_SCROLLBAR_SELECTED = "scrollBarSelected";
 
   private static final int ZERO = 0 ;
   private static final String[] DEFAULT_SELECTION = new String[ 0 ];
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java
index 771604a..9dc4583 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java
@@ -81,7 +81,6 @@
   private static final String PROP_ENABLE_CELL_TOOLTIP = "enableCellToolTip";
   private static final String PROP_CELL_TOOLTIP_TEXT = "cellToolTipText";
   private static final String PROP_MARKUP_ENABLED = "markupEnabled";
-  private static final String EVENT_SCROLLBAR_SELECTED = "scrollBarSelected";
 
   private static final int ZERO = 0 ;
   private static final String[] DEFAULT_SELECTION = new String[ 0 ];
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/lifecycle/EventFiltering_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/lifecycle/EventFiltering_Test.java
index 013627c..84c4992 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/lifecycle/EventFiltering_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/lifecycle/EventFiltering_Test.java
@@ -26,6 +26,7 @@
 import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst;
 import org.eclipse.rap.rwt.testfixture.Fixture;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
 import org.eclipse.swt.events.FocusAdapter;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.SelectionEvent;
@@ -33,11 +34,17 @@
 import org.eclipse.swt.events.ShellEvent;
 import org.eclipse.swt.events.ShellListener;
 import org.eclipse.swt.events.TypedEvent;
+import org.eclipse.swt.internal.events.EventTypes;
+import org.eclipse.swt.internal.widgets.EventUtil;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
 
 
 public class EventFiltering_Test extends TestCase {
@@ -58,7 +65,96 @@
   protected void tearDown() throws Exception {
     Fixture.tearDown();
   }
+  
+  public void testAllowProcessingForActivateEventOnInvisibleControl() {
+    Control control = new Button( shell, SWT.PUSH );
+    control.setEnabled( false );
+    Event event = createEvent( control, SWT.Activate );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForDeactivateEventOnInvisibleControl() {
+    Control control = new Button( shell, SWT.PUSH );
+    control.setEnabled( false );
+    Event event = createEvent( control, SWT.Deactivate );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForProgressEventOnInvisibleBrowser() {
+    Browser browser = new Browser( shell, SWT.NONE );
+    Event event = createEvent( browser, EventTypes.PROGRESS_CHANGED );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
 
+  public void testAllowProcessingForResizeEventOnDisabledControl() {
+    Control control = new Button( shell, SWT.PUSH );
+    control.setEnabled( false );
+    Event event = createEvent( control, SWT.Resize );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForMoveEventOnDisabledControl() {
+    Control control = new Button( shell, SWT.PUSH );
+    control.setEnabled( false );
+    Event event = createEvent( control, SWT.Move );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForModifyEventOnDisabledText() {
+    Text text = new Text( shell, SWT.PUSH );
+    text.setEnabled( false );
+    Event event = createEvent( text, SWT.Modify );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForVerifyEventOnDisabledText() {
+    Text text = new Text( shell, SWT.PUSH );
+    text.setEnabled( false );
+    Event event = createEvent( text, SWT.Verify );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForPaintEventOnDisabledControl() {
+    Control control = new Canvas( shell, SWT.PUSH );
+    control.setEnabled( false );
+    Event event = createEvent( control, SWT.Paint );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
+  public void testAllowProcessingForSetDataEventOnDisabledControl() {
+    Control text = new Canvas( shell, SWT.PUSH );
+    text.setEnabled( false );
+    Event event = createEvent( text, SWT.SetData );
+    
+    boolean accessible = EventUtil.allowProcessing( event );
+    
+    assertTrue( accessible );
+  }
+  
   public void testЕventNotFiredOnDisabledButton() {
     Button button = new Button( shell, SWT.PUSH );
     button.setEnabled( false );
@@ -176,4 +272,11 @@
     verify( selectionListener ).widgetSelected( any( SelectionEvent.class ) );
   }
 
+  private static Event createEvent( Widget widget, int eventType ) {
+    Event result = new Event();
+    result.widget = widget;
+    result.type = eventType;
+    return result;
+  }
+
 }
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/displaykit/DNDSupport_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/displaykit/DNDSupport_Test.java
index 1482d14..6b3fe45 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/displaykit/DNDSupport_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/displaykit/DNDSupport_Test.java
@@ -22,6 +22,7 @@
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import junit.framework.TestCase;
@@ -60,7 +61,7 @@
 
   private Display display;
   private Shell shell;
-  private java.util.List<TypedEvent> log;
+  private List<TypedEvent> log;
   private Control sourceControl;
   private Control targetControl;
   private DragSource dragSource;
@@ -70,7 +71,6 @@
   @Override
   protected void setUp() throws Exception {
     Fixture.setUp();
-    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     display = new Display();
     shell = new Shell( display );
     shell.open();
@@ -78,6 +78,7 @@
     targetControl = new Label( shell, SWT.NONE );
     log = new ArrayList<TypedEvent>();
     Fixture.fakeNewRequest( display );
+    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     transfers = new Transfer[] {
       HTMLTransfer.getInstance(),
       TextTransfer.getInstance()
@@ -185,7 +186,7 @@
     createDropTarget( DND.DROP_MOVE );
     addLogger( dragSource );
     addLogger( dropTarget );
-    addSetDataListener( dragSource, "text" );
+    addSetDragDataListener( dragSource, "text" );
 
     fakeDropTargetEvent( "dropAccept", 1 );
     fakeDragSourceEvent( "dragFinished", 2 );
@@ -200,7 +201,7 @@
     createDropTarget( DND.DROP_MOVE );
     addLogger( dragSource );
     addLogger( dropTarget );
-    addSetDataListener( dragSource, "Hello World!" );
+    addSetDragDataListener( dragSource, "Hello World!" );
 
 
     createDropTargetEvent( "dropAccept", 0, 0, "move", getTextType(), 1 );
@@ -217,7 +218,7 @@
     createDropTarget( DND.DROP_MOVE );
     addLogger( dragSource );
     addLogger( dropTarget );
-    addSetDataListener( dragSource, new Date() );
+    addSetDragDataListener( dragSource, new Date() );
 
     SWTException exception = null;
 
@@ -251,7 +252,7 @@
       }
     } );
     addLogger( dragSource );
-    addSetDataListener( dragSource, "data" );
+    addSetDragDataListener( dragSource, "data" );
 
 
     fakeDropTargetEvent( "dropAccept", 1 );
@@ -327,7 +328,7 @@
     createDragSource( DND.DROP_MOVE | DND.DROP_COPY );
     createDropTarget( DND.DROP_MOVE | DND.DROP_COPY );
     addLogger( dragSource );
-    addSetDataListener( dragSource, "text Data" );
+    addSetDragDataListener( dragSource, "text Data" );
     dropTarget.addDropListener( new DropTargetAdapter() {
       @Override
       public void dropAccept( DropTargetEvent event ) {
@@ -403,9 +404,9 @@
   public void testDragSetDataDataType() {
     createDragSource( DND.DROP_MOVE );
     createDropTarget( DND.DROP_MOVE );
+    addSetDragDataListener( dragSource, "string" );
     addLogger( dropTarget );
     addLogger( dragSource );
-    addSetDataListener( dragSource, "string" );
 
     fakeDropTargetEvent( "dropAccept", 0 );
     Fixture.readDataAndProcessAction( display );
@@ -472,14 +473,14 @@
   public void testDropAcceptWithDetailChangedOnEnter() {
     createDragSource( DND.DROP_MOVE | DND.DROP_LINK | DND.DROP_COPY );
     createDropTarget( DND.DROP_MOVE | DND.DROP_LINK | DND.DROP_COPY );
-    addSetDataListener( dragSource, "some data" );
-    addLogger( dropTarget );
+    addSetDragDataListener( dragSource, "some data" );
     dropTarget.addDropListener( new DropTargetAdapter() {
       @Override
       public void dragEnter( DropTargetEvent event ) {
         event.detail = DND.DROP_COPY;
       }
     } );
+    addLogger( dropTarget );
 
     Fixture.executeLifeCycleFromServerThread(); // clear pending message operations
     Fixture.fakeNewRequest( display );
@@ -779,10 +780,10 @@
   }
 
   private void addLogger( DropTarget dropTarget ) {
-    dropTarget.addDropListener( new LogingDropTargetListener() );
+    dropTarget.addDropListener( new LoggingDropTargetListener() );
   }
 
-  private class LogingDropTargetListener implements DropTargetListener {
+  private class LoggingDropTargetListener implements DropTargetListener {
     public void dragEnter( DropTargetEvent event ) {
       log.add( event );
     }
@@ -811,7 +812,7 @@
     return result;
   }
 
-  private void addSetDataListener( DragSource dragSource, final Object data ) {
+  private void addSetDragDataListener( DragSource dragSource, final Object data ) {
     dragSource.addDragListener( new DragSourceAdapter() {
       @Override
       public void dragSetData( DragSourceEvent event ) {
@@ -820,12 +821,12 @@
     } );
   }
 
-  private DropTargetEvent getDropTargetEvent( int i ) {
-    return ( DropTargetEvent )log.get( i );
+  private DropTargetEvent getDropTargetEvent( int index ) {
+    return ( DropTargetEvent )log.get( index );
   }
 
-  private DragSourceEvent getDragSourceEvent( int i ) {
-    return ( DragSourceEvent )log.get( i );
+  private DragSourceEvent getDragSourceEvent( int index ) {
+    return ( DragSourceEvent )log.get( index );
   }
 
 }
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/shellkit/ShellLCA_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/shellkit/ShellLCA_Test.java
index b6f43bd..c641c0e 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/shellkit/ShellLCA_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/shellkit/ShellLCA_Test.java
@@ -74,6 +74,7 @@
     display = new Display();
     shell = new Shell( display );
     Fixture.fakeNewRequest( display );
+    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
   }
 
   @Override
@@ -271,8 +272,9 @@
   }
 
   public void testUntypedActivateEvent() {
-    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     shell.open();
+    Shell otherShell = new Shell( display );
+    otherShell.open();
     Listener listener = mock( Listener.class );
     shell.addListener( SWT.Activate, listener );
 
@@ -283,8 +285,9 @@
   }
 
   public void testTypedActivateEvent() {
-    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     shell.open();
+    Shell otherShell = new Shell( display );
+    otherShell.open();
     ShellListener listener = mock( ShellListener.class );
     shell.addShellListener( listener );
 
@@ -319,7 +322,6 @@
   }
 
   public void testShellActivate() {
-    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     final StringBuilder activateEventLog = new StringBuilder();
     Listener activateListener = new Listener() {
       public void handleEvent( Event event ) {
@@ -366,8 +368,6 @@
 
     assertSame( shellToActivate, display.getActiveShell() );
     String expected = "deactivated:activeShell|activated:shellToActivate|";
-System.out.println( "expected " + expected );    
-System.out.println( "actual   " + activateEventLog.toString() );    
     assertEquals( expected, activateEventLog.toString() );
     assertEquals( expected, shellEventLog.toString() );
     // Ensure that no setActive javaScript code is rendered for client-side activated Shell
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java
index 4412504..5d18e46 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java
@@ -16,6 +16,7 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -400,11 +401,8 @@
     Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     shell.setSize( 100, 100 );
     Table table = new Table( shell, SWT.VIRTUAL );
-    table.addListener( SWT.SetData, new Listener() {
-      public void handleEvent( Event event ) {
-        fail( "Must not trigger SetData event" );
-      }
-    } );
+    Listener setDataListener = mock( Listener.class );
+    table.addListener( SWT.SetData, setDataListener );
     
     Fixture.fakePhase( PhaseId.READ_DATA );
     table.setItemCount( 1 );
@@ -413,11 +411,9 @@
 
     Fixture.fakePhase( PhaseId.PROCESS_ACTION );
     table.setItemCount( 0 );
-    int eventCount = 0;
     while( display.readAndDispatch() ) {
-      eventCount++;
     }
-    assertEquals( 1, eventCount );
+    verifyZeroInteractions( setDataListener );
   }
 
   public void testGetItemMetrics() {
@@ -728,9 +724,8 @@
     Fixture.readDataAndProcessAction( table );
 
     ArgumentCaptor<SelectionEvent> captor = ArgumentCaptor.forClass( SelectionEvent.class );
-    verify( listener, times( 1 ) ).widgetSelected( captor.capture() );
+    verify( listener ).widgetSelected( captor.capture() );
     assertSame( table.getItem( 2 ), captor.getValue().item );
-    assertEquals( "", captor.getValue().text );
   }
 
   public void testRenderNonNegativeImageWidth() {