Read Grid selection as string array
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 c531ad6..6ca5335 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
@@ -19,6 +19,7 @@
import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.readEventPropertyValue;
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;
@@ -30,6 +31,7 @@
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.util.NumberFormatUtil;
import org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA;
import org.eclipse.rap.rwt.lifecycle.ControlLCAUtil;
@@ -95,7 +97,7 @@
Grid grid = ( Grid )widget;
IClientObject clientObject = ClientObjectFactory.getClientObject( grid );
clientObject.create( TYPE );
- clientObject.set( "parent", WidgetUtil.getId( grid.getParent() ) );
+ clientObject.set( "parent", getId( grid.getParent() ) );
clientObject.set( "style", WidgetLCAUtil.getStyles( grid, ALLOWED_STYLES ) );
clientObject.set( "appearance", "tree" );
IGridAdapter adapter = getGridAdapter( grid );
@@ -196,9 +198,8 @@
// Helping methods to read client-side state
private static void readSelection( Grid grid ) {
- String value = WidgetLCAUtil.readPropertyValue( grid, "selection" );
- if( value != null ) {
- String[] values = value.split( "," );
+ String[] values = ProtocolUtil.readPropertyValueAsStringArray( getId( grid ), "selection" );
+ if( values != null ) {
GridItem[] selectedItems = new GridItem[ values.length ];
boolean validItemFound = false;
for( int i = 0; i < values.length; i++ ) {
@@ -291,7 +292,7 @@
GridItem[] selection = grid.getSelection();
String[] result = new String[ selection.length ];
for( int i = 0; i < result.length; i++ ) {
- result[ i ] = WidgetUtil.getId( selection[ i ] );
+ result[ i ] = getId( selection[ i ] );
}
return result;
}
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
index a4935df..fdef84e 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
@@ -851,7 +851,7 @@
Fixture.fakeNewRequest( display );
Fixture.fakeSetParameter( getId( grid ),
"selection",
- getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+ new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
Fixture.readDataAndProcessAction( grid );
GridItem[] selectedItems = grid.getSelection();
@@ -867,7 +867,7 @@
Fixture.fakeNewRequest( display );
Fixture.fakeSetParameter( getId( grid ),
"selection",
- getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+ new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
Fixture.readDataAndProcessAction( grid );
GridItem[] selectedItems = grid.getSelection();