merging Asynchronous viewer branch
diff --git a/org.eclipse.jdt.debug.ui/plugin.xml b/org.eclipse.jdt.debug.ui/plugin.xml
index f92f6a6..70bb970 100644
--- a/org.eclipse.jdt.debug.ui/plugin.xml
+++ b/org.eclipse.jdt.debug.ui/plugin.xml
@@ -2564,37 +2564,27 @@
<factory
class="org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory"
adaptableType="org.eclipse.jdt.internal.debug.ui.monitors.JavaContendedMonitor">
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/>
- <adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
+ <adapter type="org.eclipse.debug.internal.ui.treeviewer.IPresentationAdapter"/>
</factory>
<factory
class="org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory"
adaptableType="org.eclipse.jdt.internal.debug.ui.monitors.JavaWaitingThread">
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/>
- <adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
+ <adapter type="org.eclipse.debug.internal.ui.treeviewer.IPresentationAdapter"/>
</factory>
<factory
class="org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory"
adaptableType="org.eclipse.jdt.internal.debug.ui.monitors.JavaOwnedMonitor">
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/>
- <adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
+ <adapter type="org.eclipse.debug.internal.ui.treeviewer.IPresentationAdapter"/>
</factory>
<factory
class="org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory"
adaptableType="org.eclipse.jdt.internal.debug.ui.monitors.JavaOwningThread">
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/>
- <adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
+ <adapter type="org.eclipse.debug.internal.ui.treeviewer.IPresentationAdapter"/>
</factory>
<factory
class="org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory"
adaptableType="org.eclipse.jdt.debug.core.IJavaThread">
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
- <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/>
- <adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
+<adapter type="org.eclipse.debug.internal.ui.treeviewer.IPresentationAdapter"/>
</factory>
</extension>
<extension
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ImageDescriptorRegistry.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ImageDescriptorRegistry.java
index 45c77b2..7376924 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ImageDescriptorRegistry.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/ImageDescriptorRegistry.java
@@ -81,11 +81,16 @@
}
private void hookDisplay() {
- fDisplay.disposeExec(new Runnable() {
+ fDisplay.asyncExec(new Runnable() {
public void run() {
- dispose();
- }
+ fDisplay.disposeExec(new Runnable() {
+ public void run() {
+ dispose();
+ }
+ });
+ }
});
+
}
}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java
index 8d94e40..474aeae 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java
@@ -18,6 +18,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -47,6 +48,11 @@
import org.eclipse.jdt.debug.ui.IJavaDebugUIConstants;
import org.eclipse.jdt.internal.debug.ui.breakpoints.JavaBreakpointTypeAdapterFactory;
import org.eclipse.jdt.internal.debug.ui.display.JavaInspectExpression;
+import org.eclipse.jdt.internal.debug.ui.monitors.JavaContendedMonitor;
+import org.eclipse.jdt.internal.debug.ui.monitors.JavaDebugElementAdapterFactory;
+import org.eclipse.jdt.internal.debug.ui.monitors.JavaOwnedMonitor;
+import org.eclipse.jdt.internal.debug.ui.monitors.JavaOwningThread;
+import org.eclipse.jdt.internal.debug.ui.monitors.JavaWaitingThread;
import org.eclipse.jdt.internal.debug.ui.snippeteditor.SnippetFileDocumentProvider;
import org.eclipse.jdt.launching.sourcelookup.IJavaSourceLocation;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
@@ -284,6 +290,13 @@
manager.registerAdapters(fBreakpointAdapterFactory, IJavaBreakpoint.class);
IAdapterFactory typeFactory = new JavaBreakpointTypeAdapterFactory();
manager.registerAdapters(typeFactory, IJavaBreakpoint.class);
+
+ IAdapterFactory monitorFactory = new JavaDebugElementAdapterFactory();
+ manager.registerAdapters(monitorFactory, IJavaThread.class);
+ manager.registerAdapters(monitorFactory, JavaContendedMonitor.class);
+ manager.registerAdapters(monitorFactory, JavaOwnedMonitor.class);
+ manager.registerAdapters(monitorFactory, JavaOwningThread.class);
+ manager.registerAdapters(monitorFactory, JavaWaitingThread.class);
fHCRListener= new JavaHotCodeReplaceListener();
JDIDebugModel.addHotCodeReplaceListener(fHCRListener);
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaContendedMonitorAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaContendedMonitorAdapter.java
new file mode 100644
index 0000000..2a25122
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaContendedMonitorAdapter.java
@@ -0,0 +1,21 @@
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.internal.ui.viewers.IPresentationContext;
+
+public class AsyncJavaContendedMonitorAdapter extends AsyncMonitorAdapter {
+
+ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException {
+ JavaOwningThread owningThread= ((JavaContendedMonitor)parent).getOwningThread();
+ if (owningThread == null) {
+ return EMPTY;
+ }
+ return new Object[]{owningThread};
+ }
+
+ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException {
+ JavaContendedMonitor monitor = (JavaContendedMonitor) element;
+ return monitor.getOwningThread() != null;
+ }
+
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwnedMonitorAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwnedMonitorAdapter.java
new file mode 100644
index 0000000..a7e679a
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwnedMonitorAdapter.java
@@ -0,0 +1,17 @@
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.internal.ui.viewers.IPresentationContext;
+
+public class AsyncJavaOwnedMonitorAdapter extends AsyncMonitorAdapter {
+
+ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException {
+ return ((JavaOwnedMonitor)parent).getWaitingThreads();
+ }
+
+ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException {
+ JavaOwnedMonitor monitor = (JavaOwnedMonitor) element;
+ return monitor.getWaitingThreads().length > 0;
+ }
+
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwningThreadAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwningThreadAdapter.java
new file mode 100644
index 0000000..645a65f
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaOwningThreadAdapter.java
@@ -0,0 +1,21 @@
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.internal.ui.viewers.IPresentationContext;
+
+public class AsyncJavaOwningThreadAdapter extends AsyncMonitorAdapter {
+
+ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException {
+ JavaContendedMonitor contendedMonitor= ((JavaOwningThread)parent).getContendedMonitor();
+ if (contendedMonitor == null) {
+ return EMPTY;
+ }
+ return new Object[]{contendedMonitor};
+ }
+
+ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException {
+ JavaOwningThread monitor = (JavaOwningThread) element;
+ return monitor.getContendedMonitor() != null;
+ }
+
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaThreadAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaThreadAdapter.java
new file mode 100755
index 0000000..966ea79
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaThreadAdapter.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.internal.ui.viewers.IPresentationContext;
+import org.eclipse.jdt.debug.core.IJavaDebugTarget;
+import org.eclipse.jdt.debug.core.IJavaThread;
+import org.eclipse.jdt.debug.ui.JavaDebugUtils;
+
+/**
+ * Generates monitor information as well as stack frames
+ */
+public class AsyncJavaThreadAdapter extends AsyncMonitorAdapter {
+
+ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException {
+ IJavaThread thread = (IJavaThread) parent;
+ if (!thread.isSuspended()) {
+ return EMPTY;
+ }
+ try {
+ IStackFrame[] frames = thread.getStackFrames();
+ if (!isDisplayMonitors()) {
+ return frames;
+ }
+
+ Object[] children;
+ int length = frames.length;
+ if (((IJavaDebugTarget) thread.getDebugTarget()).supportsMonitorInformation()) {
+ IDebugElement[] ownedMonitors = JavaDebugUtils.getOwnedMonitors(thread);
+ IDebugElement contendedMonitor = JavaDebugUtils.getContendedMonitor(thread);
+
+ if (ownedMonitors != null) {
+ length += ownedMonitors.length;
+ }
+ if (contendedMonitor != null) {
+ length++;
+ }
+ children = new Object[length];
+ if (ownedMonitors != null && ownedMonitors.length > 0) {
+ System.arraycopy(ownedMonitors, 0, children, 0, ownedMonitors.length);
+ }
+ if (contendedMonitor != null) {
+ // Insert the contended monitor after the owned monitors
+ children[ownedMonitors.length] = contendedMonitor;
+ }
+ } else {
+ children = new Object[length + 1];
+ children[0] = new NoMonitorInformationElement(thread.getDebugTarget());
+ }
+ int offset = children.length - frames.length;
+ System.arraycopy(frames, 0, children, offset, frames.length);
+ return children;
+ } catch (DebugException e) {
+ return EMPTY;
+ }
+ }
+
+ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException {
+ IJavaThread thread = (IJavaThread) element;
+ return thread.hasStackFrames();
+ }
+
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaWaitingThreadAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaWaitingThreadAdapter.java
new file mode 100755
index 0000000..bb8b611
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncJavaWaitingThreadAdapter.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.internal.ui.viewers.IPresentationContext;
+
+
+public class AsyncJavaWaitingThreadAdapter extends AsyncMonitorAdapter {
+ protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException {
+ return ((JavaWaitingThread)parent).getOwnedMonitors();
+ }
+
+ protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException {
+ JavaWaitingThread thread = (JavaWaitingThread) element;
+ return thread.getOwnedMonitors().length > 0;
+ }
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncMonitorAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncMonitorAdapter.java
new file mode 100644
index 0000000..756dc12
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/AsyncMonitorAdapter.java
@@ -0,0 +1,37 @@
+package org.eclipse.jdt.internal.debug.ui.monitors;
+
+import org.eclipse.debug.internal.ui.viewers.AsynchronousTreeContentAdapter;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.jdt.internal.debug.ui.IJDIPreferencesConstants;
+import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+
+public abstract class AsyncMonitorAdapter extends AsynchronousTreeContentAdapter implements IPropertyChangeListener {
+
+ private boolean fDisplayMonitors;
+
+ public AsyncMonitorAdapter() {
+ IPreferenceStore preferenceStore = JDIDebugUIPlugin.getDefault().getPreferenceStore();
+ preferenceStore.addPropertyChangeListener(this);
+ fDisplayMonitors= preferenceStore.getBoolean(IJDIPreferencesConstants.PREF_SHOW_MONITOR_THREAD_INFO);
+ }
+
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty().equals(IJDIPreferencesConstants.PREF_SHOW_MONITOR_THREAD_INFO)) {
+ fDisplayMonitors= ((Boolean)event.getNewValue()).booleanValue();
+ }
+ }
+
+ protected boolean isDisplayMonitors() {
+ return fDisplayMonitors;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.viewers.AsynchronousTreeContentAdapter#supportsPartId(java.lang.String)
+ */
+ protected boolean supportsPartId(String id) {
+ return IDebugUIConstants.ID_DEBUG_VIEW.equals(id);
+ }
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaContendedMonitor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaContendedMonitor.java
deleted file mode 100644
index fde9e0b..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaContendedMonitor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-
-/**
- * Workbench adapter for a contended monitor
- */
-public class DeferredJavaContendedMonitor extends DeferredMonitorElement {
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parent) {
- JavaOwningThread owningThread= ((JavaContendedMonitor)parent).getOwningThread();
- if (owningThread == null) {
- return EMPTY;
- }
- return new Object[]{owningThread};
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return ((JavaContendedMonitor) element).getParent();
- }
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwnedMonitor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwnedMonitor.java
deleted file mode 100644
index aec7c36..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwnedMonitor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-
-/**
- * Workbench adapter for a owned monitor.
- */
-public class DeferredJavaOwnedMonitor extends DeferredMonitorElement {
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parent) {
- return ((JavaOwnedMonitor)parent).getWaitingThreads();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return ((JavaOwnedMonitor)element).getParent();
- }
-
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwningThread.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwningThread.java
deleted file mode 100644
index 758d42f..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaOwningThread.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-
-/**
- * Workbench adapter for a contended monitor
- */
-public class DeferredJavaOwningThread extends DeferredMonitorElement {
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parent) {
- JavaContendedMonitor contendedMonitor= ((JavaOwningThread)parent).getContendedMonitor();
- if (contendedMonitor == null) {
- return EMPTY;
- }
- return new Object[]{contendedMonitor};
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return ((JavaOwningThread)element).getParent();
- }
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaThread.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaThread.java
deleted file mode 100644
index c31a6de..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaThread.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.jdt.debug.core.IJavaDebugTarget;
-import org.eclipse.jdt.debug.core.IJavaThread;
-import org.eclipse.jdt.debug.ui.JavaDebugUtils;
-
-/**
- * Generates monitor information as well as stack frames
- */
-public class DeferredJavaThread extends DeferredMonitorElement {
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parent) {
- IJavaThread thread = (IJavaThread) parent;
- if (!thread.isSuspended()) {
- return EMPTY;
- }
- try {
- IStackFrame[] frames = thread.getStackFrames();
- if (!isDisplayMonitors()) {
- return frames;
- }
-
- Object[] children;
- int length = frames.length;
- if (((IJavaDebugTarget) thread.getDebugTarget()).supportsMonitorInformation()) {
- IDebugElement[] ownedMonitors = JavaDebugUtils.getOwnedMonitors(thread);
- IDebugElement contendedMonitor = JavaDebugUtils.getContendedMonitor(thread);
-
- if (ownedMonitors != null) {
- length+=ownedMonitors.length;
- }
- if (contendedMonitor != null) {
- length++;
- }
- children = new Object[length];
- if (ownedMonitors != null && ownedMonitors.length > 0) {
- System.arraycopy(ownedMonitors, 0, children, 0, ownedMonitors.length);
- }
- if (contendedMonitor != null) {
- // Insert the contended monitor after the owned monitors
- children[ownedMonitors.length] = contendedMonitor;
- }
- } else {
- children= new Object[length + 1];
- children[0]= new NoMonitorInformationElement(thread.getDebugTarget());
- }
- int offset= children.length - frames.length;
- System.arraycopy(frames, 0, children, offset, frames.length);
- return children;
- } catch (DebugException e) {
- return EMPTY;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return ((IJavaThread)element).getDebugTarget();
- }
-
-
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaWaitingThread.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaWaitingThread.java
deleted file mode 100644
index 03828d1..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredJavaWaitingThread.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-
-/**
- * Workbench adapter for a waiting thread
- */
-public class DeferredJavaWaitingThread extends DeferredMonitorElement {
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parent) {
- return ((JavaWaitingThread)parent).getOwnedMonitors();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- return ((JavaWaitingThread)element).getParent();
- }
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredMonitorElement.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredMonitorElement.java
deleted file mode 100644
index 3074121..0000000
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/DeferredMonitorElement.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.internal.debug.ui.monitors;
-
-import org.eclipse.debug.ui.DeferredDebugElementWorkbenchAdapter;
-import org.eclipse.jdt.internal.debug.ui.IJDIPreferencesConstants;
-import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-
-/**
- * A deferred workbench adapter for elements presenting monitor information in the debug veiw.
- */
-public abstract class DeferredMonitorElement extends DeferredDebugElementWorkbenchAdapter implements IDeferredWorkbenchAdapter, IPropertyChangeListener {
-
- private boolean fDisplayMonitors= false;
- public DeferredMonitorElement() {
- IPreferenceStore preferenceStore = JDIDebugUIPlugin.getDefault().getPreferenceStore();
- preferenceStore.addPropertyChangeListener(this);
- fDisplayMonitors= preferenceStore.getBoolean(IJDIPreferencesConstants.PREF_SHOW_MONITOR_THREAD_INFO);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(IJDIPreferencesConstants.PREF_SHOW_MONITOR_THREAD_INFO)) {
- fDisplayMonitors= ((Boolean)event.getNewValue()).booleanValue();
- }
- }
-
- protected boolean isDisplayMonitors() {
- return fDisplayMonitors;
- }
-}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/JavaDebugElementAdapterFactory.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/JavaDebugElementAdapterFactory.java
index 47670ac..2ff5af1 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/JavaDebugElementAdapterFactory.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/monitors/JavaDebugElementAdapterFactory.java
@@ -11,10 +11,8 @@
package org.eclipse.jdt.internal.debug.ui.monitors;
import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.debug.internal.ui.viewers.IAsynchronousTreeContentAdapter;
import org.eclipse.jdt.debug.core.IJavaThread;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.model.IWorkbenchAdapter2;
-import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
/**
* Adapter factory that generates workbench adapters for java debug elements to
@@ -22,11 +20,11 @@
*/
public class JavaDebugElementAdapterFactory implements IAdapterFactory {
- private static IWorkbenchAdapter fgThreadAdapter;
- private static IWorkbenchAdapter fgContendedMonitorAdapter;
- private static IWorkbenchAdapter fgOwnedMonitorAdapter;
- private static IWorkbenchAdapter fgOwningThreadAdapter;
- private static IWorkbenchAdapter fgWaitingThreadAdapter;
+ private static IAsynchronousTreeContentAdapter fgThreadAdapter;
+ private static IAsynchronousTreeContentAdapter fgContendedMonitorAdapter;
+ private static IAsynchronousTreeContentAdapter fgOwnedMonitorAdapter;
+ private static IAsynchronousTreeContentAdapter fgOwningThreadAdapter;
+ private static IAsynchronousTreeContentAdapter fgWaitingThreadAdapter;
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
@@ -52,28 +50,28 @@
private Object getWaitingThreadAdapter() {
if (fgWaitingThreadAdapter == null) {
- fgWaitingThreadAdapter = new DeferredJavaWaitingThread();
+ fgWaitingThreadAdapter = new AsyncJavaWaitingThreadAdapter();
}
return fgWaitingThreadAdapter;
}
private Object getOwningThreadAdapter() {
if (fgOwningThreadAdapter == null) {
- fgOwningThreadAdapter = new DeferredJavaOwningThread();
+ fgOwningThreadAdapter = new AsyncJavaOwningThreadAdapter();
}
return fgOwningThreadAdapter;
}
- private IWorkbenchAdapter getOwnedMonitorAdapater() {
+ private IAsynchronousTreeContentAdapter getOwnedMonitorAdapater() {
if (fgOwnedMonitorAdapter == null) {
- fgOwnedMonitorAdapter = new DeferredJavaOwnedMonitor();
+ fgOwnedMonitorAdapter = new AsyncJavaOwnedMonitorAdapter();
}
return fgOwnedMonitorAdapter;
}
- private IWorkbenchAdapter getContendedMonitorAdapter() {
+ private IAsynchronousTreeContentAdapter getContendedMonitorAdapter() {
if (fgContendedMonitorAdapter == null) {
- fgContendedMonitorAdapter = new DeferredJavaContendedMonitor();
+ fgContendedMonitorAdapter = new AsyncJavaContendedMonitorAdapter();
}
return fgContendedMonitorAdapter;
}
@@ -82,12 +80,12 @@
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
*/
public Class[] getAdapterList() {
- return new Class[] {IWorkbenchAdapter.class, IWorkbenchAdapter2.class, IDeferredWorkbenchAdapter.class};
+ return new Class[] {IAsynchronousTreeContentAdapter.class};
}
- private IWorkbenchAdapter getThreadAdapter() {
+ private IAsynchronousTreeContentAdapter getThreadAdapter() {
if (fgThreadAdapter == null) {
- fgThreadAdapter = new DeferredJavaThread();
+ fgThreadAdapter = new AsyncJavaThreadAdapter();
}
return fgThreadAdapter;
}