1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 08:55:25 +02:00

[309001] Too many debug hovers in Preferences

This commit is contained in:
Anton Leherbauer 2010-04-23 06:24:18 +00:00
parent caa6d148db
commit 1e118a7e58
9 changed files with 231 additions and 27 deletions

View file

@ -1081,10 +1081,19 @@
<hover
label="%DebugTextHover.label"
description="%DebugTextHover.description"
class="org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover"
class="org.eclipse.cdt.debug.internal.ui.editors.DelegatingDebugTextHover"
id="org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover">
</hover>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.cdt.debug.core.model.ICStackFrame"
class="org.eclipse.cdt.debug.internal.ui.editors.DebugTextHoverAdapterFactory">
<adapter type="org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover"/>
</factory>
</extension>
<extension
point="org.eclipse.debug.core.statusHandlers">
<statusHandler

View file

@ -0,0 +1,40 @@
/*******************************************************************************
* Copyright (c) 2010 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.editors;
import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
import org.eclipse.core.runtime.IAdapterFactory;
/**
* Adapter factory adapting an {@link ICStackFrame} to an {@link ICEditorTextHover}.
*
* @since 7.0
*/
public class DebugTextHoverAdapterFactory implements IAdapterFactory {
private static final Class<?>[] TYPES = { ICEditorTextHover.class };
private static final Object fDebugTextHover= new DebugTextHover();
@SuppressWarnings("rawtypes")
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adaptableObject instanceof ICStackFrame) {
return fDebugTextHover;
}
return null;
}
@SuppressWarnings("rawtypes")
public Class[] getAdapterList() {
return TYPES;
}
}

View file

@ -0,0 +1,102 @@
/*******************************************************************************
* Copyright (c) 2010 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.editors;
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHoverExtension;
import org.eclipse.jface.text.ITextHoverExtension2;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.ui.IEditorPart;
/**
* Common debug text hover delegating to debugger specific implementations
* based on active debug context.
*
* @since 7.0
*/
public class DelegatingDebugTextHover implements ICEditorTextHover, ITextHoverExtension, ITextHoverExtension2 {
private IEditorPart fEditor;
private ICEditorTextHover fDelegate;
/*
* @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer, int)
*/
public IRegion getHoverRegion(ITextViewer viewer, int offset) {
fDelegate = getDelegate();
if (fDelegate != null) {
return fDelegate.getHoverRegion(viewer, offset);
}
return null;
}
/*
* @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
*/
@SuppressWarnings("deprecation")
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
fDelegate = getDelegate();
if (fDelegate != null) {
return fDelegate.getHoverInfo(textViewer, hoverRegion);
}
return null;
}
/*
* @see org.eclipse.jface.text.ITextHoverExtension2#getHoverInfo2(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
*/
@SuppressWarnings("deprecation")
public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
fDelegate = getDelegate();
if (fDelegate instanceof ITextHoverExtension2) {
return ((ITextHoverExtension2) fDelegate).getHoverInfo2(textViewer, hoverRegion);
}
// fall back to legacy method
if (fDelegate != null) {
return fDelegate.getHoverInfo(textViewer, hoverRegion);
}
return null;
}
/*
* @see org.eclipse.jface.text.ITextHoverExtension#getHoverControlCreator()
*/
public IInformationControlCreator getHoverControlCreator() {
if (fDelegate instanceof ITextHoverExtension) {
return ((ITextHoverExtension) fDelegate).getHoverControlCreator();
}
return null;
}
/*
* @see org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover#setEditor(org.eclipse.ui.IEditorPart)
*/
public final void setEditor(IEditorPart editor) {
fEditor = editor;
}
private ICEditorTextHover getDelegate() {
IAdaptable context = DebugUITools.getDebugContext();
if (context != null) {
ICEditorTextHover hover = (ICEditorTextHover) context.getAdapter(ICEditorTextHover.class);
if (hover != null) {
hover.setEditor(fEditor);
}
return hover;
}
return null;
}
}

View file

@ -24,9 +24,6 @@ launchTab.sourceLookup.name=Source
launchTab.common.name=Common
launchTab.environment.name=Environment
editorTextHover.label=GDB Debugger
editorTextHover.description=Shows formatted value in debugger hover
breakpoints.property.filter=Filter
tracepoints.property.common=Common
tracepoints.property.actions=Actions

