Use String instead of int for event type in internal package
diff --git a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/ClientListener.java b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/ClientListener.java
index 805600c..e34a59c 100644
--- a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/ClientListener.java
+++ b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/ClientListener.java
@@ -12,6 +12,7 @@
 
 import org.eclipse.rap.clientscripting.internal.ClientFunction;
 import org.eclipse.rap.clientscripting.internal.ClientListenerBinding;
+import org.eclipse.rap.clientscripting.internal.ClientListenerUtil;
 import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Event;
@@ -81,7 +82,8 @@
     if( widget.isDisposed() ) {
       throw new IllegalArgumentException( "Widget is disposed" );
     }
-    final ClientListenerBinding binding = addTo( WidgetUtil.getId( widget ), eventType );
+    String eventTypeString = ClientListenerUtil.getEventType( eventType );
+    final ClientListenerBinding binding = addTo( WidgetUtil.getId( widget ), eventTypeString );
     if( binding != null ) {
       widget.addListener( SWT.Dispose, new Listener() {
         public void handleEvent( Event event ) {
@@ -99,7 +101,7 @@
     if( widget == null ) {
       throw new NullPointerException( "widget is null" );
     }
-    removeFrom( WidgetUtil.getId( widget ), eventType );
+    removeFrom( WidgetUtil.getId( widget ), ClientListenerUtil.getEventType( eventType ) );
   }
 
   /**
diff --git a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
index 58c02e2..f562179 100644
--- a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
+++ b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
@@ -44,7 +44,7 @@
     return bindings;
   }
 
-  protected ClientListenerBinding addTo( String targetId, int eventType ) {
+  protected ClientListenerBinding addTo( String targetId, String eventType ) {
     if( findBinding( targetId, eventType ) == null ) {
       ClientListenerBinding binding = new ClientListenerBinding( this, targetId, eventType );
       bindings.add( binding );
@@ -54,7 +54,7 @@
     }
   }
 
-  protected void removeFrom( String targetId, int eventType ) {
+  protected void removeFrom( String targetId, String eventType ) {
     ClientListenerBinding binding = findBinding( targetId, eventType );
     if( binding != null ) {
       binding.dispose();
@@ -62,9 +62,11 @@
     }
   }
 
-  ClientListenerBinding findBinding( String targetId, int eventType ) {
+  ClientListenerBinding findBinding( String targetId, String eventType ) {
     for( ClientListenerBinding binding : bindings ) {
-      if( binding.getTargetId() ==  targetId && binding.getEventType() == eventType ) {
+      if(    binding.getTargetId().equals( targetId )
+          && binding.getEventType().equals( eventType ) )
+      {
         return binding;
       }
     }
diff --git a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding.java b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding.java
index a4dacf5..4dbcda0 100644
--- a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding.java
+++ b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding.java
@@ -20,25 +20,25 @@
 
   private final ClientFunction function;
   private final String targetId;
-  private final int eventType;
+  private final String eventType;
   private final RemoteObject remoteObject;
   private boolean disposed;
 
-  public ClientListenerBinding( ClientFunction function, String targetId, int eventType ) {
+  public ClientListenerBinding( ClientFunction function, String targetId, String eventType ) {
     this.function = function;
     this.targetId = targetId;
     this.eventType = eventType;
     remoteObject = RWT.getUISession().getConnection().createRemoteObject( REMOTE_TYPE );
     remoteObject.set( "listener", function.getRemoteId() );
     remoteObject.set( "targetObject", targetId );
-    remoteObject.set( "eventType", ClientListenerUtil.getEventType( eventType ) );
+    remoteObject.set( "eventType", eventType );
   }
 
   public String getTargetId() {
     return targetId;
   }
 
-  public int getEventType() {
+  public String getEventType() {
     return eventType;
   }
 
@@ -60,7 +60,10 @@
       result = true;
     } else if( obj != null && getClass() == obj.getClass() ) {
       ClientListenerBinding other = ( ClientListenerBinding )obj;
-      if( eventType == other.eventType && targetId == other.targetId && function == other.function ) {
+      if( eventType.equals( other.eventType )
+          && targetId.equals( other.targetId )
+          && function == other.function )
+      {
         result = true;
       }
     }
@@ -71,7 +74,7 @@
   public int hashCode() {
     final int prime = 31;
     int result = 1;
-    result = prime * result + eventType;
+    result = prime * result + eventType.hashCode();
     result = prime * result + targetId.hashCode();
     result = prime * result + function.hashCode();
     return result;
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/ClientListener_Test.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/ClientListener_Test.java
index 91c4204..87415f1 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/ClientListener_Test.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/ClientListener_Test.java
@@ -165,10 +165,10 @@
   public void testRemoveFrom_disposesBinding() {
     Label label = new Label( shell, SWT.NONE );
     listener.addTo( label, SWT.MouseDown );
+    ClientListenerBinding binding = findBinding( listener, label, SWT.MouseDown );
 
     listener.removeFrom( label, SWT.MouseDown );
 
-    ClientListenerBinding binding = findBinding( listener, label, SWT.MouseDown );
     assertTrue( binding.isDisposed() );
   }
 
@@ -176,11 +176,11 @@
   public void testRemoveFrom_mayBeCalledTwice() {
     Label label = new Label( shell, SWT.NONE );
     listener.addTo( label, SWT.MouseDown );
-
-    listener.removeFrom( label, SWT.MouseDown );
-    listener.removeFrom( label, SWT.MouseDown );
-
     ClientListenerBinding binding = findBinding( listener, label, SWT.MouseDown );
+
+    listener.removeFrom( label, SWT.MouseDown );
+    listener.removeFrom( label, SWT.MouseDown );
+
     assertTrue( binding.isDisposed() );
   }
 
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
index 5f14d91..afd334c 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
@@ -25,13 +25,11 @@
 import org.eclipse.rap.rwt.remote.Connection;
 import org.eclipse.rap.rwt.remote.RemoteObject;
 import org.eclipse.rap.rwt.testfixture.Fixture;
-import org.eclipse.swt.SWT;
 import org.junit.*;
 
 
 public class ClientFunction_Test {
 
-  private static final String TARGET_ID = "w101";
   private static final String CLIENT_LISTENER_TYPE =  "rwt.clientscripting.Listener";
   private static final String LISTENER_BINDING_TYPE =  "rwt.clientscripting.EventBinding";
 
@@ -80,17 +78,17 @@
 
   @Test
   public void testAddTo_createsBinding() {
-    function.addTo( TARGET_ID, SWT.MouseDown );
+    function.addTo( "w101", "MouseDown" );
 
-    assertNotNull( function.findBinding( TARGET_ID, SWT.MouseDown ) );
+    assertNotNull( function.findBinding( "w101", "MouseDown" ) );
   }
 
   @Test
   public void testAddTo_ignoresSubsequentCalls() {
     Connection connection = fakeConnection( mock( RemoteObject.class ), LISTENER_BINDING_TYPE );
 
-    function.addTo( TARGET_ID, SWT.KeyDown );
-    function.addTo( TARGET_ID, SWT.KeyDown );
+    function.addTo( "w101", "KeyDown" );
+    function.addTo( "w101", "KeyDown" );
 
     assertEquals( 1, function.getBindings().size() );
     verify( connection, times( 1 ) ).createRemoteObject( eq( LISTENER_BINDING_TYPE ) );
@@ -98,39 +96,39 @@
 
   @Test
   public void testRemoveFrom_disposesBinding() {
-    function.addTo( TARGET_ID, SWT.MouseDown );
-    ClientListenerBinding binding = function.findBinding( TARGET_ID, SWT.MouseDown );
+    function.addTo( "w101", "MouseDown" );
+    ClientListenerBinding binding = function.findBinding( "w101", "MouseDown" );
 
-    function.removeFrom( TARGET_ID, SWT.MouseDown );
+    function.removeFrom( "w101", "MouseDown" );
 
     assertTrue( binding.isDisposed() );
   }
 
   @Test
   public void testRemoveFrom_RemovesBindingFromList() {
-    function.addTo( TARGET_ID, SWT.MouseDown );
+    function.addTo( "w101", "MouseDown" );
 
-    function.removeFrom( TARGET_ID, SWT.MouseDown );
+    function.removeFrom( "w101", "MouseDown" );
 
-    assertNull( function.findBinding( TARGET_ID, SWT.MouseDown ) );
+    assertNull( function.findBinding( "w101", "MouseDown" ) );
   }
 
   @Test
   public void testRemoveFrom_mayBeCalledTwice() {
-    function.addTo( TARGET_ID, SWT.MouseDown );
-    ClientListenerBinding binding = function.findBinding( TARGET_ID, SWT.MouseDown );
+    function.addTo( "w101", "MouseDown" );
+    ClientListenerBinding binding = function.findBinding( "w101", "MouseDown" );
 
-    function.removeFrom( TARGET_ID, SWT.MouseDown );
-    function.removeFrom( TARGET_ID, SWT.MouseDown );
+    function.removeFrom( "w101", "MouseDown" );
+    function.removeFrom( "w101", "MouseDown" );
 
     assertTrue( binding.isDisposed() );
   }
 
   @Test
   public void testRemoveFrom_ignoresNonExistingBinding() {
-    function.removeFrom( TARGET_ID, SWT.MouseDown );
+    function.removeFrom( "w101", "MouseDown" );
 
-    assertNull( function.findBinding( TARGET_ID, SWT.MouseDown ) );
+    assertNull( function.findBinding( "w101", "MouseDown" ) );
   }
 
   private void createListener() {
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
index f36d21a..daa644d 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
@@ -22,14 +22,11 @@
 import org.eclipse.rap.rwt.remote.Connection;
 import org.eclipse.rap.rwt.remote.RemoteObject;
 import org.eclipse.rap.rwt.testfixture.Fixture;
-import org.eclipse.swt.SWT;
 import org.junit.*;
 
 
 public class ClientListenerBinding_Test {
 
-  private static final String TARGET_ID_1 = "w101";
-  private static final String TARGET_ID_2 = "w102";
   private static final String LISTENER_BINDING_TYPE =  "rwt.clientscripting.EventBinding";
 
   private ClientListener listener1;
@@ -73,15 +70,15 @@
 
   @Test
   public void testCreation() {
-    assertEquals( TARGET_ID_1, binding.getTargetId() );
-    assertEquals( SWT.MouseDown, binding.getEventType() );
+    assertEquals( "w101", binding.getTargetId() );
+    assertEquals( "MouseDown", binding.getEventType() );
   }
 
   @Test
   public void testCreation_createsRemoteObject() {
     Connection connection = fakeConnection( mock( RemoteObject.class ), LISTENER_BINDING_TYPE );
 
-    binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
+    binding = new ClientListenerBinding( listener1, "w101", "KeyDown" );
 
     verify( connection ).createRemoteObject( eq( "rwt.clientscripting.EventBinding" ) );
   }
@@ -91,10 +88,10 @@
     RemoteObject remoteObject = mock( RemoteObject.class );
     fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
 
-    binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
+    binding = new ClientListenerBinding( listener1, "w101", "KeyDown" );
 
     verify( remoteObject ).set( eq( "listener" ), eq( listener1.getRemoteId() ) );
-    verify( remoteObject ).set( eq( "targetObject" ), eq( TARGET_ID_1 ) );
+    verify( remoteObject ).set( eq( "targetObject" ), eq( "w101" ) );
     verify( remoteObject ).set( eq( "eventType" ), eq( "KeyDown" ) );
   }
 
@@ -102,7 +99,7 @@
   public void testDispose_destroysRemoteObject() {
     RemoteObject remoteObject = mock( RemoteObject.class );
     fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
-    binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
+    binding = new ClientListenerBinding( listener1, "w101", "KeyDown" );
 
     binding.dispose();
 
@@ -113,7 +110,7 @@
   public void testDispose_mayBeCalledTwice() {
     RemoteObject remoteObject = mock( RemoteObject.class );
     fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
-    binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
+    binding = new ClientListenerBinding( listener1, "w101", "KeyDown" );
 
     binding.dispose();
     binding.dispose();
@@ -139,11 +136,11 @@
   }
 
   private void createBindingss() {
-    binding = new ClientListenerBinding( listener1, TARGET_ID_1, SWT.MouseDown );
-    equalBinding = new ClientListenerBinding( listener1, TARGET_ID_1, SWT.MouseDown );
-    bindingWithDifferentWidget = new ClientListenerBinding( listener1, TARGET_ID_2, SWT.MouseDown );
-    bindingWithDifferentEvent = new ClientListenerBinding( listener1, TARGET_ID_1, SWT.MouseUp );
-    bindingWithDifferentListener = new ClientListenerBinding( listener2, TARGET_ID_1, SWT.MouseDown );
+    binding = new ClientListenerBinding( listener1, "w101", "MouseDown" );
+    equalBinding = new ClientListenerBinding( listener1, "w101", "MouseDown" );
+    bindingWithDifferentWidget = new ClientListenerBinding( listener1, "w102", "MouseDown" );
+    bindingWithDifferentEvent = new ClientListenerBinding( listener1, "w101", "MouseUp" );
+    bindingWithDifferentListener = new ClientListenerBinding( listener2, "w101", "MouseDown" );
   }
 
 }
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
index 12f210b..507af28 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
@@ -36,7 +36,7 @@
                                                    int type )
   {
     ClientFunction function = listener; // the IDE does not see findBinding otherwise?
-    return function.findBinding( WidgetUtil.getId( widget ), type );
+    return function.findBinding( WidgetUtil.getId( widget ), ClientListenerUtil.getEventType( type ) );
   }
 
 }