@Override public void interpreterSuspended(InterpreterState state, List<EventReason> eventReasons) { this.suspendedState = state; this.isSuspended = true; synchronized (this.debugElements) { for (DebugElement element : this.debugElements) { if (eventReasons.contains(EventReason.BreakPoint) || eventReasons.contains(EventReason.WatchPoint)) { element.fireSuspendEvent(DebugEvent.BREAKPOINT); } if (eventReasons.contains(EventReason.ClientRequest)) { element.fireSuspendEvent(DebugEvent.CLIENT_REQUEST); } if (eventReasons.contains(EventReason.StepEnd)) { element.fireSuspendEvent(DebugEvent.STEP_END); } } } }
@Override public void interpreterFinished(InterpreterState state, List<EventReason> reasons) { this.isStopped = true; this.isSuspended = false; IDebugTarget target = null; if (DebugPlugin.getDefault() != null) { synchronized (this.debugElements) { for (DebugElement element : this.debugElements) { element.fireTerminateEvent(); target = element.getDebugTarget(); } } DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[]{new DebugEvent(BfProcess.this, DebugEvent.TERMINATE)}); if (target != null && target instanceof BfDebugTarget) { ((BfDebugTarget) target).fireTerminateEvent(); } } }
public void displaySource(Object element, IWorkbenchPage page, boolean forceSourceLookup) { debugElement = (DebugElement) element; IEditorPart editor = openEditor(debugElement, page); displaySource(editor); }
public IEditorPart openEditor(DebugElement debugElement, IWorkbenchPage page) { EObject semanticObject = (EObject) debugElement.getAdapter(EObject.class); IFile file = (IFile) debugElement.getAdapter(IFile.class); if (file == null) file = WorkspaceSynchronizer.getFile(semanticObject.eResource()); // check if an editor for the resource is already open, the return the // opened editor. // This is important for simulating subdiagrams IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); if (activeEditor != null) { IEditorInput editorInput = activeEditor.getEditorInput(); if (editorInput instanceof IFileEditorInput) { if (((IFileEditorInput) editorInput).getFile().equals(file)) return activeEditor; } } // check if a Diagram is available and open the editor for the // corresponding diagram Diagram diagram = DiagramPartitioningUtil.getDiagramContaining(semanticObject); if (diagram != null) { if (URIConverter.INSTANCE.exists(semanticObject.eResource().getURI(), null)) { Resource sharedDomainResource = DiagramPartitioningUtil.getSharedDomain().getResourceSet() .getResource(semanticObject.eResource().getURI(), true); Collection<Diagram> contents = EcoreUtil.getObjectsByType(sharedDomainResource.getContents(), NotationPackage.Literals.DIAGRAM); for (Diagram diag : contents) { if (EcoreUtil.getURI(diag.getElement()).equals(EcoreUtil.getURI(diagram.getElement()))) { return DiagramPartitioningUtil.openEditor((Diagram) diag); } } } // No diagram for the semantic element -> open the default editor // for the file } else { IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName()); try { return page.openEditor(new FileEditorInput(file), desc.getId()); } catch (PartInitException e) { e.printStackTrace(); } } // No editor found throw new RuntimeException("No editor found for semantic element " + semanticObject); }
void addEventSourceElement(DebugElement element) { if (!this.debugElements.contains(element)) { this.debugElements.add(element); } }
void removeEventSourceElement(DebugElement element) { this.debugElements.remove(element); }