Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java345
1 files changed, 168 insertions, 177 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
index ab2747bb7..09164c325 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/AbstractMemoryViewPane.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2013 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
@@ -11,7 +11,6 @@
*******************************************************************************/
package org.eclipse.debug.internal.ui.views.memory;
-
import java.util.Enumeration;
import java.util.Hashtable;
@@ -44,43 +43,43 @@ import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
-public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, ISelectionListener, SelectionListener, IMemoryView, ISelectionChangedListener, IMemoryViewPane, IDebugContextListener, IDebugEventSetListener{
-
+public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, ISelectionListener, SelectionListener, IMemoryView, ISelectionChangedListener, IMemoryViewPane, IDebugContextListener, IDebugEventSetListener {
+
public static final String BEGINNING_POPUP = "popUpBegin"; //$NON-NLS-1$
protected static final StructuredSelection EMPTY = new StructuredSelection();
-
+
protected Composite fViewPaneCanvas;
protected StackLayout fStackLayout;
protected ViewTabEnablementManager fViewTabEnablementManager;
protected CTabFolder fEmptyTabFolder;
- protected Hashtable fTabFolderForDebugView = new Hashtable();
+ protected Hashtable<Integer, CTabFolder> fTabFolderForDebugView = new Hashtable<Integer, CTabFolder>();
protected boolean fVisible;
- protected Hashtable fRenderingInfoTable;
- protected IMemoryBlockRetrieval fKey; // store the key for current tab folder
+ protected IMemoryBlockRetrieval fKey; // store the key for current tab
+ // folder
protected ViewPaneSelectionProvider fSelectionProvider;
protected IViewPart fParent;
protected String fPaneId;
private Composite fCanvas;
protected String fLabel;
-
+
private volatile boolean fIsDisposed = false;
- public AbstractMemoryViewPane(IViewPart parent)
- {
+ public AbstractMemoryViewPane(IViewPart parent) {
super();
fParent = parent;
fSelectionProvider = new ViewPaneSelectionProvider();
}
-
+
/**
* Create the content of the view pane
+ *
* @param parent the parent composite
* @param paneId the id of the pane to create
* @param label the label for the new pane
* @return the control of the view pane
*/
- public Control createViewPane(Composite parent, String paneId, String label)
- {
+ @Override
+ public Control createViewPane(Composite parent, String paneId, String label) {
fPaneId = paneId;
fLabel = label;
fCanvas = new Composite(parent, SWT.NONE);
@@ -99,7 +98,7 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
// memory view area
Composite memoryViewAreaParent = fCanvas;
- Composite subCanvas = new Composite(memoryViewAreaParent, SWT.NONE);
+ Composite subCanvas = new Composite(memoryViewAreaParent, SWT.NONE);
fViewPaneCanvas = subCanvas;
fStackLayout = new StackLayout();
GridData memoryAreaData = new GridData();
@@ -109,196 +108,180 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
memoryAreaData.horizontalAlignment = SWT.FILL;
fViewPaneCanvas.setLayout(fStackLayout);
fViewPaneCanvas.setLayoutData(memoryAreaData);
-
+
fViewTabEnablementManager = new ViewTabEnablementManager();
-
+
fEmptyTabFolder = new CTabFolder(fViewPaneCanvas, SWT.NULL);
setTabFolder(fEmptyTabFolder);
-
+
addListeners();
-
+
Object context = DebugUITools.getPartDebugContext(fParent.getSite());
- if (context != null)
- {
+ if (context != null) {
IMemoryBlockRetrieval retrieval = MemoryViewUtil.getMemoryBlockRetrieval(context);
- if (retrieval != null)
+ if (retrieval != null) {
createFolder(retrieval);
+ }
}
-
+
fVisible = true;
-
+
return fCanvas;
}
-
- protected void addListeners()
- {
+
+ protected void addListeners() {
MemoryViewUtil.getMemoryBlockManager().addListener(this);
fParent.getViewSite().getPage().addSelectionListener(this);
DebugUITools.addPartDebugContextListener(fParent.getSite(), this);
DebugPlugin.getDefault().addDebugEventListener(this);
}
-
- protected void removeListeners()
- {
+
+ protected void removeListeners() {
MemoryViewUtil.getMemoryBlockManager().removeListener(this);
fParent.getViewSite().getPage().removeSelectionListener(this);
- DebugUITools.removePartDebugContextListener(fParent.getSite(), this);
- if (fStackLayout.topControl != null)
- {
- CTabFolder old = (CTabFolder)fStackLayout.topControl;
-
- if (!old.isDisposed())
- {
+ DebugUITools.removePartDebugContextListener(fParent.getSite(), this);
+ if (fStackLayout.topControl != null) {
+ CTabFolder old = (CTabFolder) fStackLayout.topControl;
+
+ if (!old.isDisposed()) {
old.removeSelectionListener(this);
old.removeSelectionListener(fViewTabEnablementManager);
}
}
DebugPlugin.getDefault().removeDebugEventListener(this);
}
-
- protected void setTabFolder(CTabFolder folder)
- {
- if (fStackLayout.topControl != null)
- {
- CTabFolder old = (CTabFolder)fStackLayout.topControl;
-
- if (!old.isDisposed())
- {
+
+ protected void setTabFolder(CTabFolder folder) {
+ if (fStackLayout.topControl != null) {
+ CTabFolder old = (CTabFolder) fStackLayout.topControl;
+
+ if (!old.isDisposed()) {
old.removeSelectionListener(this);
old.removeSelectionListener(fViewTabEnablementManager);
}
}
-
+
fStackLayout.topControl = folder;
-
- if (folder.getItemCount() > 0)
- {
+
+ if (folder.getItemCount() > 0) {
CTabItem selectedItem = folder.getSelection();
-
- if (selectedItem != null)
- {
+
+ if (selectedItem != null) {
Object selected = getCurrentSelection();
- if (selected != null)
- {
+ if (selected != null) {
fSelectionProvider.setSelection(new StructuredSelection(selected));
- }
- else
- {
+ } else {
fSelectionProvider.setSelection(AbstractMemoryViewPane.EMPTY);
}
}
- }
- else
- {
+ } else {
fSelectionProvider.setSelection(AbstractMemoryViewPane.EMPTY);
}
-
+
folder.addSelectionListener(this);
folder.addSelectionListener(fViewTabEnablementManager);
- }
-
-
- private void createFolder(IMemoryBlockRetrieval memRetrieval)
- {
- //if we've got a tabfolder to go with the IMemoryBlockRetrieval, display it
+ }
+
+ private void createFolder(IMemoryBlockRetrieval memRetrieval) {
+ // if we've got a tabfolder to go with the IMemoryBlockRetrieval,
+ // display it
Integer key = MemoryViewUtil.getHashCode(memRetrieval);
if (fTabFolderForDebugView.containsKey(key)) {
- if (fStackLayout.topControl != (CTabFolder)fTabFolderForDebugView.get(key)) {
- setTabFolder((CTabFolder)fTabFolderForDebugView.get(key));
+ if (fStackLayout.topControl != fTabFolderForDebugView.get(key)) {
+ setTabFolder(fTabFolderForDebugView.get(key));
fViewPaneCanvas.layout();
}
- } else { //otherwise, add a new one
+ } else { // otherwise, add a new one
fTabFolderForDebugView.put(key, new CTabFolder(fViewPaneCanvas, SWT.NULL));
- setTabFolder((CTabFolder)fTabFolderForDebugView.get(key));
+ setTabFolder(fTabFolderForDebugView.get(key));
fViewPaneCanvas.layout();
}
}
+ @Override
public IMemoryViewTab getTopMemoryTab() {
-
- if (fStackLayout.topControl instanceof CTabFolder)
- {
- CTabFolder folder = (CTabFolder)fStackLayout.topControl;
- if (!folder.isDisposed())
- {
+
+ if (fStackLayout.topControl instanceof CTabFolder) {
+ CTabFolder folder = (CTabFolder) fStackLayout.topControl;
+ if (!folder.isDisposed()) {
int index = folder.getSelectionIndex();
if (index >= 0) {
CTabItem tab = folder.getItem(index);
- return (IMemoryViewTab)tab.getData();
+ return (IMemoryViewTab) tab.getData();
}
}
}
return null;
}
-
- protected void disposeTab(CTabItem tabItem)
- {
- if (tabItem == null)
+
+ protected void disposeTab(CTabItem tabItem) {
+ if (tabItem == null) {
return;
-
- // dispose the tab item in case the view tab has not
+ }
+
+ // dispose the tab item in case the view tab has not
// cleaned up the tab item
- if (!tabItem.isDisposed())
- {
+ if (!tabItem.isDisposed()) {
tabItem.dispose();
- }
+ }
}
- protected void emptyFolder()
- {
+ protected void emptyFolder() {
setTabFolder(fEmptyTabFolder);
if (!fViewPaneCanvas.isDisposed()) {
fViewPaneCanvas.layout();
}
}
-
- public void addSelectionListener(ISelectionChangedListener listener)
- {
- if (fSelectionProvider == null)
+
+ @Override
+ public void addSelectionListener(ISelectionChangedListener listener) {
+ if (fSelectionProvider == null) {
fSelectionProvider = new ViewPaneSelectionProvider();
-
+ }
+
fSelectionProvider.addSelectionChangedListener(listener);
}
-
- public void removeSelctionListener(ISelectionChangedListener listener)
- {
- if (fSelectionProvider == null)
+
+ @Override
+ public void removeSelctionListener(ISelectionChangedListener listener) {
+ if (fSelectionProvider == null) {
return;
-
+ }
+
fSelectionProvider.removeSelectionChangedListener(listener);
}
-
- public ISelectionProvider getSelectionProvider()
- {
+
+ @Override
+ public ISelectionProvider getSelectionProvider() {
return fSelectionProvider;
}
- public void handleDebugEvents(DebugEvent[] events)
- {
- for (int i = 0; i < events.length; i++)
- {
+ @Override
+ public void handleDebugEvents(DebugEvent[] events) {
+ for (int i = 0; i < events.length; i++) {
Object source = events[i].getSource();
- if (events[i].getKind() == DebugEvent.TERMINATE && source instanceof IMemoryBlockRetrieval)
- {
- if (isDisposed())
+ if (events[i].getKind() == DebugEvent.TERMINATE && source instanceof IMemoryBlockRetrieval) {
+ if (isDisposed()) {
return;
+ }
- //When a memory block retrieval terminates, it and its
- //tab folders should be removed from our map.
- final IMemoryBlockRetrieval ret = (IMemoryBlockRetrieval)source;
- if (ret != null)
- {
+ // When a memory block retrieval terminates, it and its
+ // tab folders should be removed from our map.
+ final IMemoryBlockRetrieval ret = (IMemoryBlockRetrieval) source;
+ if (ret != null) {
Display.getDefault().asyncExec(new Runnable() {
+ @Override
public void run() {
- if (isDisposed())
+ if (isDisposed()) {
return;
+ }
Integer key = MemoryViewUtil.getHashCode(ret);
Object folder = fTabFolderForDebugView.get(key);
- if (folder != null && folder != fEmptyTabFolder)
- {
- //remove the tab folder , and all contained tab items
+ if (folder != null && folder != fEmptyTabFolder) {
+ // remove the tab folder , and all contained tab
+ // items
disposeOfFolder((CTabFolder) folder);
fTabFolderForDebugView.remove(key);
}
@@ -309,53 +292,48 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
}
}
-
-
- public void dispose()
- {
- if (isDisposed())
+ @Override
+ public void dispose() {
+ if (isDisposed()) {
return;
+ }
fIsDisposed = true;
removeListeners();
-
+
// dispose empty folders
fEmptyTabFolder.dispose();
-
+
// dispose all other folders
try {
- Enumeration enumeration = fTabFolderForDebugView.elements();
+ Enumeration<CTabFolder> enumeration = fTabFolderForDebugView.elements();
- while (enumeration.hasMoreElements())
- {
- CTabFolder tabFolder = (CTabFolder)enumeration.nextElement();
+ while (enumeration.hasMoreElements()) {
+ CTabFolder tabFolder = enumeration.nextElement();
disposeOfFolder(tabFolder);
}
// Clear the table as all CTabFolder's have been dipose()d
fTabFolderForDebugView.clear();
- } catch (Exception e) {
-
+ } catch (Exception e) {
+
DebugUIPlugin.logErrorMessage("Exception occurred when the Memory View is disposed."); //$NON-NLS-1$
- }
+ }
}
/**
- * Helper method to dispose of a tab folder,
- * and of any tab items it contains.
- * Must be called from the UI thread.
+ * Helper method to dispose of a tab folder, and of any tab items it
+ * contains. Must be called from the UI thread.
+ *
* @param tabFolder the {@link CTabFolder} to dispose
* */
- private void disposeOfFolder(CTabFolder tabFolder)
- {
- if (!tabFolder.isDisposed())
- {
+ private void disposeOfFolder(CTabFolder tabFolder) {
+ if (!tabFolder.isDisposed()) {
// if tab folder is not empty, dipose view tabs
CTabItem[] tabs = tabFolder.getItems();
- for (int i=0; i<tabs.length; i++)
- {
+ for (int i = 0; i < tabs.length; i++) {
disposeTab(tabs[i]);
}
@@ -363,82 +341,95 @@ public abstract class AbstractMemoryViewPane implements IMemoryBlockListener, IS
}
}
- public void setVisible(boolean visible)
- {
+ @Override
+ public void setVisible(boolean visible) {
fVisible = visible;
-
+
IMemoryViewTab currentTab = getTopMemoryTab();
- if (currentTab != null)
+ if (currentTab != null) {
currentTab.setEnabled(visible);
+ }
}
+ @Override
public void selectionChanged(SelectionChangedEvent event) {
ISelection selection = event.getSelection();
- selectionChanged(fParent,selection);
-
+ selectionChanged(fParent, selection);
+
fSelectionProvider.setSelection(selection);
}
-
+
/**
* @return the unique identifier of the view pane
*/
- public String getPaneId()
- {
+ public String getPaneId() {
return fPaneId;
}
-
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.views.memory.IMemoryViewPane#getControl()
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.debug.internal.ui.views.memory.IMemoryViewPane#getControl()
*/
+ @Override
public Control getControl() {
return fCanvas;
}
-
- public boolean isVisible()
- {
+
+ @Override
+ public boolean isVisible() {
return fVisible;
}
-
- public String getLabel()
- {
+
+ public String getLabel() {
return fLabel;
}
-
- protected boolean isDisposed()
- {
+
+ protected boolean isDisposed() {
return fIsDisposed;
}
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.memory.IMemoryBlockListener#MemoryBlockAdded(org.eclipse.debug.core.model.IMemoryBlock)
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.debug.internal.core.memory.IMemoryBlockListener#MemoryBlockAdded
+ * (org.eclipse.debug.core.model.IMemoryBlock)
*/
- abstract public void memoryBlocksAdded(IMemoryBlock[] memoryBlocks);
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.memory.IMemoryBlockListener#MemoryBlockRemoved(org.eclipse.debug.core.model.IMemoryBlock)
+ @Override
+ abstract public void memoryBlocksAdded(IMemoryBlock[] memoryBlocks);
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.internal.core.memory.IMemoryBlockListener#
+ * MemoryBlockRemoved(org.eclipse.debug.core.model.IMemoryBlock)
*/
+ @Override
abstract public void memoryBlocksRemoved(final IMemoryBlock[] memoryBlocks);
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.
+ * IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
*/
+ @Override
abstract public void selectionChanged(IWorkbenchPart part, ISelection selection);
-
+
/**
* @return current selection from the view pane
*/
abstract public Object getCurrentSelection();
-
+
/**
- * retore the view pane based on current selection from the debug view
- * and the memory blocks and renderings currently exist
+ * retore the view pane based on current selection from the debug view and
+ * the memory blocks and renderings currently exist
*/
+ @Override
abstract public void restoreViewPane();
-
+
/**
* @return actions to be contributed to the view pane's toolbar
*/
+ @Override
abstract public IAction[] getActions();
}

Back to the top