mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-18 05:35:45 +02:00
Adopt ITextHoverExtension2
This commit is contained in:
parent
e8c27d5cae
commit
01a5281372
8 changed files with 135 additions and 48 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2007 QNX Software Systems and others.
|
* Copyright (c) 2002, 2008 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
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* IBM Corporation
|
* IBM Corporation
|
||||||
|
* Anton Leherbauer (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.text.c.hover;
|
package org.eclipse.cdt.internal.ui.text.c.hover;
|
||||||
|
@ -17,6 +18,7 @@ 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.ITextHoverExtension;
|
import org.eclipse.jface.text.ITextHoverExtension;
|
||||||
|
import org.eclipse.jface.text.ITextHoverExtension2;
|
||||||
import org.eclipse.jface.text.ITextViewer;
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
import org.eclipse.jface.text.Region;
|
import org.eclipse.jface.text.Region;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
|
@ -31,12 +33,11 @@ import org.eclipse.cdt.internal.ui.text.CWordFinder;
|
||||||
import org.eclipse.cdt.internal.ui.text.HTMLTextPresenter;
|
import org.eclipse.cdt.internal.ui.text.HTMLTextPresenter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AbstractCEditorTextHover Abstract class for providing hover information for C
|
* Abstract class for providing hover information for C
|
||||||
* elements.
|
* elements.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractCEditorTextHover implements ICEditorTextHover,
|
public abstract class AbstractCEditorTextHover implements ICEditorTextHover, ITextHoverExtension, ITextHoverExtension2 {
|
||||||
ITextHoverExtension {
|
|
||||||
|
|
||||||
private IEditorPart fEditor;
|
private IEditorPart fEditor;
|
||||||
|
|
||||||
|
@ -77,6 +78,13 @@ public abstract class AbstractCEditorTextHover implements ICEditorTextHover,
|
||||||
*/
|
*/
|
||||||
public abstract String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion);
|
public abstract String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see ITextHoverExtension2#getHoverInfo2(ITextViewer, IRegion)
|
||||||
|
*/
|
||||||
|
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
|
||||||
|
return getHoverInfo(textViewer, hoverRegion);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see ITextHoverExtension#getHoverControlCreator()
|
* @see ITextHoverExtension#getHoverControlCreator()
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
|
@ -91,6 +99,19 @@ public abstract class AbstractCEditorTextHover implements ICEditorTextHover,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.jface.text.ITextHoverExtension2#getInformationPresenterControlCreator()
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
public IInformationControlCreator getInformationPresenterControlCreator() {
|
||||||
|
return new IInformationControlCreator() {
|
||||||
|
public IInformationControl createInformationControl(Shell shell) {
|
||||||
|
int style= SWT.V_SCROLL | SWT.H_SCROLL;
|
||||||
|
return new DefaultInformationControl(shell, SWT.RESIZE | SWT.TOOL, style, new HTMLTextPresenter(false));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the tool tip affordance string.
|
* Returns the tool tip affordance string.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
* Copyright (c) 2002, 2008 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
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Anton Leherbauer (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.text.c.hover;
|
package org.eclipse.cdt.internal.ui.text.c.hover;
|
||||||
|
@ -22,6 +23,7 @@ import org.eclipse.jface.text.IInformationControlCreator;
|
||||||
import org.eclipse.jface.text.IRegion;
|
import org.eclipse.jface.text.IRegion;
|
||||||
import org.eclipse.jface.text.ITextHover;
|
import org.eclipse.jface.text.ITextHover;
|
||||||
import org.eclipse.jface.text.ITextHoverExtension;
|
import org.eclipse.jface.text.ITextHoverExtension;
|
||||||
|
import org.eclipse.jface.text.ITextHoverExtension2;
|
||||||
import org.eclipse.jface.text.ITextViewer;
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
||||||
import org.eclipse.ui.IEditorPart;
|
import org.eclipse.ui.IEditorPart;
|
||||||
|
@ -29,7 +31,7 @@ import org.eclipse.ui.IEditorPart;
|
||||||
/**
|
/**
|
||||||
* BestMatchHover
|
* BestMatchHover
|
||||||
*/
|
*/
|
||||||
public class BestMatchHover extends AbstractCEditorTextHover implements ITextHoverExtension, IInformationProviderExtension2 {
|
public class BestMatchHover extends AbstractCEditorTextHover {
|
||||||
|
|
||||||
private List fTextHoverSpecifications;
|
private List fTextHoverSpecifications;
|
||||||
private List fInstantiatedTextHovers;
|
private List fInstantiatedTextHovers;
|
||||||
|
@ -107,6 +109,38 @@ public class BestMatchHover extends AbstractCEditorTextHover implements ITextHov
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.jface.text.ITextHoverExtension2#getHoverInfo2(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
|
||||||
|
*/
|
||||||
|
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
|
||||||
|
|
||||||
|
checkTextHovers();
|
||||||
|
fBestHover= null;
|
||||||
|
|
||||||
|
if (fInstantiatedTextHovers == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
for (Iterator iterator= fInstantiatedTextHovers.iterator(); iterator.hasNext(); ) {
|
||||||
|
ITextHover hover= (ITextHover)iterator.next();
|
||||||
|
|
||||||
|
if (hover instanceof ITextHoverExtension2) {
|
||||||
|
Object info= ((ITextHoverExtension2) hover).getHoverInfo2(textViewer, hoverRegion);
|
||||||
|
if (info != null) {
|
||||||
|
fBestHover= hover;
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String s= hover.getHoverInfo(textViewer, hoverRegion);
|
||||||
|
if (s != null && s.trim().length() > 0) {
|
||||||
|
fBestHover= hover;
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.jface.text.ITextHoverExtension#getHoverControlCreator()
|
* @see org.eclipse.jface.text.ITextHoverExtension#getHoverControlCreator()
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
|
@ -123,6 +157,8 @@ public class BestMatchHover extends AbstractCEditorTextHover implements ITextHov
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
*/
|
*/
|
||||||
public IInformationControlCreator getInformationPresenterControlCreator() {
|
public IInformationControlCreator getInformationPresenterControlCreator() {
|
||||||
|
if (fBestHover instanceof ITextHoverExtension2)
|
||||||
|
return ((ITextHoverExtension2)fBestHover).getInformationPresenterControlCreator();
|
||||||
if (fBestHover instanceof IInformationProviderExtension2)
|
if (fBestHover instanceof IInformationProviderExtension2)
|
||||||
return ((IInformationProviderExtension2)fBestHover).getInformationPresenterControlCreator();
|
return ((IInformationProviderExtension2)fBestHover).getInformationPresenterControlCreator();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
* Copyright (c) 2002, 2008 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
|
||||||
|
@ -7,22 +7,25 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Anton Leherbauer (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.text.c.hover;
|
package org.eclipse.cdt.internal.ui.text.c.hover;
|
||||||
|
|
||||||
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
|
|
||||||
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.ITextHoverExtension;
|
import org.eclipse.jface.text.ITextHoverExtension;
|
||||||
|
import org.eclipse.jface.text.ITextHoverExtension2;
|
||||||
import org.eclipse.jface.text.ITextViewer;
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
||||||
import org.eclipse.ui.IEditorPart;
|
import org.eclipse.ui.IEditorPart;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CEditorTexHoverProxy
|
* CEditorTexHoverProxy
|
||||||
*/
|
*/
|
||||||
public class CEditorTextHoverProxy extends AbstractCEditorTextHover implements ITextHoverExtension, IInformationProviderExtension2 {
|
public class CEditorTextHoverProxy extends AbstractCEditorTextHover {
|
||||||
|
|
||||||
private CEditorTextHoverDescriptor fHoverDescriptor;
|
private CEditorTextHoverDescriptor fHoverDescriptor;
|
||||||
private ICEditorTextHover fHover;
|
private ICEditorTextHover fHover;
|
||||||
|
@ -66,6 +69,22 @@ public class CEditorTextHoverProxy extends AbstractCEditorTextHover implements I
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.jface.text.ITextHoverExtension2#getHoverInfo2(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
|
||||||
|
* @since 5.0
|
||||||
|
*/
|
||||||
|
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
|
||||||
|
if (ensureHoverCreated()) {
|
||||||
|
if (fHover instanceof ITextHoverExtension2)
|
||||||
|
return ((ITextHoverExtension2) fHover).getHoverInfo2(textViewer, hoverRegion);
|
||||||
|
else
|
||||||
|
return fHover.getHoverInfo(textViewer, hoverRegion);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean ensureHoverCreated() {
|
private boolean ensureHoverCreated() {
|
||||||
if (!isEnabled() || fHoverDescriptor == null)
|
if (!isEnabled() || fHoverDescriptor == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -98,9 +117,12 @@ public class CEditorTextHoverProxy extends AbstractCEditorTextHover implements I
|
||||||
* @see org.eclipse.jface.text.information.IInformationProviderExtension2#getInformationPresenterControlCreator()
|
* @see org.eclipse.jface.text.information.IInformationProviderExtension2#getInformationPresenterControlCreator()
|
||||||
*/
|
*/
|
||||||
public IInformationControlCreator getInformationPresenterControlCreator() {
|
public IInformationControlCreator getInformationPresenterControlCreator() {
|
||||||
if (ensureHoverCreated() && (fHover instanceof IInformationProviderExtension2))
|
if (ensureHoverCreated()) {
|
||||||
return ((IInformationProviderExtension2)fHover).getInformationPresenterControlCreator();
|
if (fHover instanceof ITextHoverExtension2)
|
||||||
|
return ((ITextHoverExtension2) fHover).getInformationPresenterControlCreator();
|
||||||
|
if (fHover instanceof IInformationProviderExtension2) // this is wrong, but left here for backwards compatibility
|
||||||
|
return ((IInformationProviderExtension2) fHover).getInformationPresenterControlCreator();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,12 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.text.c.hover;
|
package org.eclipse.cdt.internal.ui.text.c.hover;
|
||||||
|
|
||||||
|
|
||||||
import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
|
import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
|
||||||
import org.eclipse.jface.text.DefaultInformationControl;
|
import org.eclipse.jface.text.DefaultInformationControl;
|
||||||
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.ITextHoverExtension2;
|
||||||
import org.eclipse.jface.text.ITextViewer;
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
import org.eclipse.jface.text.information.IInformationProvider;
|
import org.eclipse.jface.text.information.IInformationProvider;
|
||||||
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
||||||
|
@ -40,7 +40,6 @@ import org.eclipse.cdt.internal.ui.text.HTMLTextPresenter;
|
||||||
*/
|
*/
|
||||||
public class CInformationProvider implements IInformationProvider, IInformationProviderExtension2 {
|
public class CInformationProvider implements IInformationProvider, IInformationProviderExtension2 {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default control creator.
|
* Default control creator.
|
||||||
*/
|
*/
|
||||||
|
@ -124,8 +123,8 @@ public class CInformationProvider implements IInformationProvider, IInformationP
|
||||||
* @see IInformationProviderExtension2#getInformationPresenterControlCreator()
|
* @see IInformationProviderExtension2#getInformationPresenterControlCreator()
|
||||||
*/
|
*/
|
||||||
public IInformationControlCreator getInformationPresenterControlCreator() {
|
public IInformationControlCreator getInformationPresenterControlCreator() {
|
||||||
if (fImplementation instanceof IInformationProviderExtension2) {
|
if (fImplementation instanceof ITextHoverExtension2) {
|
||||||
IInformationProviderExtension2 ext2= (IInformationProviderExtension2) fImplementation;
|
ITextHoverExtension2 ext2= (ITextHoverExtension2) fImplementation;
|
||||||
return ext2.getInformationPresenterControlCreator();
|
return ext2.getInformationPresenterControlCreator();
|
||||||
}
|
}
|
||||||
if (fPresenterControlCreator == null)
|
if (fPresenterControlCreator == null)
|
||||||
|
|
|
@ -52,4 +52,15 @@ public class CMacroExpansionControl extends AbstractSourceViewerInformationContr
|
||||||
return "org.eclipse.cdt.ui.text.hover.CMacroExpansion"; //$NON-NLS-1$
|
return "org.eclipse.cdt.ui.text.hover.CMacroExpansion"; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.cdt.internal.ui.text.AbstractSourceViewerInformationControl#setInput(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setInput(Object input) {
|
||||||
|
if (input instanceof CMacroExpansionInput) {
|
||||||
|
setInformation(((CMacroExpansionInput) input).fExplorer.getFullExpansion().getCodeAfterStep());
|
||||||
|
} else {
|
||||||
|
super.setInput(input);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
package org.eclipse.cdt.internal.ui.text.c.hover;
|
package org.eclipse.cdt.internal.ui.text.c.hover;
|
||||||
|
|
||||||
import java.lang.ref.Reference;
|
import java.lang.ref.Reference;
|
||||||
import java.lang.ref.SoftReference;
|
|
||||||
|
|
||||||
import org.eclipse.jface.text.IInformationControl;
|
import org.eclipse.jface.text.IInformationControl;
|
||||||
import org.eclipse.jface.text.IInformationControlCreator;
|
import org.eclipse.jface.text.IInformationControlCreator;
|
||||||
|
@ -20,7 +19,6 @@ import org.eclipse.jface.text.IRegion;
|
||||||
import org.eclipse.jface.text.ITextSelection;
|
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.jface.text.Region;
|
||||||
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
|
||||||
import org.eclipse.jface.viewers.ISelection;
|
import org.eclipse.jface.viewers.ISelection;
|
||||||
import org.eclipse.jface.viewers.ISelectionProvider;
|
import org.eclipse.jface.viewers.ISelectionProvider;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
|
@ -32,25 +30,21 @@ import org.eclipse.ui.IEditorPart;
|
||||||
*
|
*
|
||||||
* @since 5.0
|
* @since 5.0
|
||||||
*/
|
*/
|
||||||
public class CMacroExpansionHover extends AbstractCEditorTextHover implements IInformationProviderExtension2 {
|
public class CMacroExpansionHover extends AbstractCEditorTextHover {
|
||||||
|
|
||||||
private Reference fCache;
|
private Reference<CMacroExpansionInput> fCache;
|
||||||
|
|
||||||
|
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
|
||||||
|
Object hoverInfo= getHoverInfo2(textViewer, hoverRegion);
|
||||||
|
return hoverInfo != null ? hoverInfo.toString() : null;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.cdt.internal.ui.text.c.hover.AbstractCEditorTextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
|
* @see org.eclipse.cdt.internal.ui.text.c.hover.AbstractCEditorTextHover#getHoverInfo2(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
|
||||||
*/
|
*/
|
||||||
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
|
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
|
||||||
CMacroExpansionInput input= CMacroExpansionInput.create(getEditor(), hoverRegion, false);
|
CMacroExpansionInput input= CMacroExpansionInput.create(getEditor(), hoverRegion, false);
|
||||||
if (input == null) {
|
return input;
|
||||||
return null;
|
|
||||||
}
|
|
||||||
fCache= new SoftReference(input);
|
|
||||||
String result= input.fExplorer.getFullExpansion().getCodeAfterStep();
|
|
||||||
if (result.length() == 0) {
|
|
||||||
// expansion is empty - hover should show empty string
|
|
||||||
result= "/* EMPTY */"; //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -65,7 +59,7 @@ public class CMacroExpansionHover extends AbstractCEditorTextHover implements II
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see IInformationProviderExtension2#getInformationPresenterControlCreator()
|
* @see org.eclipse.cdt.internal.ui.text.c.hover.AbstractCEditorTextHover#getInformationPresenterControlCreator()
|
||||||
*/
|
*/
|
||||||
public IInformationControlCreator getInformationPresenterControlCreator() {
|
public IInformationControlCreator getInformationPresenterControlCreator() {
|
||||||
return new IInformationControlCreator() {
|
return new IInformationControlCreator() {
|
||||||
|
@ -81,7 +75,7 @@ public class CMacroExpansionHover extends AbstractCEditorTextHover implements II
|
||||||
if (fCache == null) {
|
if (fCache == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
CMacroExpansionInput input= (CMacroExpansionInput) fCache.get();
|
CMacroExpansionInput input= fCache.get();
|
||||||
fCache= null;
|
fCache= null;
|
||||||
if (input == null) {
|
if (input == null) {
|
||||||
IEditorPart editor= getEditor();
|
IEditorPart editor= getEditor();
|
||||||
|
|
|
@ -15,6 +15,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.Assert;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
|
@ -222,11 +223,17 @@ public class CMacroExpansionInput {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MacroExpansionExplorer fExplorer;
|
final MacroExpansionExplorer fExplorer;
|
||||||
boolean fStartWithFullExpansion= true;
|
boolean fStartWithFullExpansion= true;
|
||||||
|
|
||||||
private CMacroExpansionInput() {
|
private CMacroExpansionInput(MacroExpansionExplorer explorer) {
|
||||||
// forbidden
|
Assert.isNotNull(explorer);
|
||||||
|
fExplorer= explorer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return fExplorer.getFullExpansion().getCodeAfterStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -256,8 +263,7 @@ public class CMacroExpansionInput {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMacroExpansionInput input= new CMacroExpansionInput();
|
CMacroExpansionInput input= new CMacroExpansionInput(explorer);
|
||||||
input.fExplorer= explorer;
|
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,12 +35,10 @@ import org.eclipse.jface.text.IDocument;
|
||||||
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.ITextHoverExtension;
|
|
||||||
import org.eclipse.jface.text.ITextViewer;
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
import org.eclipse.jface.text.ITypedRegion;
|
import org.eclipse.jface.text.ITypedRegion;
|
||||||
import org.eclipse.jface.text.Region;
|
import org.eclipse.jface.text.Region;
|
||||||
import org.eclipse.jface.text.TextUtilities;
|
import org.eclipse.jface.text.TextUtilities;
|
||||||
import org.eclipse.jface.text.information.IInformationProviderExtension2;
|
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
import org.eclipse.ui.IEditorInput;
|
import org.eclipse.ui.IEditorInput;
|
||||||
|
@ -99,7 +97,7 @@ import org.eclipse.cdt.internal.ui.util.EditorUtility;
|
||||||
/**
|
/**
|
||||||
* A text hover presenting the source of the element under the cursor.
|
* A text hover presenting the source of the element under the cursor.
|
||||||
*/
|
*/
|
||||||
public class CSourceHover extends AbstractCEditorTextHover implements ITextHoverExtension, IInformationProviderExtension2 {
|
public class CSourceHover extends AbstractCEditorTextHover {
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue