1 11 package org.eclipse.debug.internal.core.commands; 12 13 import org.eclipse.core.runtime.CoreException; 14 import org.eclipse.core.runtime.IAdaptable; 15 import org.eclipse.debug.core.DebugPlugin; 16 import org.eclipse.debug.core.ILaunch; 17 import org.eclipse.debug.core.commands.IStepFiltersHandler; 18 import org.eclipse.debug.core.model.IDebugElement; 19 import org.eclipse.debug.core.model.IDebugTarget; 20 import org.eclipse.debug.core.model.IProcess; 21 import org.eclipse.debug.core.model.IStepFilters; 22 23 28 public class StepFiltersCommand extends ForEachCommand implements IStepFiltersHandler { 29 30 protected Object getTarget(Object element) { 31 IDebugTarget[] targets = getDebugTargets(element); 32 if (targets.length > 0) { 33 IStepFilters[] filters = new IStepFilters[targets.length]; 34 for (int i = 0; i < targets.length; i++) { 35 IDebugTarget target = targets[i]; 36 if (target instanceof IStepFilters) { 37 filters[i] = (IStepFilters) target; 38 } else { 39 filters[i] = (IStepFilters) ((IAdaptable)element).getAdapter(IStepFilters.class); 40 } 41 if (filters[i] == null) { 42 return null; 43 } 44 } 45 return filters; 46 } 47 return null; 48 } 49 50 private IDebugTarget[] getDebugTargets(Object element) { 51 if (element instanceof IDebugElement) { 52 IDebugElement debugElement = (IDebugElement) element; 53 return new IDebugTarget[] { debugElement.getDebugTarget() }; 54 } else if (element instanceof ILaunch) { 55 ILaunch launch = (ILaunch) element; 56 return launch.getDebugTargets(); 57 } else if (element instanceof IProcess) { 58 IProcess process = (IProcess) element; 59 return process.getLaunch().getDebugTargets(); 60 } else { 61 return new IDebugTarget[0]; 62 } 63 } 64 65 68 protected void execute(Object target) throws CoreException { 69 if (target == null) { 70 return; 71 } 72 IStepFilters[] filters = (IStepFilters[]) target; 73 for (int i = 0; i < filters.length; i++) { 74 IStepFilters filter = filters[i]; 75 filter.setStepFiltersEnabled(DebugPlugin.isUseStepFilters()); 76 } 77 } 78 79 82 protected boolean isExecutable(Object target) { 83 IStepFilters[] filters = (IStepFilters[]) target; 84 for (int i = 0; i < filters.length; i++) { 85 IStepFilters filter = filters[i]; 86 if (filter == null || !filter.supportsStepFilters()) { 87 return false; 88 } 89 } 90 return true; 91 } 92 } 93 | Popular Tags |