Replace "left"/"width" properties of Grid with "move"/"resize" call
diff --git a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA.java b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA.java
index 68d1088..7f14837 100644
--- a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA.java
+++ b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA.java
@@ -10,10 +10,12 @@
  ******************************************************************************/
 package org.eclipse.nebula.widgets.grid.internal.gridcolumnkit;
 
+import static org.eclipse.rap.rwt.internal.protocol.ProtocolUtil.readCallPropertyValueAsString;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.preserveListener;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.preserveProperty;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderListener;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderProperty;
+import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -131,8 +133,9 @@
   // Helping methods to read client-side state
 
   private static void readLeft( final GridColumn column ) {
-    String value = WidgetLCAUtil.readPropertyValue( column, "left" );
-    if( value != null ) {
+    String methodName = "move";
+    if( ProtocolUtil.wasCallSend( getId( column ), methodName ) ) {
+      String value = readCallPropertyValueAsString( getId( column ), methodName, "left" );
       final int newLeft = NumberFormatUtil.parseInt( value );
       ProcessActionRunner.add( new Runnable() {
         public void run() {
@@ -143,8 +146,9 @@
   }
 
   private static void readWidth( final GridColumn column ) {
-    String value = WidgetLCAUtil.readPropertyValue( column, "width" );
-    if( value != null ) {
+    String methodName = "resize";
+    if( ProtocolUtil.wasCallSend( getId( column ), methodName ) ) {
+      String value = readCallPropertyValueAsString( getId( column ), methodName, "width" );
       final int newWidth = NumberFormatUtil.parseInt( value );
       ProcessActionRunner.add( new Runnable() {
         public void run() {
diff --git a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
index 463cc32..16187c0 100644
--- a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
+++ b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
@@ -13,6 +13,7 @@
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_PARAM_DETAIL;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_PARAM_INDEX;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_PARAM_ITEM;
+import static org.eclipse.rap.rwt.internal.protocol.ProtocolUtil.readCallPropertyValueAsString;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.preserveListener;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.preserveProperty;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.readEventPropertyValue;
@@ -27,12 +28,10 @@
 import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.nebula.widgets.grid.internal.IGridAdapter;
 import org.eclipse.rap.rwt.RWT;
-import org.eclipse.rap.rwt.internal.protocol.ClientMessage;
 import org.eclipse.rap.rwt.internal.protocol.ClientObjectFactory;
 import org.eclipse.rap.rwt.internal.protocol.IClientObject;
 import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst;
 import org.eclipse.rap.rwt.internal.protocol.ProtocolUtil;
-import org.eclipse.rap.rwt.internal.protocol.ClientMessage.CallOperation;
 import org.eclipse.rap.rwt.internal.util.NumberFormatUtil;
 import org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA;
 import org.eclipse.rap.rwt.lifecycle.ControlLCAUtil;
@@ -240,18 +239,14 @@
     ICellToolTipAdapter adapter = CellToolTipUtil.getAdapter( grid );
     adapter.setCellToolTipText( null );
     ICellToolTipProvider provider = adapter.getCellToolTipProvider();
-    if( provider != null ) {
-      ClientMessage message = ProtocolUtil.getClientMessage();
-      CallOperation[] operations
-        = message.getAllCallOperationsFor( getId( grid ), "renderToolTipText" );
-      if( operations.length > 0 ) {
-        CallOperation operation = operations[ operations.length - 1 ];
-        String itemId = ( String )operation.getProperty( "item" );
-        int columnIndex = ( ( Integer )operation.getProperty( "column" ) ).intValue();
-        GridItem item = getItem( grid, itemId );
-        if( item != null && ( columnIndex == 0 || columnIndex < grid.getColumnCount() ) ) {
-          provider.getToolTipText( item, columnIndex );
-        }
+    String methodName = "renderToolTipText";
+    if( provider != null && ProtocolUtil.wasCallSend( getId( grid ), methodName ) ) {
+      String itemId = readCallPropertyValueAsString( getId( grid ), methodName, "item" );
+      String column = readCallPropertyValueAsString( getId( grid ), methodName, "column" );
+      int columnIndex = NumberFormatUtil.parseInt( column );
+      GridItem item = getItem( grid, itemId );
+      if( item != null && ( columnIndex == 0 || columnIndex < grid.getColumnCount() ) ) {
+        provider.getToolTipText( item, columnIndex );
       }
     }
   }
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
index f921929..a1813b8 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
@@ -15,12 +15,15 @@
 import static org.eclipse.nebula.widgets.grid.internal.gridkit.GridLCATestUtil.jsonEquals;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.nebula.widgets.grid.Grid;
 import org.eclipse.nebula.widgets.grid.GridColumn;
 import org.eclipse.nebula.widgets.grid.GridColumnGroup;
+import org.eclipse.rap.rwt.RWT;
 import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst;
 import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.rap.rwt.testfixture.Fixture;
@@ -155,7 +158,7 @@
   }
 
   public void testRenderCustomVariant() throws IOException {
-    column.setData( WidgetUtil.CUSTOM_VARIANT, "blue" );
+    column.setData( RWT.CUSTOM_VARIANT, "blue" );
     lca.renderChanges( column );
 
     Message message = Fixture.getProtocolMessage();
@@ -166,7 +169,7 @@
     Fixture.markInitialized( display );
     Fixture.markInitialized( column );
 
-    column.setData( WidgetUtil.CUSTOM_VARIANT, "blue" );
+    column.setData( RWT.CUSTOM_VARIANT, "blue" );
     Fixture.preserveWidgets();
     lca.renderChanges( column );
 
@@ -527,7 +530,9 @@
     int newWidth = columns[ 0 ].getWidth() + 2;
     int newLeft = column.getWidth() + newWidth;
     Fixture.fakeNewRequest( display );
-    Fixture.fakeSetParameter( getId( columns[ 0 ] ), "width", Integer.valueOf( newWidth ) );
+    Map<String, Object> parameters = new HashMap<String, Object>();
+    parameters.put( "width", Integer.valueOf( newWidth ) );
+    Fixture.fakeCallOperation( getId( columns[ 0 ] ), "resize", parameters );
     Fixture.executeLifeCycleFromServerThread();
 
     assertEquals( 2, events.size() );
@@ -556,7 +561,9 @@
     // Simulate request that changes column left
     int newLeft = 3;
     Fixture.fakeNewRequest( display );
-    Fixture.fakeSetParameter( getId( columns[ 0 ] ), "left", Integer.valueOf( newLeft ) );
+    Map<String, Object> parameters = new HashMap<String, Object>();
+    parameters.put( "left", Integer.valueOf( newLeft ) );
+    Fixture.fakeCallOperation( getId( columns[ 0 ] ), "move", parameters );
     Fixture.executeLifeCycleFromServerThread();
 
     assertEquals( 2, events.size() );