Read focusItem in GridLCA
399884: [Grid] getFocusItem always return null
https://bugs.eclipse.org/bugs/show_bug.cgi?id=399884
diff --git a/bundles/org.eclipse.rap.nebula.widgets.grid.snippets/src/org/eclipse/rap/nebula/widgets/grid/snippets/GridSnippet.java b/bundles/org.eclipse.rap.nebula.widgets.grid.snippets/src/org/eclipse/rap/nebula/widgets/grid/snippets/GridSnippet.java
index 1767588..a403e89 100644
--- a/bundles/org.eclipse.rap.nebula.widgets.grid.snippets/src/org/eclipse/rap/nebula/widgets/grid/snippets/GridSnippet.java
+++ b/bundles/org.eclipse.rap.nebula.widgets.grid.snippets/src/org/eclipse/rap/nebula/widgets/grid/snippets/GridSnippet.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012 EclipseSource and others.
+ * Copyright (c) 2012, 2013 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,6 +11,8 @@
package org.eclipse.rap.nebula.widgets.grid.snippets;
import java.util.Arrays;
+
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.nebula.widgets.grid.Grid;
import org.eclipse.nebula.widgets.grid.GridColumn;
import org.eclipse.nebula.widgets.grid.GridColumnGroup;
@@ -31,6 +33,7 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
@SuppressWarnings("serial")
@@ -54,6 +57,7 @@
createShowColumnGroup( parent );
createShowHeaderButton( parent );
createShowFooterButton( parent );
+ createQueryFocusItem( parent );
}
@Override
@@ -345,6 +349,19 @@
} );
}
+ private void createQueryFocusItem( Composite parent ) {
+ Button button = new Button( parent, SWT.PUSH );
+ button.setText( "Query focusItem" );
+ button.addSelectionListener( new SelectionAdapter() {
+ @Override
+ public void widgetSelected( SelectionEvent e ) {
+ Shell shell = grid.getShell();
+ String msg = "Current focusItem: " + grid.getFocusItem();
+ MessageDialog.openInformation( shell, "Information", msg );
+ }
+ } );
+ }
+
private void updateItemsText( int startIndex ) {
for( int index = startIndex; index < grid.getItemCount(); index++ ) {
GridItem item = grid.getItem( index );
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 5874d50..72205bd 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012 EclipseSource and others.
+ * Copyright (c) 2012, 2013 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -28,9 +28,9 @@
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.ClientMessageConst;
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;
@@ -112,6 +112,7 @@
readSelection( grid );
readScrollLeft( grid );
readTopItemIndex( grid );
+ readFocusItem( grid );
readCellToolTipTextRequested( grid );
processSelectionEvent( grid, ClientMessageConst.EVENT_SELECTION );
processSelectionEvent( grid, ClientMessageConst.EVENT_DEFAULT_SELECTION );
@@ -235,6 +236,16 @@
}
}
+ private static void readFocusItem( Grid grid ) {
+ String value = WidgetLCAUtil.readPropertyValue( grid, "focusItem" );
+ if( value != null ) {
+ GridItem item = getItem( grid, value );
+ if( item != null ) {
+ grid.setFocusItem( item );
+ }
+ }
+ }
+
////////////////
// Cell tooltips
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 4cd33a9..3f1a974 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012 EclipseSource and others.
+ * Copyright (c) 2012, 2013 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -25,6 +25,8 @@
import java.util.List;
import java.util.Map;
+import junit.framework.TestCase;
+
import org.eclipse.nebula.widgets.grid.Grid;
import org.eclipse.nebula.widgets.grid.GridColumn;
import org.eclipse.nebula.widgets.grid.GridItem;
@@ -50,8 +52,6 @@
import org.json.JSONArray;
import org.json.JSONException;
-import junit.framework.TestCase;
-
@SuppressWarnings("restriction")
public class GridLCA_Test extends TestCase {
@@ -1135,6 +1135,15 @@
assertNull( message.findListenOperation( grid, "SetData" ) );
}
+ public void testReadFocusItem() {
+ GridItem[] items = createGridItems( grid, 3, 1 );
+
+ Fixture.fakeSetParameter( getId( grid ), "focusItem", getId( items[ 2 ] ) );
+ lca.readData( grid );
+
+ assertSame( items[ 2 ], grid.getFocusItem() );
+ }
+
//////////////////
// Helping methods