Add SetData handler in TreeOperationHandler
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ClientMessageConst.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ClientMessageConst.java
index c48cdfd..3430cc3 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ClientMessageConst.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ClientMessageConst.java
@@ -42,6 +42,7 @@
   public static final String EVENT_MENU_DETECT = "MenuDetect";
   public static final String EVENT_FOCUS_IN = "FocusIn";
   public static final String EVENT_FOCUS_OUT = "FocusOut";
+  public static final String EVENT_SET_DATA = "SetData";
 
   // CTabFolder specific events
   public static final String EVENT_FOLDER = "Folder";
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
index 182046c..f61808e 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
@@ -15,6 +15,7 @@
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_EXPAND;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_PARAM_ITEM;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_SELECTION;
+import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_SET_DATA;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.find;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 
@@ -70,6 +71,8 @@
       handleNotifyExpand( tree, properties );
     } else if( EVENT_COLLAPSE.equals( eventName ) ) {
       handleNotifyCollapse( tree, properties );
+    } else if( EVENT_SET_DATA.equals( eventName ) ) {
+      handleNotifySetData( tree, properties );
     } else {
       super.handleNotify( tree, eventName, properties );
     }
@@ -200,6 +203,13 @@
     tree.notifyListeners( SWT.Collapse, event );
   }
 
+  /*
+   * PROTOCOL NOTIFY SetData
+   * ignored, SetData event is fired when set topItemIndex
+   */
+  public void handleNotifySetData( Tree tree, JsonObject properties ) {
+  }
+
   private TreeItem getItem( Tree tree, String itemId ) {
     TreeItem item = null;
     String[] idParts = itemId.split( "#" );
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler_Test.java
index a67df79..2efb47c 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler_Test.java
@@ -22,6 +22,7 @@
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_MOUSE_DOWN;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_MOUSE_UP;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_SELECTION;
+import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_SET_DATA;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_TRAVERSE;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 import static org.junit.Assert.assertArrayEquals;
@@ -29,6 +30,7 @@
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -439,6 +441,13 @@
   }
 
   @Test
+  public void testHandleNotifySetData() {
+    handler.handleNotify( EVENT_SET_DATA, new JsonObject() );
+
+    verify( mockedTree, never() ).notifyListeners( eq( SWT.SetData ), any( Event.class ) );
+  }
+
+  @Test
   public void testHandleCallRenderToolTipText() {
     handler = new TreeOperationHandler( tree );
     TreeItem item = new TreeItem( tree, SWT.NONE );