1 11 package org.eclipse.debug.internal.ui.model.elements; 12 13 import org.eclipse.core.runtime.CoreException; 14 import org.eclipse.core.runtime.IProgressMonitor; 15 import org.eclipse.core.runtime.IStatus; 16 import org.eclipse.core.runtime.Status; 17 import org.eclipse.core.runtime.jobs.Job; 18 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest; 19 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider; 20 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest; 21 import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; 22 import org.eclipse.ui.IMemento; 23 24 27 public abstract class ElementMementoProvider implements IElementMementoProvider { 28 29 30 33 public void compareElements(final IElementCompareRequest[] requests) { 34 Job job = new Job("compare element") { protected IStatus run(IProgressMonitor monitor) { 36 for (int i = 0; i < requests.length; i++) { 37 IElementCompareRequest request = requests[i]; 38 try { 39 request.setEqual(isEqual(request.getElement(), request.getMemento(), request.getPresentationContext())); 40 } catch (CoreException e) { 41 request.setStatus(e.getStatus()); 42 } 43 request.done(); 44 } 45 return Status.OK_STATUS; 46 } 47 }; 48 job.setSystem(true); 49 job.schedule(); 51 } 52 53 61 protected abstract boolean isEqual(Object element, IMemento memento, IPresentationContext context) throws CoreException; 62 63 66 public void encodeElements(final IElementMementoRequest[] requests) { 67 Job job = new Job("encode element") { protected IStatus run(IProgressMonitor monitor) { 69 for (int i = 0; i < requests.length; i++) { 70 IElementMementoRequest request = requests[i]; 71 try { 72 if (!encodeElement(request.getElement(), request.getMemento(), request.getPresentationContext())) { 73 request.cancel(); 74 } 75 } catch (CoreException e) { 76 request.setStatus(e.getStatus()); 77 } 78 request.done(); 79 } 80 return Status.OK_STATUS; 81 } 82 }; 83 job.setSystem(true); 84 job.schedule(); 86 } 87 88 98 protected abstract boolean encodeElement(Object element, IMemento memento, IPresentationContext context) throws CoreException; 99 100 } 101 | Popular Tags |