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 187649 Details for
Bug 334675
Provide tooltip support for TreeViewer
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]
Enable cell tooltips in TreeViewer
celltooltips.patch (text/plain), 60.26 KB, created by
Ivan Furnadjiev
on 2011-01-26 10:55:48 EST
(
hide
)
Description:
Enable cell tooltips in TreeViewer
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2011-01-26 10:55:48 EST
Size:
60.26 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.jface >Index: src/org/eclipse/jface/viewers/CellLabelProvider.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/CellLabelProvider.java,v >retrieving revision 1.2 >diff -u -r1.2 CellLabelProvider.java >--- src/org/eclipse/jface/viewers/CellLabelProvider.java 17 Apr 2008 09:35:42 -0000 1.2 >+++ src/org/eclipse/jface/viewers/CellLabelProvider.java 26 Jan 2011 14:50:09 -0000 >@@ -231,6 +231,9 @@ > * @since 1.1 > */ > protected void initialize(ColumnViewer viewer, ViewerColumn column) { >+ // RAP: [if] Cell tooltips support >+ CellToolTipProvider.attach( viewer, this ); >+ // RAPEND: [if] > } > > /** >@@ -248,6 +251,9 @@ > */ > public void dispose(ColumnViewer viewer, ViewerColumn column) { > dispose(); >+ // RAP: [if] Cell tooltips support >+ CellToolTipProvider.attach( viewer, null ); >+ // RAPEND: [if] > } > > } >Index: src/org/eclipse/jface/viewers/CellToolTipProvider.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/CellToolTipProvider.java,v >retrieving revision 1.2 >diff -u -r1.2 CellToolTipProvider.java >--- src/org/eclipse/jface/viewers/CellToolTipProvider.java 23 Feb 2010 15:56:29 -0000 1.2 >+++ src/org/eclipse/jface/viewers/CellToolTipProvider.java 26 Jan 2011 14:50:09 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2009, 2010 EclipseSource and others. All rights reserved. >+ * Copyright (c) 2009, 2011 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 >@@ -9,43 +9,55 @@ > ******************************************************************************/ > package org.eclipse.jface.viewers; > >+import org.eclipse.swt.internal.widgets.ICellToolTipAdapter; > import org.eclipse.swt.internal.widgets.ITableAdapter; > import org.eclipse.swt.internal.widgets.ICellToolTipProvider; >+import org.eclipse.swt.internal.widgets.ITreeAdapter; >+import org.eclipse.swt.widgets.Item; > import org.eclipse.swt.widgets.Table; >+import org.eclipse.swt.widgets.Tree; > > /** >- * Support for table tool-tips in RAP >+ * Support for table/tree tool-tips in RAP > */ > final class CellToolTipProvider implements ICellToolTipProvider { >- private TableViewer viewer; >+ private ColumnViewer viewer; > >- CellToolTipProvider( final TableViewer viewer ) { >+ CellToolTipProvider( final ColumnViewer viewer ) { > this.viewer = viewer; > } > >- static void attach( final TableViewer tableViewer, >- final IBaseLabelProvider labelProvider ) >+ static void attach( final ColumnViewer viewer, >+ final CellLabelProvider labelProvider ) > { >- 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 ); >+ ICellToolTipAdapter adapter = getAdapter( viewer ); >+ if( labelProvider != null ) { >+ CellToolTipProvider provider = new CellToolTipProvider( viewer ); >+ adapter.setCellToolTipProvider( provider ); > } else { >- tableAdapter.setCellToolTipProvider( null ); >+ adapter.setCellToolTipProvider( null ); > } > } > >- public void getToolTipText( final int itemIndex, final int columnIndex ) { >- Table table = viewer.getTable(); >- Object element = table.getItem( itemIndex ).getData(); >+ private static ICellToolTipAdapter getAdapter( final ColumnViewer viewer ) { >+ ICellToolTipAdapter result = null; >+ if( viewer instanceof TableViewer ) { >+ Table table = ( ( TableViewer )viewer ).getTable(); >+ result = ( ICellToolTipAdapter )table.getAdapter( ITableAdapter.class ); >+ } else if( viewer instanceof TreeViewer ) { >+ Tree tree = ( ( TreeViewer )viewer ).getTree(); >+ result = ( ICellToolTipAdapter )tree.getAdapter( ITreeAdapter.class ); >+ } >+ return result; >+ } >+ >+ public void getToolTipText( final Item item, final int columnIndex ) { >+ Object element = item.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 ); >+ ICellToolTipAdapter adapter = getAdapter( viewer ); >+ adapter.setToolTipText( text ); > } > > } >Index: src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java,v >retrieving revision 1.4 >diff -u -r1.4 ColumnViewerToolTipSupport.java >--- src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java 8 Sep 2009 10:03:38 -0000 1.4 >+++ src/org/eclipse/jface/viewers/ColumnViewerToolTipSupport.java 26 Jan 2011 14:50:09 -0000 >@@ -22,7 +22,7 @@ > //import org.eclipse.swt.graphics.Point; > //import org.eclipse.swt.widgets.Composite; > //import org.eclipse.swt.widgets.Event; >-import org.eclipse.swt.widgets.Table; >+import org.eclipse.swt.internal.widgets.ICellToolTipProvider; > > /** > * The ColumnViewerTooltipSupport is the class that provides tool tips for >@@ -31,7 +31,7 @@ > * @since 1.3 > * > */ >-// RAP [rh] RAP provides tooltip support only for the table widget >+// RAP [rh] RAP provides tooltip support for the table and tree widgets > // In addition RAP cannot reuse the DefaultToolTip and ToolTip as these > // classes make heavy use of mouse events > public class ColumnViewerToolTipSupport >@@ -77,12 +77,11 @@ > * @param viewer > * the viewer the support is attached to > */ >-// public static void enableFor(ColumnViewer viewer) { >-// new ColumnViewerToolTipSupport(viewer, ToolTip.NO_RECREATE, false); >-// } >-public static void enableFor(AbstractTableViewer viewer) { >- viewer.getControl().setData( Table.ENABLE_CELL_TOOLTIP, Boolean.TRUE ); >-} >+ public static void enableFor(ColumnViewer viewer) { >+// new ColumnViewerToolTipSupport(viewer, ToolTip.NO_RECREATE, false); >+ viewer.getControl().setData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP, >+ Boolean.TRUE ); >+ } > > // RAP [rh] ToolTip style not supported > // /** >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.3 >diff -u -r1.3 TableViewerColumn.java >--- src/org/eclipse/jface/viewers/TableViewerColumn.java 1 Jul 2009 09:33:18 -0000 1.3 >+++ src/org/eclipse/jface/viewers/TableViewerColumn.java 26 Jan 2011 14:50:09 -0000 >@@ -87,10 +87,4 @@ > return column; > } > >-// RAP: [if] Table cell tooltips support >- public void setLabelProvider( final CellLabelProvider labelProvider ) { >- super.setLabelProvider( labelProvider ); >- CellToolTipProvider.attach( ( TableViewer )getViewer(), labelProvider ); >- } >-// RAPEND: [if] > } >#P org.eclipse.rap.rwt >Index: src/org/eclipse/swt/internal/widgets/ICellToolTipAdapter.java >=================================================================== >RCS file: src/org/eclipse/swt/internal/widgets/ICellToolTipAdapter.java >diff -N src/org/eclipse/swt/internal/widgets/ICellToolTipAdapter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/swt/internal/widgets/ICellToolTipAdapter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,20 @@ >+/******************************************************************************* >+ * Copyright (c) 2011 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 ICellToolTipAdapter { >+ >+ ICellToolTipProvider getCellToolTipProvider(); >+ void setCellToolTipProvider( ICellToolTipProvider provider ); >+ >+ String getToolTipText(); >+ void setToolTipText( String toolTipText ); >+ >+} >Index: src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java,v >retrieving revision 1.1 >diff -u -r1.1 ICellToolTipProvider.java >--- src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java 1 Jul 2009 09:33:08 -0000 1.1 >+++ src/org/eclipse/swt/internal/widgets/ICellToolTipProvider.java 26 Jan 2011 14:50:10 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2009 EclipseSource and others. All rights reserved. >+ * Copyright (c) 2009, 2011 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 >@@ -9,9 +9,14 @@ > ******************************************************************************/ > package org.eclipse.swt.internal.widgets; > >+import org.eclipse.swt.widgets.Item; >+ > > public interface ICellToolTipProvider { > >- void getToolTipText( int itemIndex, int columnIndex ); >+ public static final String ENABLE_CELL_TOOLTIP >+ = ICellToolTipProvider.class.getName() + "#enableCellToolTip"; >+ >+ void getToolTipText( Item item, int columnIndex ); > > } >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.15 >diff -u -r1.15 ITableAdapter.java >--- src/org/eclipse/swt/internal/widgets/ITableAdapter.java 28 Sep 2009 08:08:03 -0000 1.15 >+++ src/org/eclipse/swt/internal/widgets/ITableAdapter.java 26 Jan 2011 14:50:10 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2007, 2009 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2007, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -14,7 +14,7 @@ > import org.eclipse.swt.widgets.TableColumn; > import org.eclipse.swt.widgets.TableItem; > >-public interface ITableAdapter { >+public interface ITableAdapter extends ICellToolTipAdapter { > > int getCheckWidth(); > int getItemImageWidth( int columnIndex ); >@@ -40,10 +40,4 @@ > 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/ITreeAdapter.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/internal/widgets/ITreeAdapter.java,v >retrieving revision 1.11 >diff -u -r1.11 ITreeAdapter.java >--- src/org/eclipse/swt/internal/widgets/ITreeAdapter.java 8 Sep 2010 09:23:26 -0000 1.11 >+++ src/org/eclipse/swt/internal/widgets/ITreeAdapter.java 26 Jan 2011 14:50:10 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -15,7 +15,7 @@ > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.widgets.*; > >-public interface ITreeAdapter { >+public interface ITreeAdapter extends ICellToolTipAdapter { > > void setScrollLeft( final int left ); > int getScrollLeft(); >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.92 >diff -u -r1.92 Table.java >--- src/org/eclipse/swt/widgets/Table.java 3 Sep 2010 12:15:55 -0000 1.92 >+++ src/org/eclipse/swt/widgets/Table.java 26 Jan 2011 14:50:11 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -243,15 +243,6 @@ > public static final String ALWAYS_HIDE_SELECTION > = Table.class.getName() + "#alwaysHideSelection"; > >- /** >- * <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[] EMPTY_SELECTION = new int[ 0 ]; >Index: src/org/eclipse/swt/widgets/Tree.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Tree.java,v >retrieving revision 1.71 >diff -u -r1.71 Tree.java >--- src/org/eclipse/swt/widgets/Tree.java 17 Dec 2010 08:05:09 -0000 1.71 >+++ src/org/eclipse/swt/widgets/Tree.java 26 Jan 2011 14:50:12 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -155,6 +155,9 @@ > } > private final class InternalTreeAdapter implements ITreeAdapter { > >+ private String toolTipText; >+ private ICellToolTipProvider provider; >+ > public void setScrollLeft( final int left ) { > Tree.this.scrollLeft = left; > } >@@ -232,6 +235,22 @@ > return Tree.this.getColumn( index ).getLeft(); > } > >+ 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 static final class ResizeListener extends ControlAdapter { >#P org.eclipse.rap.rwt.q07 >Index: js/org/eclipse/rwt/widgets/Tree.js >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/js/org/eclipse/rwt/widgets/Tree.js,v >retrieving revision 1.30 >diff -u -r1.30 Tree.js >--- js/org/eclipse/rwt/widgets/Tree.js 21 Jan 2011 17:04:22 -0000 1.30 >+++ js/org/eclipse/rwt/widgets/Tree.js 26 Jan 2011 14:50:13 -0000 >@@ -71,6 +71,8 @@ > this.add( this._clientArea ); > this.add( this._horzScrollBar ); > this.add( this._vertScrollBar ); >+ // Cell tooltip >+ this._cellToolTip = null; > // Configure: > this.setCursor( "default" ); > this.setOverflow( "hidden" ); >@@ -102,6 +104,10 @@ > this._hoverItem = null; > this._hoverElement = null; > this._resizeLine = null; >+ if( this._cellToolTip ) { >+ this._cellToolTip.destroy(); >+ this._cellToolTip = null; >+ } > }, > > members : { >@@ -448,7 +454,11 @@ > getColumnCount : function() { > return Math.max( 1, this._columnCount ); > }, >- >+ >+ getColumns : function() { >+ return this._columnArea.getChildren().slice( 1 ); >+ }, >+ > getRootItem : function() { > return this._rootItem; > }, >@@ -1653,6 +1663,57 @@ > > _isDragSource : function() { > return this.hasEventListeners( "dragstart" ); >+ }, >+ >+ //////////////////////// >+ // Cell tooltip handling >+ >+ setEnableCellToolTip : function( value ) { >+ if( value ) { >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ var id = widgetManager.findIdByWidget( this ); >+ this._cellToolTip = new org.eclipse.swt.widgets.TableCellToolTip( id ); >+ this._clientArea.addEventListener( "mousemove", >+ this._onClientAreaMouseMove, >+ this ); >+ this._clientArea.setToolTip( this._cellToolTip ); >+ } else { >+ this._clientArea.removeEventListener( "mousemove", >+ this._onClientAreaMouseMove, >+ this ); >+ this._clientArea.setToolTip( null ); >+ this._cellToolTip.destroy(); >+ this._cellToolTip = null; >+ } >+ }, >+ >+ _onClientAreaMouseMove : function( evt ) { >+ if( this._cellToolTip != null ) { >+ var pageX = evt.getPageX(); >+ var pageY = evt.getPageY(); >+ if( this._hoverItem ) { >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ var itemId = widgetManager.findIdByWidget( this._hoverItem ); >+ var columnIndex = -1; >+ var columns = this.getColumns(); >+ var element = this._clientArea.getElement(); >+ var leftOffset = qx.bom.element.Location.getLeft( element ); >+ for( var i = 0; columnIndex == -1 && i < columns.length; i++ ) { >+ var pageLeft = leftOffset + this._itemLeft[ i ]; >+ if( pageX >= pageLeft && pageX < pageLeft + this._itemWidth[ i ] ) { >+ columnIndex = i; >+ } >+ } >+ this._cellToolTip.setCell( itemId, columnIndex ); >+ } >+ } >+ }, >+ >+ /** Only called by server-side */ >+ setCellToolTipText : function( text ) { >+ if( this._cellToolTip != null ) { >+ this._cellToolTip.setText( text ); >+ } > } > > } >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.88 >diff -u -r1.88 Table.js >--- js/org/eclipse/swt/widgets/Table.js 21 Dec 2010 14:27:26 -0000 1.88 >+++ js/org/eclipse/swt/widgets/Table.js 26 Jan 2011 14:50:14 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2007, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2007, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -160,12 +160,6 @@ > 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 ); >- } > // Disable scrolling (see bug 279460) > qx.ui.core.Widget.disableScrolling( this ); > // Fix for bug Bug 297202 >@@ -228,7 +222,7 @@ > this._clientArea = null; > } > if( this._cellToolTip ) { >- this._cellToolTip.dispose(); >+ this._cellToolTip.destroy(); > this._cellToolTip = null; > } > if( this._columnArea ) { >@@ -1730,26 +1724,46 @@ > //////////////////////// > // Cell tooltip handling > >+ setEnableCellToolTip : function( value ) { >+ if( value ) { >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ var id = widgetManager.findIdByWidget( this ); >+ this._cellToolTip = new org.eclipse.swt.widgets.TableCellToolTip( id ); >+ this._clientArea.addEventListener( "mousemove", >+ this._onClientAreaMouseMove, >+ this ); >+ this._clientArea.setToolTip( this._cellToolTip ); >+ } else { >+ this._clientArea.removeEventListener( "mousemove", >+ this._onClientAreaMouseMove, >+ this ); >+ this._clientArea.setToolTip( null ); >+ this._cellToolTip.destroy(); >+ this._cellToolTip = null; >+ } >+ }, >+ > _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 = this._clientArea.getElement(); >- var pageLeft = qx.bom.element.Location.getLeft( element ) >- + this._itemLeft[ i ]; >- if( pageX >= pageLeft >- && pageX < pageLeft + this._itemWidth[ i ] ) >- { >- columnIndex = i; >- } >+ var itemIndex = row.getItemIndex(); >+ if( itemIndex != -1 ) { >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ var itemId = widgetManager.findIdByWidget( this._items[ itemIndex ] ); >+ var columnIndex = -1; >+ var columns = this.getColumns(); >+ var element = this._clientArea.getElement(); >+ var leftOffset = qx.bom.element.Location.getLeft( element ); >+ for( var i = 0; columnIndex == -1 && i < columns.length; i++ ) { >+ var pageLeft = leftOffset + this._itemLeft[ i ]; >+ if( pageX >= pageLeft && pageX < pageLeft + this._itemWidth[ i ] ) { >+ columnIndex = i; >+ } >+ } >+ this._cellToolTip.setCell( itemId, columnIndex ); > } >- this._cellToolTip.setCell( itemIndex, columnIndex ); > } > }, > >Index: js/org/eclipse/swt/widgets/TableCellToolTip.js >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/js/org/eclipse/swt/widgets/TableCellToolTip.js,v >retrieving revision 1.2 >diff -u -r1.2 TableCellToolTip.js >--- js/org/eclipse/swt/widgets/TableCellToolTip.js 27 Apr 2010 08:46:13 -0000 1.2 >+++ js/org/eclipse/swt/widgets/TableCellToolTip.js 26 Jan 2011 14:50:14 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2009 EclipseSource and others. All rights reserved. >+ * Copyright (c) 2009, 2011 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 >@@ -12,10 +12,10 @@ > extend : qx.ui.popup.ToolTip, > include : org.eclipse.rwt.FadeAnimationMixin, > >- construct : function() { >+ construct : function( controlId ) { > this.base( arguments ); >- this._tableId = -1; >- this._itemIndex = -1; >+ this._controlId = controlId; >+ this._itemId = null; > this._columnIndex = -1; > }, > >@@ -37,17 +37,13 @@ > } > }, > >- setTableId : function( tableId ) { >- this._tableId = tableId; >- }, >- >- setCell : function( itemIndex, columnIndex ) { >- if( this._itemIndex != itemIndex || this._columnIndex != columnIndex ) { >- this._itemIndex = itemIndex; >+ setCell : function( itemId, columnIndex ) { >+ if( this._itemId != itemId || this._columnIndex != columnIndex ) { >+ this._itemId = itemId; > this._columnIndex = columnIndex; > this.hide(); > if( !this._showTimer.getEnabled() >- && itemIndex != -1 >+ && itemId != null > && columnIndex != -1 ) > { > this._showTimer.start(); >@@ -56,11 +52,11 @@ > }, > > _requestCellToolTipText : function() { >- if( this._itemIndex != -1 && this._columnIndex != -1 ) { >+ if( this._itemId != null && 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; >+ this._controlId ); >+ var cell = this._itemId + "," + this._columnIndex; > req.addParameter( "org.eclipse.swt.events.cellToolTipTextRequested.cell", > cell ); > req.send(); >Index: src/org/eclipse/rwt/internal/lifecycle/JSConst.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/src/org/eclipse/rwt/internal/lifecycle/JSConst.java,v >retrieving revision 1.15 >diff -u -r1.15 JSConst.java >--- src/org/eclipse/rwt/internal/lifecycle/JSConst.java 2 Mar 2010 16:28:59 -0000 1.15 >+++ src/org/eclipse/rwt/internal/lifecycle/JSConst.java 26 Jan 2011 14:50:14 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -13,8 +13,6 @@ > > import org.eclipse.rwt.lifecycle.JSVar; > >- >- > /** > * Commonly used request parameter names and JavaScript names. > */ >@@ -61,6 +59,9 @@ > public static final String EVENT_MENU_DETECT > = "org.eclipse.swt.events.menuDetect"; > >+ // Request cell tooltip text event >+ public static final String EVENT_CELL_TOOLTIP_REQUESTED >+ = "org.eclipse.swt.events.cellToolTipTextRequested"; > > // Parameter names that specify further event details > public static final String EVENT_WIDGET_SELECTED_DETAIL >@@ -114,6 +115,10 @@ > public static final String EVENT_MENU_DETECT_Y > = "org.eclipse.swt.events.menuDetect.y"; > >+ // Request cell tooltip text event details >+ public static final String EVENT_CELL_TOOLTIP_DETAILS >+ = "org.eclipse.swt.events.cellToolTipTextRequested.cell"; >+ > // Indicates that a shell was closed on the client side. The parameter > // value holds the id of the shell that was closed. > public static final String EVENT_SHELL_CLOSED >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.29 >diff -u -r1.29 TableLCA.java >--- src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java 21 Dec 2010 14:27:26 -0000 1.29 >+++ src/org/eclipse/swt/internal/widgets/tablekit/TableLCA.java 26 Jan 2011 14:50:14 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -22,20 +22,12 @@ > import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.internal.events.EventLCAUtil; >-import org.eclipse.swt.internal.widgets.ITableAdapter; >-import org.eclipse.swt.internal.widgets.ICellToolTipProvider; >+import org.eclipse.swt.internal.widgets.*; > import org.eclipse.swt.widgets.*; > > > public final class TableLCA extends AbstractWidgetLCA { > >- // Request cell tooltip text event >- static final String EVENT_CELL_TOOLTIP_REQUESTED >- = "org.eclipse.swt.events.cellToolTipTextRequested"; >- // Parameter names that specify further event details >- static final String EVENT_CELL_TOOLTIP_DETAILS >- = "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"; >@@ -51,6 +43,8 @@ > static final String PROP_LEFT_OFFSET = "leftOffset"; > static final String PROP_SCROLLBARS_SELECTION_LISTENER > = "scrollBarsSelectionListeners"; >+ static final String PROP_ENABLE_CELL_TOOLTIP >+ = "enableCellToolTip"; > > private static final Integer DEFAULT_TOP_INDEX = new Integer( 0 ); > private static final Integer DEFAULT_ITEM_COUNT = new Integer( 0 ); >@@ -100,6 +94,8 @@ > adapter.preserve( PROP_LEFT_OFFSET, getLeftOffset( table ) ); > adapter.preserve( PROP_SCROLLBARS_SELECTION_LISTENER, > hasScrollBarsSelectionListener( table ) ); >+ adapter.preserve( PROP_ENABLE_CELL_TOOLTIP, >+ isCellToolTipEnabled( table ) ); > } > > public void readData( final Widget widget ) { >@@ -127,9 +123,6 @@ > if( ( table.getStyle() & SWT.MULTI ) != 0 ) { > style += "|multi"; > } >- if( Boolean.TRUE.equals( table.getData( Table.ENABLE_CELL_TOOLTIP ) ) ) { >- style += "|enableCellToolTip"; >- } > if( ( table.getStyle() & SWT.HIDE_SELECTION ) != 0 ) { > style += "|hideSelection"; > } >@@ -159,6 +152,7 @@ > writeAlwaysHideSelection( table ); > writeScrollBarsVisible( table ); > writeLeftOffset( table ); >+ writeEnableCellToolTip( table ); > writeCellToolTipText( table ); > WidgetLCAUtil.writeCustomVariant( table ); > } >@@ -311,30 +305,6 @@ > 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_REQUESTED; >- if( WidgetLCAUtil.wasEventSent( table, event ) ) { >- ICellToolTipProvider provider = tableAdapter.getCellToolTipProvider(); >- if( provider != null ) { >- HttpServletRequest request = ContextProvider.getRequest(); >- String cell = request.getParameter( EVENT_CELL_TOOLTIP_DETAILS ); >- String[] indices = cell.split( "," ); >- int itemIndex = Integer.parseInt( indices[ 0 ] ); >- int columnIndex = Integer.parseInt( indices[ 1 ] ); >- // Bug 321119: Sometimes the client can request tooltips for already >- // disposed cells. >- if( itemIndex < table.getItemCount() >- && ( columnIndex == 0 || columnIndex < table.getColumnCount() ) ) >- { >- provider.getToolTipText( itemIndex, columnIndex ); >- } >- } >- } >- } >- > /////////////////////////////////////////// > // Helping methods to write JavaScript code > >@@ -464,18 +434,79 @@ > writer.set( PROP_LEFT_OFFSET, "leftOffset", newValue, DEFAULT_LEFT_OFFSET ); > } > >- private void writeCellToolTipText( final Table table ) throws IOException { >+ //////////////// >+ // Cell tooltips >+ >+ private static Boolean isCellToolTipEnabled( final Table table ) { >+ Boolean result = Boolean.FALSE; >+ Object data = table.getData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP ); >+ if( Boolean.TRUE.equals( data ) ) { >+ result = Boolean.TRUE; >+ } >+ return result; >+ } >+ >+ private static void writeEnableCellToolTip( final Table table ) >+ throws IOException >+ { >+ JSWriter writer = JSWriter.getWriterFor( table ); >+ Boolean newValue = isCellToolTipEnabled( table ); >+ Boolean defValue = Boolean.FALSE; >+ String prop = PROP_ENABLE_CELL_TOOLTIP; >+ writer.set( prop, "enableCellToolTip", newValue, defValue ); >+ } >+ >+ private static void readCellToolTipTextRequested( final Table table ) { >+ Object adapter = table.getAdapter( ITableAdapter.class ); >+ ITableAdapter tableAdapter = ( ITableAdapter )adapter; >+ tableAdapter.setToolTipText( null ); >+ String event = JSConst.EVENT_CELL_TOOLTIP_REQUESTED; >+ if( WidgetLCAUtil.wasEventSent( table, event ) ) { >+ ICellToolTipProvider provider = tableAdapter.getCellToolTipProvider(); >+ if( provider != null ) { >+ HttpServletRequest request = ContextProvider.getRequest(); >+ String cell = request.getParameter( JSConst.EVENT_CELL_TOOLTIP_DETAILS ); >+ String[] details = cell.split( "," ); >+ String itemId = details[ 0 ]; >+ int columnIndex = Integer.parseInt( details[ 1 ] ); >+ TableItem item = getItemById( table, itemId ); >+ // Bug 321119: Sometimes the client can request tooltips for already >+ // disposed cells. >+ if( item != null >+ && ( columnIndex == 0 || columnIndex < table.getColumnCount() ) ) >+ { >+ provider.getToolTipText( item, columnIndex ); >+ } >+ } >+ } >+ } >+ >+ private static 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 = WidgetLCAUtil.escapeText( text, false ); >- text = WidgetLCAUtil.replaceNewLines( text, "<br>" ); >+ text = WidgetLCAUtil.replaceNewLines( text, "<br/>" ); > writer.call( "setCellToolTipText", new String[]{ text } ); > } > } > >+ private static TableItem getItemById( final Table table, final String itemId ) >+ { >+ TableItem result = null; >+ TableItem[] items = table.getItems(); >+ for( int i = 0; i < items.length && result == null; i++ ) { >+ if( WidgetUtil.getId( items[ i ] ).equals( itemId ) ) { >+ result = items[ i ]; >+ } >+ } >+ return result; >+ } >+ > ////////////////// > // Helping methods > >Index: src/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt/org.eclipse.rap.rwt.q07/src/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java,v >retrieving revision 1.21 >diff -u -r1.21 TreeLCA.java >--- src/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java 22 Dec 2010 14:03:58 -0000 1.21 >+++ src/org/eclipse/swt/internal/widgets/treekit/TreeLCA.java 26 Jan 2011 14:50:14 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -22,7 +22,7 @@ > import org.eclipse.swt.events.*; > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.internal.events.EventLCAUtil; >-import org.eclipse.swt.internal.widgets.ITreeAdapter; >+import org.eclipse.swt.internal.widgets.*; > import org.eclipse.swt.widgets.*; > > public final class TreeLCA extends AbstractWidgetLCA { >@@ -42,6 +42,8 @@ > static final String PROP_LINES_VISIBLE = "linesVisible"; > static final String PROP_SCROLLBARS_SELECTION_LISTENER > = "scrollBarsSelectionListeners"; >+ static final String PROP_ENABLE_CELL_TOOLTIP >+ = "enableCellToolTip"; > > private static final Integer DEFAULT_SCROLL_LEFT = new Integer( 0 ); > >@@ -67,6 +69,8 @@ > adapter.preserve( PROP_HAS_V_SCROLL_BAR, hasVScrollBar( tree ) ); > adapter.preserve( PROP_SCROLLBARS_SELECTION_LISTENER, > hasScrollBarsSelectionListener( tree ) ); >+ adapter.preserve( PROP_ENABLE_CELL_TOOLTIP, >+ isCellToolTipEnabled( tree ) ); > WidgetLCAUtil.preserveCustomVariant( tree ); > } > >@@ -77,6 +81,7 @@ > readTopItemIndex( tree ); > processWidgetSelectedEvent( tree ); > processWidgetDefaultSelectedEvent( tree ); >+ readCellToolTipTextRequested( tree ); > ControlLCAUtil.processMouseEvents( tree ); > ControlLCAUtil.processKeyEvents( tree ); > ControlLCAUtil.processMenuDetect( tree ); >@@ -132,6 +137,8 @@ > writeHeaderHeight( tree ); > writeHeaderVisible( tree ); > writeScrollLeft( tree ); >+ writeEnableCellToolTip( tree ); >+ writeCellToolTipText( tree ); > WidgetLCAUtil.writeCustomVariant( tree ); > } > >@@ -366,6 +373,79 @@ > } > } > >+ //////////////// >+ // Cell tooltips >+ >+ private static Boolean isCellToolTipEnabled( final Tree tree ) { >+ Boolean result = Boolean.FALSE; >+ Object data = tree.getData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP ); >+ if( Boolean.TRUE.equals( data ) ) { >+ result = Boolean.TRUE; >+ } >+ return result; >+ } >+ >+ private static void writeEnableCellToolTip( final Tree tree ) >+ throws IOException >+ { >+ JSWriter writer = JSWriter.getWriterFor( tree ); >+ Boolean newValue = isCellToolTipEnabled( tree ); >+ Boolean defValue = Boolean.FALSE; >+ String prop = PROP_ENABLE_CELL_TOOLTIP; >+ writer.set( prop, "enableCellToolTip", newValue, defValue ); >+ } >+ >+ private static void readCellToolTipTextRequested( final Tree tree ) { >+ Object adapter = tree.getAdapter( ITreeAdapter.class ); >+ ITreeAdapter treeAdapter = ( ITreeAdapter )adapter; >+ treeAdapter.setToolTipText( null ); >+ String event = JSConst.EVENT_CELL_TOOLTIP_REQUESTED; >+ if( WidgetLCAUtil.wasEventSent( tree, event ) ) { >+ ICellToolTipProvider provider = treeAdapter.getCellToolTipProvider(); >+ if( provider != null ) { >+ HttpServletRequest request = ContextProvider.getRequest(); >+ String cell = request.getParameter( JSConst.EVENT_CELL_TOOLTIP_DETAILS ); >+ String[] details = cell.split( "," ); >+ String itemId = details[ 0 ]; >+ int columnIndex = Integer.parseInt( details[ 1 ] ); >+ TreeItem item = getItemById( tree.getItems(), itemId ); >+ if( item != null >+ && ( columnIndex == 0 || columnIndex < tree.getColumnCount() ) ) >+ { >+ provider.getToolTipText( item, columnIndex ); >+ } >+ } >+ } >+ } >+ >+ private static void writeCellToolTipText( final Tree tree ) >+ throws IOException >+ { >+ Object adapter = tree.getAdapter( ITreeAdapter.class ); >+ ITreeAdapter treeAdapter = ( ITreeAdapter )adapter; >+ String text = treeAdapter.getToolTipText(); >+ if( text != null ) { >+ JSWriter writer = JSWriter.getWriterFor( tree ); >+ text = WidgetLCAUtil.escapeText( text, false ); >+ text = WidgetLCAUtil.replaceNewLines( text, "<br/>" ); >+ writer.call( "setCellToolTipText", new String[]{ text } ); >+ } >+ } >+ >+ private static TreeItem getItemById( final TreeItem[] items, >+ final String itemId ) >+ { >+ TreeItem result = null; >+ for( int i = 0; i < items.length && result == null; i++ ) { >+ if( WidgetUtil.getId( items[ i ] ).equals( itemId ) ) { >+ result = items[ i ]; >+ } else if( items[ i ].getExpanded() ) { >+ result = getItemById( items[ i ].getItems(), itemId ); >+ } >+ } >+ return result; >+ } >+ > ////////////////// > // Helping methods > >#P org.eclipse.rap.rwt.q07.jstest >Index: js/org/eclipse/rwt/test/tests/TableTest.js >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/TableTest.js,v >retrieving revision 1.4 >diff -u -r1.4 TableTest.js >--- js/org/eclipse/rwt/test/tests/TableTest.js 13 Dec 2010 11:20:57 -0000 1.4 >+++ js/org/eclipse/rwt/test/tests/TableTest.js 26 Jan 2011 14:50:15 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2010 EclipseSource and others. All rights reserved. >+ * Copyright (c) 2010, 2011 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 >@@ -114,8 +114,37 @@ > table.destroy(); > }, > >+ testEnableCellToolTip : function() { >+ var table = this._createDefaultTable(); >+ assertNull( table._cellToolTip ); >+ assertNull( table._clientArea.getToolTip() ); >+ table.setEnableCellToolTip( true ); >+ assertNotNull( table._cellToolTip ); >+ assertNotNull( table._clientArea.getToolTip() ); >+ table.setEnableCellToolTip( false ); >+ assertNull( table._cellToolTip ); >+ assertNull( table._clientArea.getToolTip() ); >+ table.destroy(); >+ }, >+ >+ testRequestCellToolTipText : function() { >+ var testUtil = org.eclipse.rwt.test.fixture.TestUtil; >+ var table = this._createDefaultTable(); >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ widgetManager.add( table, "w3", true ); >+ table.setEnableCellToolTip( true ); >+ testUtil.prepareTimerUse(); >+ testUtil.initRequestLog(); >+ table._cellToolTip.setCell( "w45", 5 ); >+ testUtil.forceInterval( table._cellToolTip._showTimer ); >+ var msg = testUtil.getMessage(); >+ var param1 = "org.eclipse.swt.events.cellToolTipTextRequested=w3"; >+ var param2 = "org.eclipse.swt.events.cellToolTipTextRequested.cell=w45%2C5"; >+ assertTrue( msg.indexOf( param1 ) != -1 ); >+ assertTrue( msg.indexOf( param2 ) != -1 ); >+ table.destroy(); >+ }, > >- > ///////// > // Helper > >Index: js/org/eclipse/rwt/test/tests/TreeTest.js >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.q07.jstest/js/org/eclipse/rwt/test/tests/TreeTest.js,v >retrieving revision 1.22 >diff -u -r1.22 TreeTest.js >--- js/org/eclipse/rwt/test/tests/TreeTest.js 21 Jan 2011 17:04:18 -0000 1.22 >+++ js/org/eclipse/rwt/test/tests/TreeTest.js 26 Jan 2011 14:50:16 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2010 EclipseSource and others. All rights reserved. >+ * Copyright (c) 2010, 2011 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 >@@ -3167,6 +3167,36 @@ > tree.destroy(); > }, > >+ testEnableCellToolTip : function() { >+ var tree = this._createDefaultTree(); >+ assertNull( tree._cellToolTip ); >+ assertNull( tree._clientArea.getToolTip() ); >+ tree.setEnableCellToolTip( true ); >+ assertNotNull( tree._cellToolTip ); >+ assertNotNull( tree._clientArea.getToolTip() ); >+ tree.setEnableCellToolTip( false ); >+ assertNull( tree._cellToolTip ); >+ assertNull( tree._clientArea.getToolTip() ); >+ tree.destroy(); >+ }, >+ >+ testRequestCellToolTipText : function() { >+ var testUtil = org.eclipse.rwt.test.fixture.TestUtil; >+ var tree = this._createDefaultTree(); >+ var widgetManager = org.eclipse.swt.WidgetManager.getInstance(); >+ widgetManager.add( tree, "w3", true ); >+ tree.setEnableCellToolTip( true ); >+ testUtil.prepareTimerUse(); >+ testUtil.initRequestLog(); >+ tree._cellToolTip.setCell( "w45", 5 ); >+ testUtil.forceInterval( tree._cellToolTip._showTimer ); >+ var msg = testUtil.getMessage(); >+ var param1 = "org.eclipse.swt.events.cellToolTipTextRequested=w3"; >+ var param2 = "org.eclipse.swt.events.cellToolTipTextRequested.cell=w45%2C5"; >+ assertTrue( msg.indexOf( param1 ) != -1 ); >+ assertTrue( msg.indexOf( param2 ) != -1 ); >+ tree.destroy(); >+ }, > > ///////// > // helper >#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.31 >diff -u -r1.31 TableLCA_Test.java >--- src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java 22 Dec 2010 14:16:49 -0000 1.31 >+++ src/org/eclipse/swt/internal/widgets/tablekit/TableLCA_Test.java 26 Jan 2011 14:50:17 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -275,6 +275,24 @@ > Fixture.clearPreserved(); > } > >+ public void testPreserveEnableCellToolTip() { >+ Table table = new Table( shell, SWT.BORDER ); >+ Fixture.markInitialized( display ); >+ Fixture.preserveWidgets(); >+ IWidgetAdapter adapter = WidgetUtil.getAdapter( table ); >+ Boolean preserved >+ = ( Boolean )adapter.getPreserved( TableLCA.PROP_ENABLE_CELL_TOOLTIP ); >+ assertEquals( Boolean.FALSE, preserved ); >+ Fixture.clearPreserved(); >+ table.setData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP, Boolean.TRUE ); >+ Fixture.preserveWidgets(); >+ adapter = WidgetUtil.getAdapter( table ); >+ preserved >+ = ( Boolean )adapter.getPreserved( TableLCA.PROP_ENABLE_CELL_TOOLTIP ); >+ assertEquals( Boolean.TRUE, preserved ); >+ Fixture.clearPreserved(); >+ } >+ > public void testSetDataEvent() { > final StringBuffer log = new StringBuffer(); > final Table table = new Table( shell, SWT.VIRTUAL ); >@@ -816,17 +834,34 @@ > assertEquals( 0, table.getTopIndex() ); > } > >+ public void testWriteEnableCellToolTip() throws IOException { >+ Table table = new Table( shell, SWT.NONE ); >+ createTableItems( table, 5 ); >+ Fixture.fakeNewRequest(); >+ table.setData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP, Boolean.TRUE ); >+ TableLCA tableLCA = new TableLCA(); >+ tableLCA.renderChanges( table ); >+ String markup = Fixture.getAllMarkup(); >+ String expected = "w.setEnableCellToolTip( true )"; >+ assertTrue( markup.indexOf( expected ) != -1 ); >+ } >+ > public void testGetCellToolTipText() { > Table table = new Table( shell, SWT.NONE ); > createTableItems( table, 5 ); > Object adapter = table.getAdapter( ITableAdapter.class ); > final ITableAdapter tableAdapter = ( ITableAdapter )adapter; > tableAdapter.setCellToolTipProvider( new ICellToolTipProvider() { >- public void getToolTipText( final int itemIndex, >+ public void getToolTipText( final Item item, > final int columnIndex ) > { >- String text = "[" + itemIndex + "," + columnIndex + "]"; >- tableAdapter.setToolTipText( text ); >+ StringBuffer buffer = new StringBuffer(); >+ buffer.append( "[" ); >+ buffer.append( WidgetUtil.getId( item ) ); >+ buffer.append( "," ); >+ buffer.append( columnIndex ); >+ buffer.append( "]" ); >+ tableAdapter.setToolTipText( buffer.toString() ); > } > } ); > Fixture.fakeNewRequest(); >@@ -834,9 +869,10 @@ > String markup = Fixture.getAllMarkup(); > String expected = "w.setCellToolTipText("; > assertTrue( markup.indexOf( expected ) == -1 ); >- processCellToolTipRequest( table, 2, 0 ); >+ String itemId = WidgetUtil.getId( table.getItem( 2 ) ); >+ processCellToolTipRequest( table, itemId, 0 ); > markup = Fixture.getAllMarkup(); >- expected = "w.setCellToolTipText( \"[2,0]\" );"; >+ expected = "w.setCellToolTipText( \"[" + itemId + ",0]\" );"; > assertTrue( markup.indexOf( expected ) != -1 ); > } > >@@ -848,25 +884,36 @@ > = ( ITableAdapter )table.getAdapter( ITableAdapter.class ); > tableAdapter.setCellToolTipProvider( new ICellToolTipProvider() { > >- public void getToolTipText( final int itemIndex, final int columnIndex ) { >- log.append( "[" + itemIndex + "," + columnIndex + "]" ); >+ public void getToolTipText( final Item item, final int columnIndex ) { >+ StringBuffer buffer = new StringBuffer(); >+ buffer.append( "[" ); >+ buffer.append( WidgetUtil.getId( item ) ); >+ buffer.append( "," ); >+ buffer.append( columnIndex ); >+ buffer.append( "]" ); >+ log.append( buffer.toString() ); > } > } ); >- processCellToolTipRequest( table, 0, 0 ); >- assertEquals( "[0,0]", log.toString() ); >+ String itemId = WidgetUtil.getId( table.getItem( 0 ) ); >+ processCellToolTipRequest( table, itemId, 0 ); >+ String expected = "[" + itemId + ",0]"; >+ assertEquals( expected, log.toString() ); > log.setLength( 0 ); >- processCellToolTipRequest( table, 2, 0 ); >- assertEquals( "[2,0]", log.toString() ); >+ itemId = WidgetUtil.getId( table.getItem( 2 ) ); >+ processCellToolTipRequest( table, itemId, 0 ); >+ expected = "[" + itemId + ",0]"; >+ assertEquals( expected, log.toString() ); > log.setLength( 0 ); >- processCellToolTipRequest( table, 3, 0 ); >+ processCellToolTipRequest( table, "xyz", 0 ); > assertEquals( "", log.toString() ); >- processCellToolTipRequest( table, 2, 1 ); >+ processCellToolTipRequest( table, itemId, 1 ); > assertEquals( "", log.toString() ); > createTableColumns( table, 2 ); >- processCellToolTipRequest( table, 2, 1 ); >- assertEquals( "[2,1]", log.toString() ); >+ processCellToolTipRequest( table, itemId, 1 ); >+ expected = "[" + itemId + ",1]"; >+ assertEquals( expected, log.toString() ); > log.setLength( 0 ); >- processCellToolTipRequest( table, 2, 2 ); >+ processCellToolTipRequest( table, itemId, 2 ); > assertEquals( "", log.toString() ); > } > >@@ -921,16 +968,16 @@ > } > > private static void processCellToolTipRequest( final Table table, >- final int item, >+ final String itemId, > final int column ) > { > Fixture.fakeNewRequest(); > String displayId = DisplayUtil.getId( table.getDisplay() ); > Fixture.fakeRequestParam( RequestParams.UIROOT, displayId ); > String tableId = WidgetUtil.getId( table ); >- Fixture.fakeRequestParam( TableLCA.EVENT_CELL_TOOLTIP_REQUESTED, tableId ); >- String cellString = item + "," + column; >- Fixture.fakeRequestParam( TableLCA.EVENT_CELL_TOOLTIP_DETAILS, cellString ); >+ Fixture.fakeRequestParam( JSConst.EVENT_CELL_TOOLTIP_REQUESTED, tableId ); >+ String cellString = itemId + "," + column; >+ Fixture.fakeRequestParam( JSConst.EVENT_CELL_TOOLTIP_DETAILS, cellString ); > Fixture.executeLifeCycleFromServerThread(); > } > >Index: src/org/eclipse/swt/internal/widgets/treekit/TreeLCA_Test.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.rwt.test/org.eclipse.rap.rwt.q07.test/src/org/eclipse/swt/internal/widgets/treekit/TreeLCA_Test.java,v >retrieving revision 1.15 >diff -u -r1.15 TreeLCA_Test.java >--- src/org/eclipse/swt/internal/widgets/treekit/TreeLCA_Test.java 22 Dec 2010 14:03:56 -0000 1.15 >+++ src/org/eclipse/swt/internal/widgets/treekit/TreeLCA_Test.java 26 Jan 2011 14:50:17 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2002, 2010 Innoopract Informationssysteme GmbH. >+ * Copyright (c) 2002, 2011 Innoopract Informationssysteme GmbH. > * 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 >@@ -27,8 +27,7 @@ > import org.eclipse.swt.graphics.*; > import org.eclipse.swt.internal.events.ActivateAdapter; > import org.eclipse.swt.internal.events.ActivateEvent; >-import org.eclipse.swt.internal.widgets.ITreeAdapter; >-import org.eclipse.swt.internal.widgets.Props; >+import org.eclipse.swt.internal.widgets.*; > import org.eclipse.swt.internal.widgets.treekit.TreeLCA.ItemMetrics; > import org.eclipse.swt.layout.FillLayout; > import org.eclipse.swt.widgets.*; >@@ -530,6 +529,24 @@ > hasListeners = ( Boolean )adapter.getPreserved( Props.ACTIVATE_LISTENER ); > assertEquals( Boolean.TRUE, hasListeners ); > } >+ >+ public void testPreserveEnableCellToolTip() { >+ Tree tree = new Tree( shell, SWT.BORDER ); >+ Fixture.markInitialized( display ); >+ Fixture.preserveWidgets(); >+ IWidgetAdapter adapter = WidgetUtil.getAdapter( tree ); >+ Boolean preserved >+ = ( Boolean )adapter.getPreserved( TreeLCA.PROP_ENABLE_CELL_TOOLTIP ); >+ assertEquals( Boolean.FALSE, preserved ); >+ Fixture.clearPreserved(); >+ tree.setData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP, Boolean.TRUE ); >+ Fixture.preserveWidgets(); >+ adapter = WidgetUtil.getAdapter( tree ); >+ preserved >+ = ( Boolean )adapter.getPreserved( TreeLCA.PROP_ENABLE_CELL_TOOLTIP ); >+ assertEquals( Boolean.TRUE, preserved ); >+ Fixture.clearPreserved(); >+ } > > public void testSelectionEvent() { > final StringBuffer log = new StringBuffer(); >@@ -672,6 +689,149 @@ > String expected = "w.setHasScrollBarsSelectionListener( true );"; > assertTrue( markup.indexOf( expected ) != -1 ); > } >+ >+ public void testWriteEnableCellToolTip() throws IOException { >+ Tree tree = new Tree( shell, SWT.NONE ); >+ createTreeItems( tree, 5 ); >+ Fixture.fakeNewRequest(); >+ tree.setData( ICellToolTipProvider.ENABLE_CELL_TOOLTIP, Boolean.TRUE ); >+ TreeLCA treeLCA = new TreeLCA(); >+ treeLCA.renderChanges( tree ); >+ String markup = Fixture.getAllMarkup(); >+ String expected = "w.setEnableCellToolTip( true )"; >+ assertTrue( markup.indexOf( expected ) != -1 ); >+ } >+ >+ public void testGetCellToolTipText() { >+ Tree tree = new Tree( shell, SWT.NONE ); >+ createTreeItems( tree, 5 ); >+ Object adapter = tree.getAdapter( ITreeAdapter.class ); >+ final ITreeAdapter treeAdapter = ( ITreeAdapter )adapter; >+ treeAdapter.setCellToolTipProvider( new ICellToolTipProvider() { >+ public void getToolTipText( final Item item, >+ final int columnIndex ) >+ { >+ StringBuffer buffer = new StringBuffer(); >+ buffer.append( "[" ); >+ buffer.append( WidgetUtil.getId( item ) ); >+ buffer.append( "," ); >+ buffer.append( columnIndex ); >+ buffer.append( "]" ); >+ treeAdapter.setToolTipText( buffer.toString() ); >+ } >+ } ); >+ Fixture.fakeNewRequest(); >+ Fixture.executeLifeCycleFromServerThread(); >+ String markup = Fixture.getAllMarkup(); >+ String expected = "w.setCellToolTipText("; >+ assertTrue( markup.indexOf( expected ) == -1 ); >+ String itemId = WidgetUtil.getId( tree.getItem( 2 ) ); >+ processCellToolTipRequest( tree, itemId, 0 ); >+ markup = Fixture.getAllMarkup(); >+ expected = "w.setCellToolTipText( \"[" + itemId + ",0]\" );"; >+ assertTrue( markup.indexOf( expected ) != -1 ); >+ } >+ >+ public void testGetCellToolTipTextForSubitems() { >+ Tree tree = new Tree( shell, SWT.NONE ); >+ createTreeItems( tree, 5 ); >+ Object adapter = tree.getAdapter( ITreeAdapter.class ); >+ final ITreeAdapter treeAdapter = ( ITreeAdapter )adapter; >+ treeAdapter.setCellToolTipProvider( new ICellToolTipProvider() { >+ public void getToolTipText( final Item item, >+ final int columnIndex ) >+ { >+ StringBuffer buffer = new StringBuffer(); >+ buffer.append( "[" ); >+ buffer.append( WidgetUtil.getId( item ) ); >+ buffer.append( "," ); >+ buffer.append( columnIndex ); >+ buffer.append( "]" ); >+ treeAdapter.setToolTipText( buffer.toString() ); >+ } >+ } ); >+ Fixture.fakeNewRequest(); >+ Fixture.executeLifeCycleFromServerThread(); >+ String markup = Fixture.getAllMarkup(); >+ String expected = "w.setCellToolTipText("; >+ assertTrue( markup.indexOf( expected ) == -1 ); >+ String itemId = WidgetUtil.getId( tree.getItem( 2 ).getItem( 1 ) ); >+ processCellToolTipRequest( tree, itemId, 0 ); >+ markup = Fixture.getAllMarkup(); >+ expected = "w.setCellToolTipText( \"[" + itemId + ",0]\" );"; >+ assertTrue( markup.indexOf( expected ) != -1 ); >+ } >+ >+ public void testCellTooltipRequestForMissingCells() { >+ Tree tree = new Tree( shell, SWT.NONE ); >+ createTreeItems( tree, 3 ); >+ final StringBuffer log = new StringBuffer(); >+ final ITreeAdapter treeAdapter >+ = ( ITreeAdapter )tree.getAdapter( ITreeAdapter.class ); >+ treeAdapter.setCellToolTipProvider( new ICellToolTipProvider() { >+ >+ public void getToolTipText( final Item item, final int columnIndex ) { >+ StringBuffer buffer = new StringBuffer(); >+ buffer.append( "[" ); >+ buffer.append( WidgetUtil.getId( item ) ); >+ buffer.append( "," ); >+ buffer.append( columnIndex ); >+ buffer.append( "]" ); >+ log.append( buffer.toString() ); >+ } >+ } ); >+ String itemId = WidgetUtil.getId( tree.getItem( 0 ) ); >+ processCellToolTipRequest( tree, itemId, 0 ); >+ String expected = "[" + itemId + ",0]"; >+ assertEquals( expected, log.toString() ); >+ log.setLength( 0 ); >+ itemId = WidgetUtil.getId( tree.getItem( 2 ) ); >+ processCellToolTipRequest( tree, itemId, 0 ); >+ expected = "[" + itemId + ",0]"; >+ assertEquals( expected, log.toString() ); >+ log.setLength( 0 ); >+ processCellToolTipRequest( tree, "xyz", 0 ); >+ assertEquals( "", log.toString() ); >+ processCellToolTipRequest( tree, itemId, 1 ); >+ assertEquals( "", log.toString() ); >+ createTreeColumns( tree, 2 ); >+ processCellToolTipRequest( tree, itemId, 1 ); >+ expected = "[" + itemId + ",1]"; >+ assertEquals( expected, log.toString() ); >+ log.setLength( 0 ); >+ processCellToolTipRequest( tree, itemId, 2 ); >+ assertEquals( "", log.toString() ); >+ } >+ >+ private static void createTreeColumns( final Tree tree, final int count ) { >+ for( int i = 0; i < count; i++ ) { >+ new TreeColumn( tree, SWT.NONE ); >+ } >+ } >+ >+ private static void createTreeItems( final Tree tree, final int count ) { >+ for( int i = 0; i < count; i++ ) { >+ TreeItem item = new TreeItem( tree, SWT.NONE ); >+ for( int j = 0; j < count; j++ ) { >+ new TreeItem( item, SWT.NONE ); >+ } >+ item.setExpanded( true ); >+ } >+ } >+ >+ private static void processCellToolTipRequest( final Tree tree, >+ final String itemId, >+ final int column ) >+ { >+ Fixture.fakeNewRequest(); >+ String displayId = DisplayUtil.getId( tree.getDisplay() ); >+ Fixture.fakeRequestParam( RequestParams.UIROOT, displayId ); >+ String treeId = WidgetUtil.getId( tree ); >+ Fixture.fakeRequestParam( JSConst.EVENT_CELL_TOOLTIP_REQUESTED, treeId ); >+ String cellString = itemId + "," + column; >+ Fixture.fakeRequestParam( JSConst.EVENT_CELL_TOOLTIP_DETAILS, cellString ); >+ Fixture.executeLifeCycleFromServerThread(); >+ } > > // TODO [tb] : Test for fake redraw calls checkAllData >
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 334675
: 187649