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 | 346 |
1 files changed, 166 insertions, 180 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 a7f04e4fd..1461532f5 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2013 IBM Corporation and others. + * Copyright (c) 2004, 2018 IBM Corporation 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 @@ -120,28 +120,25 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory */ @Override public void memoryBlocksAdded(final IMemoryBlock[] memoryBlocks) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { + Display.getDefault().asyncExec(() -> { - 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); - } - fAddedMemoryBlocks.add(memory); - updateToolBarActionsEnablement(); + if (!fTabFolderForMemoryBlock.containsKey(memory)) { + createFolderForMemoryBlock(memory); } + fAddedMemoryBlocks.add(memory); + updateToolBarActionsEnablement(); } }); } @@ -153,91 +150,89 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory */ @Override public void memoryBlocksRemoved(final IMemoryBlock[] memoryBlocks) { - 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; - } + 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); + // 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]); - } + 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); + // remove a the tab folder if the memory block is removed + CTabFolder tabFolder = fTabFolderForMemoryBlock.get(mbRemoved); - if (tabFolder == null) { - continue; + if (tabFolder == null) { + continue; + } + + fTabFolderForMemoryBlock.remove(mbRemoved); + fMemoryBlockFromTabFolder.remove(tabFolder); + IMemoryBlockRetrieval retrieve = MemoryViewUtil.getMemoryBlockRetrieval(mbRemoved); + if (retrieve != null) { + if (fTabFolderForDebugView.contains(tabFolder)) { + fTabFolderForDebugView.remove(MemoryViewUtil.getHashCode(retrieve)); } + } - fTabFolderForMemoryBlock.remove(mbRemoved); - fMemoryBlockFromTabFolder.remove(tabFolder); - IMemoryBlockRetrieval retrieve = MemoryViewUtil.getMemoryBlockRetrieval(mbRemoved); - if (retrieve != null) { - if (fTabFolderForDebugView.contains(tabFolder)) { - fTabFolderForDebugView.remove(MemoryViewUtil.getHashCode(retrieve)); - } + if (!tabFolder.isDisposed()) { + // dispose all view tabs belonging to the tab folder + CTabItem[] items = tabFolder.getItems(); + + for (int i = 0; i < items.length; i++) { + disposeTab(items[i]); } - if (!tabFolder.isDisposed()) { - // dispose all view tabs belonging to the tab folder - CTabItem[] items = tabFolder.getItems(); + // dispose the tab folder + tabFolder.dispose(); - for (int i = 0; i < items.length; i++) { - disposeTab(items[i]); - } + // if this is the top control + if (tabFolder == fStackLayout.topControl) { - // 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 + // 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(); - // if not the top control - // no need to do anything + } } - fAddedMemoryBlocks.remove(mbRemoved); - updateToolBarActionsEnablement(); + // if not the top control + // no need to do anything } + + fAddedMemoryBlocks.remove(mbRemoved); + updateToolBarActionsEnablement(); } }); @@ -447,59 +442,56 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory public void memoryBlockRenderingAdded(final IMemoryRendering rendering) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { + Display.getDefault().asyncExec(() -> { - 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); - } - } else { - deactivateRendering(viewTab); - viewTab.setEnabled(false); + // disable top view tab if the view pane is not visible + IMemoryViewTab top = getTopMemoryTab(); + if (top != null) { + top.setEnabled(fVisible); } - - updateToolBarActionsEnablement(); + } else { + deactivateRendering(viewTab); + viewTab.setEnabled(false); } + + updateToolBarActionsEnablement(); }); } @@ -514,70 +506,67 @@ 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(new Runnable() { - @Override - public void run() { - if (!fAddedRenderings.contains(rendering)) { - return; - } + Display.getDefault().asyncExec(() -> { + if (!fAddedRenderings.contains(rendering)) { + return; + } - fAddedRenderings.remove(rendering); + fAddedRenderings.remove(rendering); - CTabFolder tabFolder = (CTabFolder) fStackLayout.topControl; + CTabFolder tabFolder = (CTabFolder) fStackLayout.topControl; - if (tabFolder.isDisposed()) { - return; - } - - CTabItem[] tabs = tabFolder.getItems(); - boolean foundTab = false; - for (int i = 0; i < tabs.length; i++) { - IMemoryViewTab viewTab = (IMemoryViewTab) tabs[i].getData(); + if (tabFolder.isDisposed()) { + return; + } - if (tabs[i].isDisposed()) { - continue; - } + CTabItem[] tabs = tabFolder.getItems(); + boolean foundTab = false; + for (int i1 = 0; i1 < tabs.length; i1++) { + IMemoryViewTab viewTab1 = (IMemoryViewTab) tabs[i1].getData(); - if (viewTab.getRendering().getMemoryBlock() == memory) { - if (viewTab.getRendering() == rendering) { - foundTab = true; - disposeTab(tabs[i]); - break; - } + if (tabs[i1].isDisposed()) { + continue; + } + if (viewTab1.getRendering().getMemoryBlock() == memory) { + if (viewTab1.getRendering() == rendering) { + foundTab = true; + disposeTab(tabs[i1]); + 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; - } + // 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; } } } } - IMemoryViewTab top = getTopMemoryTab(); - - // update selection - if (top != null) { - setRenderingSelection(top.getRendering()); - } + } + IMemoryViewTab top = getTopMemoryTab(); - updateToolBarActionsEnablement(); + // update selection + if (top != null) { + setRenderingSelection(top.getRendering()); } + + updateToolBarActionsEnablement(); }); } @@ -1194,13 +1183,10 @@ public class RenderingViewPane extends AbstractMemoryViewPane implements IMemory final CTabFolder tabFolder = fTabFolderForMemoryBlock.get(memoryblk); if (tabFolder != null) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { - int index = getIndexOfCreateRenderingTab(tabFolder); - if (index >= 0) { - tabFolder.setSelection(index); - } + Display.getDefault().asyncExec(() -> { + int index = getIndexOfCreateRenderingTab(tabFolder); + if (index >= 0) { + tabFolder.setSelection(index); } }); } |