Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 139258 Details for
Bug 280404
[TableViewer] Implement cell tooltips in TableViewer.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
TableViewer cell tooltips implementation.
Table-CellToolTips.patch (text/plain), 26.52 KB, created by
Ivan Furnadjiev
on 2009-06-16 03:56:57 EDT
(
hide
)
Description:
TableViewer cell tooltips implementation.
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2009-06-16 03:56:57 EDT
Size:
26.52 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.rwt.q07.test >Index: src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java,v >retrieving revision 1.19 >diff -u -r1.19 TableLCA_Test.java >--- src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java 28 May 2009 11:37:11 -0000 1.19 >+++ src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java 4 Jun 2009 10:20:28 -0000 >@@ -772,6 +772,42 @@ > assertEquals( 0, table.getTopIndex() ); > } > >+ public void testGetCellToolTipText() { >+ Display display = new Display(); >+ Shell shell = new Shell( display ); >+ Table table = new Table( shell, SWT.NONE ); >+ for( int i = 0; i < 5; i++ ) { >+ new TableItem( table, SWT.NONE ); >+ } >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ final ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ tableAdapter.setCellToolTipProvider( new ICellToolTipProvider() { >+ public void getToolTipText( final int itemIndex, >+ final int columnIndex ) >+ { >+ String text = "[" + itemIndex + "," + columnIndex + "]"; >+ tableAdapter.setToolTipText( text ); >+ } >+ } ); >+ String displayId = DisplayUtil.getId( display ); >+ String tableId = WidgetUtil.getId( table ); >+ RWTFixture.fakeNewRequest(); >+ RWTFixture.executeLifeCycleFromServerThread(); >+ String markup = Fixture.getAllMarkup(); >+ String expected = "w.setCellToolTipText("; >+ assertTrue( markup.indexOf( expected ) == -1 ); >+ RWTFixture.fakeNewRequest(); >+ Fixture.fakeRequestParam( RequestParams.UIROOT, displayId ); >+ Fixture.fakeRequestParam( TableLCA.EVENT_CELL_TOOLTIP_TEXT_REQUESTED, >+ tableId ); >+ Fixture.fakeRequestParam( TableLCA.EVENT_CELL_TOOLTIP_TEXT_REQUESTED_CELL, >+ "1,2" ); >+ RWTFixture.executeLifeCycleFromServerThread(); >+ markup = Fixture.getAllMarkup(); >+ expected = "w.setCellToolTipText( \"[1,2]\" );"; >+ assertTrue( markup.indexOf( expected ) != -1 ); >+ } >+ > protected void setUp() throws Exception { > RWTFixture.setUp(); > } >#P org.eclipse.rap.rwt.q07 >Index: js/org/eclipse/swt/widgets/Table.js >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/widgets/Table.js,v >retrieving revision 1.50 >diff -u -r1.50 Table.js >--- js/org/eclipse/swt/widgets/Table.js 25 May 2009 11:33:40 -0000 1.50 >+++ js/org/eclipse/swt/widgets/Table.js 4 Jun 2009 10:20:30 -0000 >@@ -135,6 +135,14 @@ > var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); > widgetManager.add( this._clientArea, id + "_clientArea", false ); > this.add( this._clientArea ); >+ // Cell tooltip >+ this._cellToolTip = null; >+ if( qx.lang.String.contains( style, "enableCellToolTip" ) ) { >+ this._cellToolTip = new org.eclipse.swt.widgets.TableCellToolTip(); >+ this._cellToolTip.setTableId( id ); >+ this._clientArea.addEventListener( "mousemove", this._onClientAreaMouseMove, this ); >+ this._clientArea.setToolTip( this._cellToolTip ); >+ } > }, > > destruct : function() { >@@ -183,10 +191,17 @@ > if( this._clientArea ) { > this._clientArea.removeEventListener( "mousewheel", this._onClientAreaMouseWheel, this ); > this._clientArea.removeEventListener( "appear", this._onClientAppear, this ); >+ if( this._cellToolTip ) { >+ this._clientArea.removeEventListener( "mousemove", this._onClientAreaMouseMove, this ); >+ } > org.eclipse.swt.WidgetManager.getInstance().remove( this._clientArea ); > this._clientArea.dispose(); > this._clientArea = null; > } >+ if( this._cellToolTip ) { >+ this._cellToolTip.dispose(); >+ this._cellToolTip = null; >+ } > if( this._columnArea ) { > this._columnArea.dispose(); > this._columnArea = null; >@@ -528,7 +543,7 @@ > _onRowClick : function( evt ) { > this._rowClicked( evt, evt.getTarget() ); > }, >- >+ > _rowClicked : function( evt, row ) { > var itemIndex = this._topIndex + this._rows.indexOf( row ); > if( itemIndex >= 0 >@@ -704,7 +719,7 @@ > // regardless which modifier-key(s) are held down > var itemDefaultSelected = -1; > var topSelectedItem = -1; >- for( var i = 0; i < this._selected.length; i++ ) { >+ for( var i = 0; i < this._selected.length; i++ ) { > if( this._focusIndex === this._selected[ i ] ) { > itemDefaultSelected = this._selected[ i ]; > } >@@ -716,7 +731,7 @@ > } > if( itemDefaultSelected === -1 ) { > itemDefaultSelected = topSelectedItem; >- } >+ } > this.createDispatchDataEvent( "itemdefaultselected", > itemDefaultSelected ); > break; >@@ -898,7 +913,7 @@ > this._deselectItem( this._selected[ 0 ], true ); > } > }, >- >+ > _adjustSelectedIndices : function( itemIndex ) { > if( this._isItemSelected( itemIndex ) ) { > for( var i = 0; i < this._selected.length; i++ ) { >@@ -1281,7 +1296,7 @@ > } > } > }, >- >+ > _resolveItem : function( itemIndex ) { > if( !org_eclipse_rap_rwt_EventUtil_suspend ) { > if( this._unresolvedItems === null ) { >@@ -1366,14 +1381,14 @@ > line.setStyleProperty( "visibility", "hidden" ); > } > }, >- >+ > _onGridLinesMouseDown : function( evt ) { >- var row = this._getRowAtPoint( evt.getPageX(), evt.getPageY() ); >+ var row = this._getRowAtPoint( evt.getPageX(), evt.getPageY() ); > if( row != null ) { > this._rowClicked( evt, row ); > } > }, >- >+ > _getRowAtPoint : function( pageX, pageY ) { > var result = null; > for( var i = 0; result === null && i < this._rows.length; i++ ) { >@@ -1381,9 +1396,9 @@ > var element = row.getElement(); > var pageLeft = qx.html.Location.getPageBoxLeft( element ); > var pageTop = qx.html.Location.getPageBoxTop( element ); >- if( pageX >= pageLeft >- && pageX < pageLeft + row.getWidth() >- && pageY >= pageTop >+ if( pageX >= pageLeft >+ && pageX < pageLeft + row.getWidth() >+ && pageY >= pageTop > && pageY < pageTop + row.getHeight() ) > { > result = row; >@@ -1391,7 +1406,7 @@ > } > return result; > }, >- >+ > ////////////////////////////////////////////////////////// > // Focus tracking - may change appearance of selected row > >@@ -1402,7 +1417,7 @@ > _onFocusOut : function( evt ) { > this._updateFocusState() > }, >- >+ > //////////////////////////////////////////////////////////// > // Event handling methods - added and removed by server-side > >@@ -1452,7 +1467,39 @@ > this._leftOffsetChanged = false; > } > } >+ }, >+ >+ //////////////////////// >+ // Cell tooltip handling >+ >+ _onClientAreaMouseMove : function( evt ) { >+ if( this._cellToolTip != null ) { >+ var pageX = evt.getPageX(); >+ var pageY = evt.getPageY(); >+ var row = this._getRowAtPoint( pageX, pageY ); >+ var rowIndex = this._rows.indexOf( row ); >+ var itemIndex = this._getItemIndexFromRowIndex( rowIndex ); >+ var columnIndex = -1; >+ var columns = this.getColumns(); >+ for( var i = 0; columnIndex == -1 && i < columns.length; i++ ) { >+ var element = columns[ i ].getElement(); >+ var pageLeft = qx.html.Location.getPageBoxLeft( element ); >+ if( pageX >= pageLeft >+ && pageX < pageLeft + columns[ i ].getWidth() ) >+ { >+ columnIndex = i; >+ } >+ } >+ this._cellToolTip.setCell( itemIndex, columnIndex ); >+ } >+ }, >+ >+ /** Only called by server-side */ >+ setCellToolTipText : function( text ) { >+ if( this._cellToolTip != null ) { >+ this._cellToolTip.setText( text ); >+ } > } >- >+ > } > }); >Index: src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java,v >retrieving revision 1.17 >diff -u -r1.17 TableLCA.java >--- src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java 28 May 2009 11:37:14 -0000 1.17 >+++ src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java 4 Jun 2009 10:20:30 -0000 >@@ -21,11 +21,19 @@ > import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.internal.widgets.ITableAdapter; >+import org.eclipse.swt.internal.widgets.ICellToolTipProvider; > import org.eclipse.swt.widgets.*; > > > public final class TableLCA extends AbstractWidgetLCA { > >+ // Request cell tooltip text event >+ static final String EVENT_CELL_TOOLTIP_TEXT_REQUESTED >+ = "org.eclipse.swt.events.cellToolTipTextRequested"; >+ // Parameter names that specify further event details >+ static final String EVENT_CELL_TOOLTIP_TEXT_REQUESTED_CELL >+ = "org.eclipse.swt.events.cellToolTipTextRequested.cell"; >+ > // Property names to preserve values > static final String PROP_HEADER_HEIGHT = "headerHeight"; > static final String PROP_HEADER_VISIBLE = "headerVisible"; >@@ -93,6 +101,7 @@ > readSetData( table ); > readWidgetSelected( table ); > readWidgetDefaultSelected( table ); >+ readCellToolTipTextRequested( table ); > ControlLCAUtil.processMouseEvents( table ); > ControlLCAUtil.processKeyEvents( table ); > } >@@ -107,6 +116,9 @@ > if( ( table.getStyle() & SWT.MULTI ) != 0 ) { > style += "|multi"; > } >+ if( Boolean.TRUE.equals( table.getData( Table.ENABLE_CELL_TOOLTIP ) ) ) { >+ style += "|enableCellToolTip"; >+ } > Object[] args = new Object[] { WidgetUtil.getId( table ), style }; > writer.newWidget( "org.eclipse.swt.widgets.Table", args ); > ControlLCAUtil.writeStyleFlags( table ); >@@ -128,6 +140,7 @@ > writeDefaultColumnWidth( table ); > writeHideSelection( table ); > writeScrollBarsVisible( table ); >+ writeCellToolTipText( table ); > WidgetLCAUtil.writeCustomVariant( table ); > } > >@@ -273,6 +286,25 @@ > return result; > } > >+ private static void readCellToolTipTextRequested( final Table table ) { >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ tableAdapter.setToolTipText( null ); >+ String event = EVENT_CELL_TOOLTIP_TEXT_REQUESTED; >+ if( WidgetLCAUtil.wasEventSent( table, event ) ) { >+ HttpServletRequest request = ContextProvider.getRequest(); >+ String cell >+ = request.getParameter( EVENT_CELL_TOOLTIP_TEXT_REQUESTED_CELL ); >+ String[] indices = cell.split( "," ); >+ int itemIndex = Integer.parseInt( indices[ 0 ] ); >+ int columnIndex = Integer.parseInt( indices[ 1 ] ); >+ ICellToolTipProvider provider = tableAdapter.getCellToolTipProvider(); >+ if( provider != null ) { >+ provider.getToolTipText( itemIndex, columnIndex ); >+ } >+ } >+ } >+ > /////////////////////////////////////////// > // Helping methods to write JavaScript code > >@@ -384,6 +416,17 @@ > } > } > >+ private void writeCellToolTipText( final Table table ) throws IOException { >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ String text = tableAdapter.getToolTipText(); >+ if( text != null ) { >+ JSWriter writer = JSWriter.getWriterFor( table ); >+ text = text.replaceAll( "\n", "<br>" ); >+ writer.call( "setCellToolTipText", new String[]{ text } ); >+ } >+ } >+ > ////////////////// > // Helping methods > >Index: src/org/eclipse/swt/internal/widgets/displaykit/QooxdooResourcesUtil.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/widgets/displaykit/QooxdooResourcesUtil.java,v >retrieving revision 1.14 >diff -u -r1.14 QooxdooResourcesUtil.java >--- src/org/eclipse/swt/internal/widgets/displaykit/QooxdooResourcesUtil.java 28 Apr 2009 20:10:54 -0000 1.14 >+++ src/org/eclipse/swt/internal/widgets/displaykit/QooxdooResourcesUtil.java 4 Jun 2009 10:20:30 -0000 >@@ -106,6 +106,8 @@ > = "org/eclipse/swt/widgets/TableItem.js"; > private static final String TABLE_ROW_JS > = "org/eclipse/swt/widgets/TableRow.js"; >+ private static final String TABLE_CELL_TOOLTIP_JS >+ = "org/eclipse/swt/widgets/TableCellToolTip.js"; > private static final String EXTERNALBROWSER_JS > = "org/eclipse/rwt/widgets/ExternalBrowser.js"; > private static final String PROGRESS_BAR_JS >@@ -205,6 +207,7 @@ > register( TABLE_COLUMN_JS, compress ); > register( TABLE_ITEM_JS, compress ); > register( TABLE_ROW_JS, compress ); >+ register( TABLE_CELL_TOOLTIP_JS, compress ); > register( LINK_UTIL_JS, compress ); > register( EXTERNALBROWSER_JS, compress ); > register( BROWSER_JS, compress ); >Index: js/org/eclipse/swt/widgets/TableCellToolTip.js >=================================================================== >RCS file: js/org/eclipse/swt/widgets/TableCellToolTip.js >diff -N js/org/eclipse/swt/widgets/TableCellToolTip.js >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ js/org/eclipse/swt/widgets/TableCellToolTip.js 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,70 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 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 http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+ >+qx.Class.define( "org.eclipse.swt.widgets.TableCellToolTip", { >+ extend : qx.ui.popup.ToolTip, >+ >+ construct : function() { >+ this.base( arguments ); >+ this._tableId = -1; >+ this._itemIndex = -1; >+ this._columnIndex = -1; >+ }, >+ >+ members : { >+ >+ _onshowtimer : function( evt ) { >+ this._stopShowTimer(); >+ this._requestCellToolTipText(); >+ }, >+ >+ setText : function( text ) { >+ if( text && text != "" ) { >+ this.getAtom().setLabel( text ); >+ this.setLeft( qx.event.type.MouseEvent.getPageX() >+ + this.getMousePointerOffsetX()); >+ this.setTop( qx.event.type.MouseEvent.getPageY() >+ + this.getMousePointerOffsetY()); >+ this.show(); >+ } >+ }, >+ >+ setTableId : function( tableId ) { >+ this._tableId = tableId; >+ }, >+ >+ setCell : function( itemIndex, columnIndex ) { >+ if( this._itemIndex != itemIndex || this._columnIndex != columnIndex ) { >+ this._itemIndex = itemIndex; >+ this._columnIndex = columnIndex; >+ this.hide(); >+ if( !this._showTimer.getEnabled() >+ && itemIndex != -1 >+ && columnIndex != -1 ) >+ { >+ this._showTimer.start(); >+ } >+ } >+ }, >+ >+ _requestCellToolTipText : function() { >+ if( this._itemIndex != -1 && this._columnIndex != -1 ) { >+ var req = org.eclipse.swt.Request.getInstance(); >+ req.addEvent( "org.eclipse.swt.events.cellToolTipTextRequested", >+ this._tableId ); >+ var cell = this._itemIndex + "," + this._columnIndex; >+ req.addParameter( "org.eclipse.swt.events.cellToolTipTextRequested.cell", >+ cell ); >+ req.send(); >+ } >+ } >+ >+ } >+}); >#P org.eclipse.rap.rwt >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/META-INF/MANIFEST.MF,v >retrieving revision 1.46 >diff -u -r1.46 MANIFEST.MF >--- META-INF/MANIFEST.MF 29 May 2009 21:28:00 -0000 1.46 >+++ META-INF/MANIFEST.MF 4 Jun 2009 10:20:32 -0000 >@@ -80,7 +80,7 @@ > org.eclipse.swt.internal.events;x-friends:="org.eclipse.rap.ui.workbench,org.eclipse.rap.rwt.test", > org.eclipse.swt.internal.graphics;x-friends:="org.eclipse.rap.ui.workbench,org.eclipse.rap.rwt.test,org.eclipse.rap.jface", > org.eclipse.swt.internal.image;x-internal:=true, >- org.eclipse.swt.internal.widgets;x-friends:="org.eclipse.rap.rwt.test", >+ org.eclipse.swt.internal.widgets;x-friends:="org.eclipse.rap.rwt.test,org.eclipse.rap.jface", > org.eclipse.swt.internal.widgets.buttonkit;x-friends:="org.eclipse.rap.rwt.test", > org.eclipse.swt.internal.widgets.combokit;x-friends:="org.eclipse.rap.rwt.test", > org.eclipse.swt.internal.widgets.compositekit;x-friends:="org.eclipse.rap.rwt.test", >Index: src/org/eclipse/swt/widgets/Table.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Table.java,v >retrieving revision 1.68 >diff -u -r1.68 Table.java >--- src/org/eclipse/swt/widgets/Table.java 28 May 2009 16:33:43 -0000 1.68 >+++ src/org/eclipse/swt/widgets/Table.java 4 Jun 2009 10:20:32 -0000 >@@ -108,6 +108,9 @@ > > private final class TableAdapter implements ITableAdapter { > >+ private String toolTipText; >+ private ICellToolTipProvider provider; >+ > public int getCheckWidth() { > return Table.this.getCheckWidth(); > } >@@ -198,6 +201,22 @@ > public TableItem getMeasureItem() { > return Table.this.getMeasureItem(); > } >+ >+ public ICellToolTipProvider getCellToolTipProvider() { >+ return provider; >+ } >+ >+ public void setCellToolTipProvider( final ICellToolTipProvider provider ) { >+ this.provider = provider; >+ } >+ >+ public String getToolTipText() { >+ return toolTipText; >+ } >+ >+ public void setToolTipText( final String toolTipText ) { >+ this.toolTipText = toolTipText; >+ } > } > > private final class ResizeListener extends ControlAdapter { >@@ -218,6 +237,15 @@ > public static final String HIDE_SELECTION > = Table.class.getName() + "#hideSelection"; > >+ /** >+ * <strong>IMPORTANT:</strong> This field is <em>not</em> part of the SWT >+ * public API. It is marked public only so that it can be shared >+ * within the packages provided by SWT. It should never be accessed from >+ * application code. >+ */ >+ public static final String ENABLE_CELL_TOOLTIP >+ = Table.class.getName() + "#enableCellToolTip"; >+ > private static final int GRID_WIDTH = 1; > private static final int CHECK_HEIGHT = 13; > >Index: src/org/eclipse/swt/internal/widgets/ITableAdapter.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/ITableAdapter.java,v >retrieving revision 1.11 >diff -u -r1.11 ITableAdapter.java >--- src/org/eclipse/swt/internal/widgets/ITableAdapter.java 17 Apr 2009 12:18:22 -0000 1.11 >+++ src/org/eclipse/swt/internal/widgets/ITableAdapter.java 4 Jun 2009 10:20:32 -0000 >@@ -20,12 +20,12 @@ > > int getFocusIndex(); > void setFocusIndex( int focusIndex ); >- >+ > void setLeftOffset( int parseInt ); > > void checkData(); > void checkData( int index ); >- >+ > int getColumnLeft( TableColumn column ); > int getDefaultColumnWidth(); > >@@ -38,4 +38,10 @@ > boolean hasVScrollBar(); > > TableItem getMeasureItem(); >+ >+ ICellToolTipProvider getCellToolTipProvider(); >+ void setCellToolTipProvider( ICellToolTipProvider provider ); >+ >+ String getToolTipText(); >+ void setToolTipText( String toolTipText ); > } >\ No newline at end of file >Index: src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java >=================================================================== >RCS file: src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java >diff -N src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,17 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 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 http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.swt.internal.widgets; >+ >+ >+public interface ICellToolTipProvider { >+ >+ void getToolTipText( int itemIndex, int columnIndex ); >+ >+} >#P org.eclipse.rap.jface >Index: src/org/eclipse/jface/viewers/TableViewerColumn.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/TableViewerColumn.java,v >retrieving revision 1.2 >diff -u -r1.2 TableViewerColumn.java >--- src/org/eclipse/jface/viewers/TableViewerColumn.java 17 Apr 2008 09:35:42 -0000 1.2 >+++ src/org/eclipse/jface/viewers/TableViewerColumn.java 4 Jun 2009 10:20:34 -0000 >@@ -18,7 +18,7 @@ > /** > * ViewerColumn implementation for TableViewer to enable column-specific label > * providers and editing support. >- * >+ * > * @since 1.0 > */ > public final class TableViewerColumn extends ViewerColumn { >@@ -28,7 +28,7 @@ > * Creates a new viewer column for the given {@link TableViewer} on a new > * {@link TableColumn} with the given style bits. The column is added at the > * end of the list of columns. >- * >+ * > * @param viewer > * the table viewer to which this column belongs > * @param style >@@ -44,7 +44,7 @@ > * Creates a new viewer column for the given {@link TableViewer} on a new > * {@link TableColumn} with the given style bits. The column is inserted at > * the given index into the list of columns. >- * >+ * > * @param viewer > * the table viewer to which this column belongs > * @param style >@@ -61,7 +61,7 @@ > /** > * Creates a new viewer column for the given {@link TableViewer} on the given > * {@link TableColumn}. >- * >+ * > * @param viewer > * the table viewer to which this column belongs > * @param column >@@ -71,7 +71,7 @@ > super(viewer, column); > this.column = column; > } >- >+ > private static TableColumn createColumn(Table table, int style, int index) { > if (index >= 0) { > return new TableColumn(table, style, index); >@@ -86,4 +86,11 @@ > public TableColumn getColumn() { > return column; > } >+ >+// RAP: [if] Table cell tooltips support >+ public void setLabelProvider( final CellLabelProvider labelProvider ) { >+ super.setLabelProvider( labelProvider ); >+ CellToolTipProvider.attach( ( TableViewer )getViewer(), labelProvider ); >+ } >+// RAPEND: [if] > } >Index: src/org/eclipse/jface/viewers/TableViewer.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/TableViewer.java,v >retrieving revision 1.4 >diff -u -r1.4 TableViewer.java >--- src/org/eclipse/jface/viewers/TableViewer.java 3 Nov 2008 10:19:42 -0000 1.4 >+++ src/org/eclipse/jface/viewers/TableViewer.java 4 Jun 2009 10:20:34 -0000 >@@ -186,7 +186,7 @@ > > if( selection.length == 1 ) { > int columnCount = table.getColumnCount(); >- >+ > for( int i = 0; i < columnCount; i++ ) { > if( selection[0].getBounds(i).contains(p) ) { > return selection[0]; >@@ -328,7 +328,7 @@ > if (checkBusy()) > return; > >- // RAP [bm]: >+ // RAP [bm]: > // if( isCellEditorActive() ) { > // cancelEditing(); > // } >@@ -367,4 +367,11 @@ > public void refresh(boolean updateLabels, boolean reveal) { > refresh(getRoot(), updateLabels, reveal); > } >+ >+// RAP: [if] Table cell tooltips support >+ public void setLabelProvider( final IBaseLabelProvider labelProvider ) { >+ super.setLabelProvider( labelProvider ); >+ CellToolTipProvider.attach( this, labelProvider ); >+ } >+// RAPEND: [if] > } >Index: src/org/eclipse/jface/viewers/CellToolTipProvider.java >=================================================================== >RCS file: src/org/eclipse/jface/viewers/CellToolTipProvider.java >diff -N src/org/eclipse/jface/viewers/CellToolTipProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jface/viewers/CellToolTipProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,49 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 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 http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.jface.viewers; >+ >+import org.eclipse.swt.internal.widgets.ITableAdapter; >+import org.eclipse.swt.internal.widgets.ICellToolTipProvider; >+import org.eclipse.swt.widgets.Table; >+ >+final class CellToolTipProvider implements ICellToolTipProvider { >+ private TableViewer viewer; >+ >+ CellToolTipProvider( final TableViewer viewer ) { >+ this.viewer = viewer; >+ } >+ >+ static void attach( final TableViewer viewer, >+ final IBaseLabelProvider labelProvider ) >+ { >+ TableViewer tableViewer = viewer; >+ Table table = tableViewer.getTable(); >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ if( labelProvider instanceof CellLabelProvider ) { >+ CellToolTipProvider provider = new CellToolTipProvider( tableViewer ); >+ tableAdapter.setCellToolTipProvider( provider ); >+ } else { >+ tableAdapter.setCellToolTipProvider( null ); >+ } >+ } >+ >+ public void getToolTipText( final int itemIndex, final int columnIndex ) { >+ Table table = viewer.getTable(); >+ Object element = table.getItem( itemIndex ).getData(); >+ ViewerColumn column = viewer.getViewerColumn( columnIndex ); >+ CellLabelProvider labelProvider = column.getLabelProvider(); >+ String text = labelProvider.getToolTipText( element ); >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ tableAdapter.setToolTipText( text ); >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 280404
: 139258 |
139259