1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-28 11:25:35 +02:00

Enable hovers for information presenter, related to bug 282495

This commit is contained in:
Anton Leherbauer 2010-01-12 14:37:04 +00:00
parent 6cd02fdd00
commit 024efc1e22
2 changed files with 10 additions and 33 deletions

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007, 2008 Wind River Systems, Inc. and others. * Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -10,18 +10,14 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.ui.text.c.hover; package org.eclipse.cdt.internal.ui.text.c.hover;
import java.lang.ref.Reference;
import org.eclipse.jface.text.IInformationControl; import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator; import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region; import org.eclipse.swt.SWT;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.part.IWorkbenchPartOrientation;
/** /**
* A hover to explore macro expansion. * A hover to explore macro expansion.
@ -30,8 +26,6 @@ import org.eclipse.ui.IEditorPart;
*/ */
public class CMacroExpansionHover extends AbstractCEditorTextHover { public class CMacroExpansionHover extends AbstractCEditorTextHover {
private Reference<CMacroExpansionInput> fCache;
@Override @Override
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) { public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
Object hoverInfo= getHoverInfo2(textViewer, hoverRegion); Object hoverInfo= getHoverInfo2(textViewer, hoverRegion);
@ -66,30 +60,13 @@ public class CMacroExpansionHover extends AbstractCEditorTextHover {
public IInformationControlCreator getInformationPresenterControlCreator() { public IInformationControlCreator getInformationPresenterControlCreator() {
return new IInformationControlCreator() { return new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent) { public IInformationControl createInformationControl(Shell parent) {
return new CMacroExpansionExplorationControl(parent, getCachedMacroExpansionInput()); IEditorPart editor= getEditor();
int orientation= SWT.NONE;
if (editor instanceof IWorkbenchPartOrientation)
orientation= ((IWorkbenchPartOrientation) editor).getOrientation();
return new SourceViewerInformationControl(parent, true, orientation, null);
} }
}; };
} }
protected CMacroExpansionInput getCachedMacroExpansionInput() {
if (fCache == null) {
return null;
}
CMacroExpansionInput input= fCache.get();
fCache= null;
if (input == null) {
IEditorPart editor= getEditor();
if (editor != null) {
ISelectionProvider provider= editor.getSite().getSelectionProvider();
ISelection selection= provider.getSelection();
if (selection instanceof ITextSelection) {
ITextSelection textSelection= (ITextSelection) selection;
IRegion region= new Region(textSelection.getOffset(), textSelection.getLength());
input= CMacroExpansionInput.create(editor, region, true);
}
}
}
return input;
}
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2002, 2009 QNX Software Systems and others. * Copyright (c) 2002, 2010 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -834,7 +834,7 @@ public class CSourceHover extends AbstractCEditorTextHover {
int orientation= SWT.NONE; int orientation= SWT.NONE;
if (editor instanceof IWorkbenchPartOrientation) if (editor instanceof IWorkbenchPartOrientation)
orientation= ((IWorkbenchPartOrientation) editor).getOrientation(); orientation= ((IWorkbenchPartOrientation) editor).getOrientation();
return new SourceViewerInformationControl(parent, true, orientation, getTooltipAffordanceString()); return new SourceViewerInformationControl(parent, true, orientation, null);
} }
}; };
} }