@Override public void dispose( IUndoContext context, boolean flushUndo, boolean flushRedo, boolean flushContext) { // dispose of any limit that was set for the context if it is not to be // used again. if (context instanceof EditingDomainUndoContext) { EditingDomainUndoContext editingDomainContext = (EditingDomainUndoContext) context; EditingDomain editingDomain = editingDomainContext.getEditingDomain(); if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() != null) { IEditorReference[] editorReferences = PlatformUI.getWorkbench() .getActiveWorkbenchWindow() .getActivePage() .getEditorReferences(); for (IEditorReference editorRef : editorReferences) { try { IWorkbenchPart part = editorRef.getPart(false); if (part instanceof DiagramEditor) { DiagramEditor editor = (DiagramEditor) part; if (editor.getEditingDomain() != null && editor.getEditingDomain().equals(editingDomain)) { return; // do not dispose if the editing domain // is else } } } catch (Exception e) { BonitaStudioLog.error(e); } } } } defaultOperationHistory.dispose(context, flushUndo, flushRedo, flushContext); }
/** * Gets the transactional editing domain. * * @return the transactional editing domain */ private TransactionalEditingDomain getTransactionalEditingDomain() { TransactionalEditingDomain ted = null; IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (activeEditor instanceof IDiagramWorkbenchPart) { IDiagramWorkbenchPart workbenchPart = (IDiagramWorkbenchPart) activeEditor; ted = (TransactionalEditingDomain) workbenchPart.getAdapter(EditingDomain.class); if (ted == null) { if (workbenchPart instanceof DiagramEditor) { DiagramEditor editor = (DiagramEditor) workbenchPart; ted = editor.getEditingDomain(); } } } return ted; }
/** @generated */ public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) { if (aSelection == null || aSelection.isEmpty()) { return; } if (false == aSelection.getFirstElement() instanceof MIDAbstractNavigatorItem) { return; } MIDAbstractNavigatorItem abstractNavigatorItem = (MIDAbstractNavigatorItem) aSelection.getFirstElement(); View navigatorView = null; if (abstractNavigatorItem instanceof MIDNavigatorItem) { navigatorView = ((MIDNavigatorItem) abstractNavigatorItem).getView(); } else if (abstractNavigatorItem instanceof MIDNavigatorGroup) { MIDNavigatorGroup navigatorGroup = (MIDNavigatorGroup) abstractNavigatorItem; if (navigatorGroup.getParent() instanceof MIDNavigatorItem) { navigatorView = ((MIDNavigatorItem) navigatorGroup.getParent()).getView(); } else if (navigatorGroup.getParent() instanceof IAdaptable) { navigatorView = (View) ((IAdaptable) navigatorGroup.getParent()).getAdapter(View.class); } } if (navigatorView == null) { return; } IEditorInput editorInput = getEditorInput(navigatorView.getDiagram()); IEditorPart editor = aPage.findEditor(editorInput); if (editor == null) { return; } aPage.bringToTop(editor); if (editor instanceof DiagramEditor) { DiagramEditor diagramEditor = (DiagramEditor) editor; ResourceSet diagramEditorResourceSet = diagramEditor.getEditingDomain().getResourceSet(); EObject selectedView = diagramEditorResourceSet.getEObject(EcoreUtil.getURI(navigatorView), true); if (selectedView == null) { return; } GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter(GraphicalViewer.class); EditPart selectedEditPart = (EditPart) graphicalViewer.getEditPartRegistry().get(selectedView); if (selectedEditPart != null) { graphicalViewer.select(selectedEditPart); } } }