/******************************************************************************* * Copyright (c) 2009, 2010 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; /** * Support for table tool-tips in RAP */ final class CellToolTipProvider implements ICellToolTipProvider { private TableViewer viewer; CellToolTipProvider( final TableViewer viewer ) { this.viewer = viewer; } static void attach( final TableViewer tableViewer, final IBaseLabelProvider 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 ); } 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 ); } }