KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > debug > internal > ui > actions > context > SuspendResumeAdapter


1 /*******************************************************************************
2  * Copyright (c) 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11
12 package org.eclipse.debug.internal.ui.actions.context;
13
14 import org.eclipse.core.runtime.IAdaptable;
15 import org.eclipse.core.runtime.IProgressMonitor;
16 import org.eclipse.core.runtime.IStatus;
17 import org.eclipse.core.runtime.Status;
18 import org.eclipse.core.runtime.jobs.Job;
19 import org.eclipse.debug.core.DebugException;
20 import org.eclipse.debug.core.model.ISuspendResume;
21 import org.eclipse.debug.internal.ui.actions.provisional.IAsynchronousSuspendResumeAdapter;
22 import org.eclipse.debug.internal.ui.actions.provisional.IBooleanRequestMonitor;
23 import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousRequestMonitor;
24 import org.eclipse.debug.ui.IDebugUIConstants;
25
26 public class SuspendResumeAdapter extends StandardActionAdapter implements IAsynchronousSuspendResumeAdapter {
27
28     public void canResume(final Object JavaDoc element, final IBooleanRequestMonitor monitor) {
29         Job job = new Job("canResume") { //$NON-NLS-1$
30
protected IStatus run(IProgressMonitor pm) {
31                 if (!pm.isCanceled()) {
32                     ISuspendResume suspendResume = getTarget(element);
33                     if (suspendResume != null)
34                         monitor.setResult(suspendResume.canResume());
35                     else
36                         monitor.setResult(false);
37                     monitor.done();
38                 }
39                 return Status.OK_STATUS;
40             }
41         };
42         job.setSystem(true);
43         job.setRule(createUpdateSchedulingRule());
44         job.schedule();
45     }
46
47     public void canSuspend(final Object JavaDoc element, final IBooleanRequestMonitor monitor) {
48         Job job = new Job("canSuspend") { //$NON-NLS-1$
49
protected IStatus run(IProgressMonitor pm) {
50                 if (!pm.isCanceled()) {
51                     ISuspendResume suspendResume = getTarget(element);
52                     if (suspendResume != null)
53                         monitor.setResult(suspendResume.canSuspend());
54                     else
55                         monitor.setResult(false);
56                     monitor.done();
57                 }
58                 return Status.OK_STATUS;
59             }
60         };
61         job.setSystem(true);
62         job.setRule(createUpdateSchedulingRule());
63         job.schedule();
64     }
65
66     public void isSuspended(final Object JavaDoc element, final IBooleanRequestMonitor monitor) {
67         Job job = new Job("isSuspended") { //$NON-NLS-1$
68
protected IStatus run(IProgressMonitor pm) {
69                 if (!pm.isCanceled()) {
70                     ISuspendResume suspendResume = getTarget(element);
71                     if (suspendResume != null)
72                         monitor.setResult(suspendResume.isSuspended());
73                     else
74                         monitor.setResult(false);
75                     monitor.done();
76                 }
77                 return Status.OK_STATUS;
78             }
79         };
80         job.setSystem(true);
81         job.setRule(createUpdateSchedulingRule());
82         job.schedule();
83     }
84
85     public void resume(final Object JavaDoc element, final IAsynchronousRequestMonitor monitor) {
86         Job job = new Job("resume") { //$NON-NLS-1$
87
protected IStatus run(IProgressMonitor pm) {
88                 if (!pm.isCanceled()) {
89                     ISuspendResume suspendResume = getTarget(element);
90                     if (suspendResume != null) {
91                         try {
92                             suspendResume.resume();
93                         } catch (DebugException e) {
94                             monitor.setStatus(e.getStatus());
95                         }
96                     } else {
97                         monitor.setStatus(new Status(IStatus.ERROR, IDebugUIConstants.PLUGIN_ID, IDebugUIConstants.INTERNAL_ERROR, "element must be an instance of or adapt to ISuspendResume", //$NON-NLS-1$
98
null));
99                     }
100                     monitor.done();
101                 }
102                 return Status.OK_STATUS;
103             }
104         };
105         job.setSystem(true);
106         job.schedule();
107     }
108
109     public void suspend(final Object JavaDoc element, final IAsynchronousRequestMonitor monitor) {
110         Job job = new Job("suspend") { //$NON-NLS-1$
111
protected IStatus run(IProgressMonitor pm) {
112                 if (!pm.isCanceled()) {
113                     ISuspendResume suspendResume = getTarget(element);
114                     if (suspendResume != null) {
115                         try {
116                             suspendResume.suspend();
117                         } catch (DebugException e) {
118                             monitor.setStatus(e.getStatus());
119                         }
120                     } else {
121                         monitor.setStatus(new Status(IStatus.ERROR, IDebugUIConstants.PLUGIN_ID, IDebugUIConstants.INTERNAL_ERROR, "element must be an instance of or adapt to ISuspendResume", //$NON-NLS-1$
122
null));
123                     }
124                     monitor.done();
125                 }
126                 return Status.OK_STATUS;
127             }
128         };
129         job.setSystem(true);
130         job.schedule();
131     }
132
133     private ISuspendResume getTarget(Object JavaDoc element) {
134         if (element instanceof ISuspendResume) {
135             return (ISuspendResume) element;
136         } else if (element instanceof IAdaptable) {
137             return (ISuspendResume) ((IAdaptable) element).getAdapter(ISuspendResume.class);
138         }
139         return null;
140     }
141
142 }
143
Popular Tags