View file

@ -318,15 +318,6 @@
</initializer>
</extension>
<extension
point="org.eclipse.cdt.ui.textHovers">
<hover
label="%editorTextHover.label"
description="%editorTextHover.description"
class="org.eclipse.cdt.dsf.gdb.internal.ui.GdbDebugTextHover"
id="org.eclipse.cdt.dsf.gdb.ui.GdbDebugTextHover">
</hover>
</extension>
<extension
point="org.eclipse.debug.ui.contextViewBindings">
</extension>

View file

@ -58,6 +58,7 @@ import org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.GdbViewModelAdapter;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
@ -118,6 +119,7 @@ public class GdbAdapterFactory
final GdbStartTracingCommand fStartTracingTarget;
final GdbStopTracingCommand fStopTracingTarget;
final GdbSaveTraceDataCommand fSaveTraceDataTarget;
final GdbDebugTextHover fDebugTextHover;
SessionAdapterSet(GdbLaunch launch) {
fLaunch = launch;
@ -196,6 +198,12 @@ public class GdbAdapterFactory
* session.
*/
session.registerModelAdapter(ILaunch.class, fLaunch);
/*
* Register debug hover adapter (bug 309001).
*/
fDebugTextHover = new GdbDebugTextHover();
session.registerModelAdapter(ICEditorTextHover.class, fDebugTextHover);
}
void dispose() {
@ -231,6 +239,8 @@ public class GdbAdapterFactory
session.unregisterModelAdapter(IStopTracingHandler.class);
session.unregisterModelAdapter(ISaveTraceDataHandler.class);
session.unregisterModelAdapter(ICEditorTextHover.class);
fSteppingModeTarget.dispose();
fStepIntoCommand.dispose();
fReverseStepIntoCommand.dispose();

View file

@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2006, 2009 Wind River Systems and others.
# Copyright (c) 2006, 2010 Wind River Systems 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
@ -58,6 +58,4 @@ StaleData.foreground.description=This color is used to indicate that a given ele
StaleData.background.label=Stale data background color
StaleData.background.description=This color is used to indicate that a given element of data in a view is stale. User should refresh the view to see current data. The background color is used only when the view is in no-columns mode.
editorTextHover.label=Debugger
editorTextHover.description=Shows formatted value in debugger hover
debugUpdateModes.label = Debug Update Modes

View file

@ -671,15 +671,6 @@
</description>
</colorDefinition>
</extension>
<extension
point="org.eclipse.cdt.ui.textHovers">
<hover
label="%editorTextHover.label"
description="%editorTextHover.description"
class="org.eclipse.cdt.dsf.debug.ui.DsfDebugTextHover"
id="org.eclipse.cdt.dsf.debug.ui.DsfDebugTextHover">
</hover>
</extension>
<extension
point="org.eclipse.ui.activities">
<activity
@ -749,4 +740,16 @@
</toggleTargetFactory>
</extension>
<!-- Adpater factory for common DSF debug text hover support.
This can be overridden by inidividual session adapters.
-->
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext"
class="org.eclipse.cdt.dsf.debug.internal.ui.DebugTextHoverAdapterFactory">
<adapter type="org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover"/>
</factory>
</extension>
</plugin>

View file

@ -0,0 +1,54 @@
/*******************************************************************************
* Copyright (c) 2010 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.ui.DsfDebugTextHover;
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
import org.eclipse.core.runtime.IAdapterFactory;
/**
* Adapter factory adapting an {@link IDMVMContext} to an {@link ICEditorTextHover}.
*
* @since 2.1
*/
public class DebugTextHoverAdapterFactory implements IAdapterFactory {
private static final Class<?>[] TYPES = { ICEditorTextHover.class };
private static final Object fDebugTextHover= new DsfDebugTextHover();
@SuppressWarnings("rawtypes")
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adaptableObject instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext) adaptableObject).getDMContext();
// try session specific hover
Object sessionHover = dmc.getAdapter(adapterType);
if (sessionHover != null) {
return sessionHover;
}
// use default
IFrameDMContext frameDmc = DMContexts.getAncestorOfType(dmc, IFrameDMContext.class);
if (frameDmc != null) {
return fDebugTextHover;
}
}
return null;
}
@SuppressWarnings("rawtypes")
public Class[] getAdapterList() {
return TYPES;
}
}