[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.rcp] Re: tooltips for the generated editor
|
You should have better subclassed ColumnLabelProvider.
Tom
Gilbert Mirenque schrieb:
> Thanks for the snippet links. They helped a lot. Now I tell you what I
> did. First I implemented my own CellLabelProvider called
> ToolTipCellLabelProvider. The class looks like this:
>
> public class ToolTipCellLabelProvider extends CellLabelProvider{
>
> private AdapterFactory adapterFactory;
>
> public ToolTipCellLabelProvider(AdapterFactory adapterFactory) {
> super();
> this.adapterFactory = adapterFactory;
> }
>
> public String getToolTipText(Object element) {
> String text = new
> AdapterFactoryItemDelegator(adapterFactory).getText(element);
> if(element instanceof EObject){
> if(((EObject) element).eClass() instanceof EModelElement){
> String documentation =
> EcoreUtil.getDocumentation((EModelElement)((EObject) element).eClass());
> if(documentation != null){
> text += " --> " + documentation;
> }
> }
> }
> return text;
> }
>
> public Point getToolTipShift(Object object) {
> return new Point(5,5);
> }
>
> public int getToolTipDisplayDelayTime(Object object) {
> return 0;
> }
>
> public int getToolTipTimeDisplayed(Object object) {
> return 5000;
> }
>
> public void update(ViewerCell cell) {
> cell.setText(cell.getElement().toString());
>
> }
> }
>
> Then I added the label provider to the TreeViewer of the first tab in
> the generated editor in that way:
>
> ViewerPane viewerPane = new ViewerPane(getSite().getPage(),
> CRUISeMetaModelEditor.this) {
> @Override
> public Viewer createViewer(Composite composite) {
> Tree tree = new Tree(composite, SWT.MULTI);
> TreeViewer newTreeViewer = new TreeViewer(tree);
> ///// tooltips
> ColumnViewerToolTipSupport.enableFor(newTreeViewer);
> ToolTipCellLabelProvider labelProvider = new
> ToolTipCellLabelProvider(adapterFactory);
> newTreeViewer.setLabelProvider(labelProvider);
> //////////////
> return newTreeViewer;
> }
> @Override
> public void requestActivation() {
> super.requestActivation();
> setCurrentViewerPane(this);
> }
> };
>
> But it doesn't work :( While debugging I noticed that getToolTipText(..)
> never is being accessed. So I thought that I don't have to add the
> tooltip support for the treeViewer, but for the selectionViewer directly
> because there setLabelProvider will be invoked as well (generated) and
> the selectionViewer = (TreeViewer)viewerPane.getViewer(); But the
> generated LabelProvider which is set is:
>
> new AdapterFactoryLabelProvider.ColorProvider(adapterFactory,
> selectionViewer)
>
> As there is no interface for ColorProvider I searched for all
> implementing interfaces of ColorProvider and all implementing interfaces
> of its super classes and let ToolTipCellLabelProvider implement that by
> just delegating it to an ColorProvider instance like this:
>
> ColumnViewerToolTipSupport.enableFor(selectionViewer);
> ColorProvider provider = new
> AdapterFactoryLabelProvider.ColorProvider(adapterFactory, selectionViewer);
> ToolTipCellLabelProvider labelProvider = new
> ToolTipCellLabelProvider(provider);
> selectionViewer.setLabelProvider(labelProvider);
>
> Now the tooltips worked adequate for all nodes in the tree. But now I
> have another problem. The normal texts and little images of the nodes
> won't be displayed anymore. As text I only get the toString output of
> the object. Do you have any suggestions how to combine both?
>
> best regards,
> Gilbert