mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-10 17:55:39 +02:00
Bug 320372 - Memory Browser should invoke becomesVisible/becomesHidden on renderings
Also re-adds public constant MemoryBrowser.ID which got removed in version 1.21
This commit is contained in:
parent
5a1885c1a6
commit
faf5bdce21
1 changed files with 54 additions and 13 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2009-2010 Wind River Systems, Inc. and others.
|
* Copyright (c) 2009, 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
|
||||||
|
@ -117,6 +117,8 @@ import org.eclipse.ui.progress.WorkbenchJob;
|
||||||
@SuppressWarnings("restriction")
|
@SuppressWarnings("restriction")
|
||||||
public class MemoryBrowser extends ViewPart implements IDebugContextListener, IMemoryRenderingSite, IDebugEventSetListener
|
public class MemoryBrowser extends ViewPart implements IDebugContextListener, IMemoryRenderingSite, IDebugEventSetListener
|
||||||
{
|
{
|
||||||
|
public static final String ID = "org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser"; //$NON-NLS-1$
|
||||||
|
|
||||||
protected StackLayout fStackLayout;
|
protected StackLayout fStackLayout;
|
||||||
private Composite fRenderingsComposite;
|
private Composite fRenderingsComposite;
|
||||||
private GoToAddressBarWidget fGotoAddressBar;
|
private GoToAddressBarWidget fGotoAddressBar;
|
||||||
|
@ -125,6 +127,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
private Label fUnsupportedLabel;
|
private Label fUnsupportedLabel;
|
||||||
private Composite fMainComposite;
|
private Composite fMainComposite;
|
||||||
private String defaultRenderingTypeId = null;
|
private String defaultRenderingTypeId = null;
|
||||||
|
private IMemoryRendering fActiveRendering;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Every memory retrieval object is given its own tab folder. Typically all
|
* Every memory retrieval object is given its own tab folder. Typically all
|
||||||
|
@ -197,6 +200,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
return fMainComposite;
|
return fMainComposite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
// set default rendering type. use the traditional rendering if available. fallback on first registered type.
|
// set default rendering type. use the traditional rendering if available. fallback on first registered type.
|
||||||
// this should eventually be configurable via a preference page.
|
// this should eventually be configurable via a preference page.
|
||||||
|
@ -326,6 +330,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
return site.getId() + (site.getSecondaryId() != null ? (":" + site.getSecondaryId()) : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
return site.getId() + (site.getSecondaryId() != null ? (":" + site.getSecondaryId()) : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
DebugPlugin.getDefault().removeDebugEventListener(this);
|
DebugPlugin.getDefault().removeDebugEventListener(this);
|
||||||
IDebugContextService contextService =
|
IDebugContextService contextService =
|
||||||
|
@ -407,6 +412,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
fContextFolders.put(retrieval, activeFolder);
|
fContextFolders.put(retrieval, activeFolder);
|
||||||
activeFolder.setSelection(item);
|
activeFolder.setSelection(item);
|
||||||
getSite().getSelectionProvider().setSelection(new StructuredSelection(item.getData(KEY_RENDERING)));
|
getSite().getSelectionProvider().setSelection(new StructuredSelection(item.getData(KEY_RENDERING)));
|
||||||
|
handleTabActivated(item);
|
||||||
} catch (DebugException e1) {
|
} catch (DebugException e1) {
|
||||||
fGotoAddressBar.handleExpressionStatus(new Status(Status.ERROR, MemoryBrowserPlugin.PLUGIN_ID,
|
fGotoAddressBar.handleExpressionStatus(new Status(Status.ERROR, MemoryBrowserPlugin.PLUGIN_ID,
|
||||||
Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e1)); //$NON-NLS-1$
|
Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e1)); //$NON-NLS-1$
|
||||||
|
@ -426,6 +432,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
rendering = populateTabWithRendering(item, retrieval, context, memorySpaceId, expression);
|
rendering = populateTabWithRendering(item, retrieval, context, memorySpaceId, expression);
|
||||||
activeFolder.setSelection(item);
|
activeFolder.setSelection(item);
|
||||||
getSite().getSelectionProvider().setSelection(new StructuredSelection(item.getData(KEY_RENDERING)));
|
getSite().getSelectionProvider().setSelection(new StructuredSelection(item.getData(KEY_RENDERING)));
|
||||||
|
handleTabActivated(item);
|
||||||
} catch (DebugException e) {
|
} catch (DebugException e) {
|
||||||
fGotoAddressBar.handleExpressionStatus(new Status(Status.ERROR, MemoryBrowserPlugin.PLUGIN_ID,
|
fGotoAddressBar.handleExpressionStatus(new Status(Status.ERROR, MemoryBrowserPlugin.PLUGIN_ID,
|
||||||
Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e)); //$NON-NLS-1$
|
Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e)); //$NON-NLS-1$
|
||||||
|
@ -442,6 +449,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
rendering instanceof IRepositionableMemoryRendering) {
|
rendering instanceof IRepositionableMemoryRendering) {
|
||||||
final IRepositionableMemoryRendering renderingFinal = (IRepositionableMemoryRendering) rendering;
|
final IRepositionableMemoryRendering renderingFinal = (IRepositionableMemoryRendering) rendering;
|
||||||
new Thread() {
|
new Thread() {
|
||||||
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
BigInteger newBase = getExpressionAddress(retrieval, expression, context, memorySpaceId);
|
BigInteger newBase = getExpressionAddress(retrieval, expression, context, memorySpaceId);
|
||||||
|
@ -542,6 +550,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
|
|
||||||
// listener to dispose rendering resources for each closed tab
|
// listener to dispose rendering resources for each closed tab
|
||||||
folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
|
folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
|
||||||
|
@Override
|
||||||
public void close(CTabFolderEvent event) {
|
public void close(CTabFolderEvent event) {
|
||||||
event.doit = true;
|
event.doit = true;
|
||||||
CTabItem item = (CTabItem) event.item;
|
CTabItem item = (CTabItem) event.item;
|
||||||
|
@ -590,6 +599,9 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
// always deactivate rendering before disposing it.
|
// always deactivate rendering before disposing it.
|
||||||
rendering.deactivated();
|
rendering.deactivated();
|
||||||
rendering.dispose();
|
rendering.dispose();
|
||||||
|
if (rendering == fActiveRendering) {
|
||||||
|
fActiveRendering = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
map.clear();
|
map.clear();
|
||||||
|
|
||||||
|
@ -640,6 +652,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
final Action action = new Action(
|
final Action action = new Action(
|
||||||
type.getLabel(), IAction.AS_RADIO_BUTTON)
|
type.getLabel(), IAction.AS_RADIO_BUTTON)
|
||||||
{
|
{
|
||||||
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
setDefaultRenderingTypeId(type.getId());
|
setDefaultRenderingTypeId(type.getId());
|
||||||
|
@ -699,6 +712,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
getControl().setFocus();
|
getControl().setFocus();
|
||||||
}
|
}
|
||||||
|
@ -760,6 +774,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
|
|
||||||
public void propertyChange(final PropertyChangeEvent event) {
|
public void propertyChange(final PropertyChangeEvent event) {
|
||||||
WorkbenchJob job = new WorkbenchJob("MemoryBrowser PropertyChanged") { //$NON-NLS-1$
|
WorkbenchJob job = new WorkbenchJob("MemoryBrowser PropertyChanged") { //$NON-NLS-1$
|
||||||
|
@Override
|
||||||
public IStatus runInUIThread(IProgressMonitor monitor) {
|
public IStatus runInUIThread(IProgressMonitor monitor) {
|
||||||
if(tab.isDisposed())
|
if(tab.isDisposed())
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
|
@ -803,6 +818,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
if (retrieval instanceof IMemorySpaceAwareMemoryBlockRetrieval) {
|
if (retrieval instanceof IMemorySpaceAwareMemoryBlockRetrieval) {
|
||||||
final IMemoryBlockRetrieval _retrieval = retrieval;
|
final IMemoryBlockRetrieval _retrieval = retrieval;
|
||||||
((IMemorySpaceAwareMemoryBlockRetrieval)retrieval).getMemorySpaces(context, new GetMemorySpacesRequest(){
|
((IMemorySpaceAwareMemoryBlockRetrieval)retrieval).getMemorySpaces(context, new GetMemorySpacesRequest(){
|
||||||
|
@Override
|
||||||
public void done() {
|
public void done() {
|
||||||
updateTab(_retrieval, context, isSuccess() ? getMemorySpaces() : new String[0]);
|
updateTab(_retrieval, context, isSuccess() ? getMemorySpaces() : new String[0]);
|
||||||
}
|
}
|
||||||
|
@ -848,6 +864,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
CTabFolder tabFolder = fContextFolders.get(retrieval);
|
CTabFolder tabFolder = fContextFolders.get(retrieval);
|
||||||
if(tabFolder != null) {
|
if(tabFolder != null) {
|
||||||
fStackLayout.topControl = tabFolder;
|
fStackLayout.topControl = tabFolder;
|
||||||
|
handleTabActivated(tabFolder.getSelection());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tabFolder = createTabFolder(fRenderingsComposite);
|
tabFolder = createTabFolder(fRenderingsComposite);
|
||||||
|
@ -858,6 +875,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
updateExpression(tabItem);
|
updateExpression(tabItem);
|
||||||
updateMemorySpaceControlSelection(tabItem);
|
updateMemorySpaceControlSelection(tabItem);
|
||||||
getSite().getSelectionProvider().setSelection(new StructuredSelection(tabItem.getData(KEY_RENDERING)));
|
getSite().getSelectionProvider().setSelection(new StructuredSelection(tabItem.getData(KEY_RENDERING)));
|
||||||
|
handleTabActivated(tabItem);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -920,6 +938,28 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected final void handleTabActivated(CTabItem item) {
|
||||||
|
if (item != null) {
|
||||||
|
updateActiveRendering((IMemoryRendering) item.getData(KEY_RENDERING));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateActiveRendering(IMemoryRendering rendering) {
|
||||||
|
if (fActiveRendering == rendering) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (fActiveRendering != null) {
|
||||||
|
fActiveRendering.deactivated();
|
||||||
|
fActiveRendering.becomesHidden();
|
||||||
|
}
|
||||||
|
if (rendering != null) {
|
||||||
|
rendering.activated();
|
||||||
|
rendering.becomesVisible();
|
||||||
|
}
|
||||||
|
fActiveRendering = rendering;
|
||||||
|
}
|
||||||
|
|
||||||
private void setMemorySpaceControlVisible(boolean visible) {
|
private void setMemorySpaceControlVisible(boolean visible) {
|
||||||
FormData data = (FormData)fGotoAddressBarControl.getLayoutData();
|
FormData data = (FormData)fGotoAddressBarControl.getLayoutData();
|
||||||
if (visible) {
|
if (visible) {
|
||||||
|
@ -1155,6 +1195,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
UIJob job = new UIJob("Memory Browser UI Job"){ //$NON-NLS-1$
|
UIJob job = new UIJob("Memory Browser UI Job"){ //$NON-NLS-1$
|
||||||
|
@Override
|
||||||
public IStatus runInUIThread(IProgressMonitor monitor) {
|
public IStatus runInUIThread(IProgressMonitor monitor) {
|
||||||
runnable.run();
|
runnable.run();
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
|
|
Loading…
Add table
Reference in a new issue