diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java | 343 |
1 files changed, 179 insertions, 164 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java index 9a87113c9..310738b83 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/RenderingViewPane.java @@ -120,25 +120,28 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory */ @Override public void memoryBlocksAdded(final IMemoryBlock[] memoryBlocks) { - Display.getDefault().asyncExec(() -> { + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { - if (isDisposed()) { - return; - } + if (isDisposed()) { + return; + } - // check condition before doing anything - if (memoryBlocks == null || memoryBlocks.length <= 0) { - return; - } + // check condition before doing anything + if (memoryBlocks == null || memoryBlocks.length <= 0) { + return; + } - for (int i = 0; i < memoryBlocks.length; i++) { - IMemoryBlock memory = memoryBlocks[i]; + for (int i = 0; i < memoryBlocks.length; i++) { + IMemoryBlock memory = memoryBlocks[i]; - if (!fTabFolderForMemoryBlock.containsKey(memory)) { - createFolderForMemoryBlock(memory); + if (!fTabFolderForMemoryBlock.containsKey(memory)) { + createFolderForMemoryBlock(memory); + } + fAddedMemoryBlocks.add(memory); + updateToolBarActionsEnablement(); } - fAddedMemoryBlocks.add(memory); - updateToolBarActionsEnablement(); } }); } @@ -150,88 +153,91 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory */ @Override public void memoryBlocksRemoved(final IMemoryBlock[] memoryBlocks) { - Display.getDefault().asyncExec(() -> { - for (int j = 0; j < memoryBlocks.length; j++) { - IMemoryBlock mbRemoved = memoryBlocks[j]; - if (fTabFolderForMemoryBlock == null) { - return; - } - - // get all renderings from this memory block and remove them - // from the view - IMemoryRendering[] renderings = fRenderingMgr.getRenderingsFromMemoryBlock(mbRemoved); - - for (int k = 0; k < renderings.length; k++) { - removeMemoryRendering(renderings[k]); - } - - // remove a the tab folder if the memory block is removed - CTabFolder tabFolder = fTabFolderForMemoryBlock.get(mbRemoved); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + for (int j = 0; j < memoryBlocks.length; j++) { + IMemoryBlock mbRemoved = memoryBlocks[j]; + if (fTabFolderForMemoryBlock == null) { + return; + } - if (tabFolder == null) { - continue; - } + // get all renderings from this memory block and remove them + // from the view + IMemoryRendering[] renderings = fRenderingMgr.getRenderingsFromMemoryBlock(mbRemoved); - fTabFolderForMemoryBlock.remove(mbRemoved); - fMemoryBlockFromTabFolder.remove(tabFolder); - IMemoryBlockRetrieval retrieve = MemoryViewUtil.getMemoryBlockRetrieval(mbRemoved); - if (retrieve != null) { - if (fTabFolderForDebugView.contains(tabFolder)) { - fTabFolderForDebugView.remove(MemoryViewUtil.getHashCode(retrieve)); + for (int k = 0; k < renderings.length; k++) { + removeMemoryRendering(renderings[k]); } - } - if (!tabFolder.isDisposed()) { - // dispose all view tabs belonging to the tab folder - CTabItem[] items = tabFolder.getItems(); + // remove a the tab folder if the memory block is removed + CTabFolder tabFolder = fTabFolderForMemoryBlock.get(mbRemoved); - for (int i = 0; i < items.length; i++) { - disposeTab(items[i]); + if (tabFolder == null) { + continue; } - // dispose the tab folder - tabFolder.dispose(); - - // if this is the top control - if (tabFolder == fStackLayout.topControl) { + fTabFolderForMemoryBlock.remove(mbRemoved); + fMemoryBlockFromTabFolder.remove(tabFolder); + IMemoryBlockRetrieval retrieve = MemoryViewUtil.getMemoryBlockRetrieval(mbRemoved); + if (retrieve != null) { + if (fTabFolderForDebugView.contains(tabFolder)) { + fTabFolderForDebugView.remove(MemoryViewUtil.getHashCode(retrieve)); + } + } - // if memory view is visible and have a selection - // follow memory view's selection + if (!tabFolder.isDisposed()) { + // dispose all view tabs belonging to the tab folder + CTabItem[] items = tabFolder.getItems(); - ISelection selection = DebugUIPlugin.getActiveWorkbenchWindow().getSelectionService().getSelection(IDebugUIConstants.ID_MEMORY_VIEW); - IMemoryBlock mbToSelect = getMemoryBlock(selection); + for (int i = 0; i < items.length; i++) { + disposeTab(items[i]); + } - if (mbToSelect != null) { - // memory view may not have got the event and is - // still displaying - // the deleted memory block - if (mbToSelect != mbRemoved) { - handleMemoryBlockSelection(null, mbToSelect); - } else if ((MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve).length > 0)) { + // dispose the tab folder + tabFolder.dispose(); + + // if this is the top control + if (tabFolder == fStackLayout.topControl) { + + // if memory view is visible and have a selection + // follow memory view's selection + + ISelection selection = DebugUIPlugin.getActiveWorkbenchWindow().getSelectionService().getSelection(IDebugUIConstants.ID_MEMORY_VIEW); + IMemoryBlock mbToSelect = getMemoryBlock(selection); + + if (mbToSelect != null) { + // memory view may not have got the event and is + // still displaying + // the deleted memory block + if (mbToSelect != mbRemoved) { + handleMemoryBlockSelection(null, mbToSelect); + } else if ((MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve).length > 0)) { + mbToSelect = MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve)[0]; + handleMemoryBlockSelection(null, mbToSelect); + } else { + emptyFolder(); + } + } else if (MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve).length > 0) { // get + // to + // the + // next + // folder mbToSelect = MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve)[0]; handleMemoryBlockSelection(null, mbToSelect); } else { emptyFolder(); - } - } else if (MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve).length > 0) { // get - // to - // the - // next - // folder - mbToSelect = MemoryViewUtil.getMemoryBlockManager().getMemoryBlocks(retrieve)[0]; - handleMemoryBlockSelection(null, mbToSelect); - } else { - emptyFolder(); + } } + + // if not the top control + // no need to do anything } - // if not the top control - // no need to do anything + fAddedMemoryBlocks.remove(mbRemoved); + updateToolBarActionsEnablement(); } - - fAddedMemoryBlocks.remove(mbRemoved); - updateToolBarActionsEnablement(); } }); @@ -441,56 +447,59 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory public void memoryBlockRenderingAdded(final IMemoryRendering rendering) { - Display.getDefault().asyncExec(() -> { + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { - if (isDisposed()) { - return; - } + if (isDisposed()) { + return; + } - if (fAddedRenderings.contains(rendering)) { - return; - } + if (fAddedRenderings.contains(rendering)) { + return; + } - IMemoryBlock memoryblk = rendering.getMemoryBlock(); + IMemoryBlock memoryblk = rendering.getMemoryBlock(); - CTabFolder tabFolder = fTabFolderForMemoryBlock.get(memoryblk); + CTabFolder tabFolder = fTabFolderForMemoryBlock.get(memoryblk); - if (tabFolder == null) { - tabFolder = createFolderForMemoryBlock(memoryblk); - } + if (tabFolder == null) { + tabFolder = createFolderForMemoryBlock(memoryblk); + } - if (tabFolder == fStackLayout.topControl) { - // disable current view tab - if (getTopMemoryTab() != null) { - deactivateRendering(getTopMemoryTab()); - getTopMemoryTab().setEnabled(false); + if (tabFolder == fStackLayout.topControl) { + // disable current view tab + if (getTopMemoryTab() != null) { + deactivateRendering(getTopMemoryTab()); + getTopMemoryTab().setEnabled(false); + } } - } - fAddedRenderings.add(rendering); + fAddedRenderings.add(rendering); - int index = getIndexOfCreateRenderingTab(tabFolder); - if (index < 0) { - index = 0; - } - CTabItem tab = createTab(tabFolder, index); + int index = getIndexOfCreateRenderingTab(tabFolder); + if (index < 0) { + index = 0; + } + CTabItem tab = createTab(tabFolder, index); - MemoryViewTab viewTab = new MemoryViewTab(tab, rendering, getInstance()); - tabFolder.setSelection(tabFolder.indexOf(tab)); + MemoryViewTab viewTab = new MemoryViewTab(tab, rendering, getInstance()); + tabFolder.setSelection(tabFolder.indexOf(tab)); - if (tabFolder == fStackLayout.topControl) { - setRenderingSelection(viewTab.getRendering()); + if (tabFolder == fStackLayout.topControl) { + setRenderingSelection(viewTab.getRendering()); - // disable top view tab if the view pane is not visible - IMemoryViewTab top = getTopMemoryTab(); - if (top != null) { - top.setEnabled(fVisible); + // disable top view tab if the view pane is not visible + IMemoryViewTab top = getTopMemoryTab(); + if (top != null) { + top.setEnabled(fVisible); + } + } else { + deactivateRendering(viewTab); + viewTab.setEnabled(false); } - } else { - deactivateRendering(viewTab); - viewTab.setEnabled(false); - } - updateToolBarActionsEnablement(); + updateToolBarActionsEnablement(); + } }); } @@ -505,67 +514,70 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory // need to run the following code on the UI Thread to avoid invalid // thread access exception - Display.getDefault().asyncExec(() -> { - if (!fAddedRenderings.contains(rendering)) { - return; - } - - fAddedRenderings.remove(rendering); - - CTabFolder tabFolder = (CTabFolder) fStackLayout.topControl; + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + if (!fAddedRenderings.contains(rendering)) { + return; + } - if (tabFolder.isDisposed()) { - return; - } + fAddedRenderings.remove(rendering); - CTabItem[] tabs = tabFolder.getItems(); - boolean foundTab = false; - for (int i1 = 0; i1 < tabs.length; i1++) { - IMemoryViewTab viewTab1 = (IMemoryViewTab) tabs[i1].getData(); + CTabFolder tabFolder = (CTabFolder) fStackLayout.topControl; - if (tabs[i1].isDisposed()) { - continue; + if (tabFolder.isDisposed()) { + return; } - if (viewTab1.getRendering().getMemoryBlock() == memory) { - if (viewTab1.getRendering() == rendering) { - foundTab = true; - disposeTab(tabs[i1]); - break; + CTabItem[] tabs = tabFolder.getItems(); + boolean foundTab = false; + for (int i = 0; i < tabs.length; i++) { + IMemoryViewTab viewTab = (IMemoryViewTab) tabs[i].getData(); + + if (tabs[i].isDisposed()) { + continue; } + if (viewTab.getRendering().getMemoryBlock() == memory) { + if (viewTab.getRendering() == rendering) { + foundTab = true; + disposeTab(tabs[i]); + break; + } + + } } - } - // if a tab is not found in the current top control - // this deletion is a result of a debug target termination - // find memory from other folder and dispose the view tab - if (!foundTab) { - Enumeration<CTabFolder> enumeration = fTabFolderForMemoryBlock.elements(); - while (enumeration.hasMoreElements()) { - CTabFolder otherTabFolder = enumeration.nextElement(); - tabs = otherTabFolder.getItems(); - IMemoryViewTab viewTab2 = null; - for (int i2 = 0; i2 < tabs.length; i2++) { - viewTab2 = (IMemoryViewTab) tabs[i2].getData(); - if (viewTab2.getRendering().getMemoryBlock() == memory) { - if (viewTab2.getRendering() == rendering) { - foundTab = true; - disposeTab(tabs[i2]); - break; + // if a tab is not found in the current top control + // this deletion is a result of a debug target termination + // find memory from other folder and dispose the view tab + if (!foundTab) { + Enumeration<CTabFolder> enumeration = fTabFolderForMemoryBlock.elements(); + while (enumeration.hasMoreElements()) { + CTabFolder otherTabFolder = enumeration.nextElement(); + tabs = otherTabFolder.getItems(); + IMemoryViewTab viewTab = null; + for (int i = 0; i < tabs.length; i++) { + viewTab = (IMemoryViewTab) tabs[i].getData(); + if (viewTab.getRendering().getMemoryBlock() == memory) { + if (viewTab.getRendering() == rendering) { + foundTab = true; + disposeTab(tabs[i]); + break; + } } } } } - } - IMemoryViewTab top = getTopMemoryTab(); + IMemoryViewTab top = getTopMemoryTab(); - // update selection - if (top != null) { - setRenderingSelection(top.getRendering()); - } + // update selection + if (top != null) { + setRenderingSelection(top.getRendering()); + } - updateToolBarActionsEnablement(); + updateToolBarActionsEnablement(); + } }); } @@ -1182,10 +1194,13 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory final CTabFolder tabFolder = fTabFolderForMemoryBlock.get(memoryblk); if (tabFolder != null) { - Display.getDefault().asyncExec(() -> { - int index = getIndexOfCreateRenderingTab(tabFolder); - if (index >= 0) { - tabFolder.setSelection(index); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + int index = getIndexOfCreateRenderingTab(tabFolder); + if (index >= 0) { + tabFolder.setSelection(index); + } } }); } |