diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java deleted file mode 100644 index fe4ff88c32..0000000000 --- a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2010-2012, 2015, 2016 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Martin Fluegge - initial API and implementation - */ -package org.eclipse.emf.cdo.dawn.examples.acore.diagram.part; - -import org.eclipse.emf.cdo.dawn.gmf.util.DawnDiagramUpdater; -import org.eclipse.emf.cdo.dawn.transaction.DawnDiagramEditingDomainFactory; -import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput; -import org.eclipse.emf.cdo.eresource.CDOResource; - -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.Notifier; -import org.eclipse.emf.common.ui.URIEditorInput; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.emf.transaction.NotificationFilter; -import org.eclipse.emf.transaction.TransactionalEditingDomain; - -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramDocument; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.util.DiagramIOUtil; -import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory; -import org.eclipse.gmf.runtime.notation.Diagram; -import org.eclipse.osgi.util.NLS; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.part.FileEditorInput; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * @author Martin Fluegge - */ -@SuppressWarnings("restriction") -public class DawnAcoreDocumentProvider extends AcoreDocumentProvider -{ - public DawnAcoreDocumentProvider() - { - super(); - AcoreDiagramEditorPlugin.getInstance().logInfo("Using DawnAcoreDocumentProvider instead of the original one"); - } - - /** - * override to change creation of editingdomain - */ - @Override - protected IDocument createEmptyDocument() - { - DiagramDocument document = new DiagramDocument(); - document.setEditingDomain(createEditingDomain()); - return document; - } - - /** - * override to change the EditingDomain - */ - private TransactionalEditingDomain createEditingDomain() - { - TransactionalEditingDomain editingDomain = DawnDiagramEditingDomainFactory.getInstance().createEditingDomain(); - editingDomain.setID("org.eclipse.emf.cdo.dawn.examples.acore.diagram.EditingDomain"); //$NON-NLS-1$ - final NotificationFilter diagramResourceModifiedFilter = NotificationFilter.createNotifierFilter(editingDomain.getResourceSet()) - .and(NotificationFilter.createEventTypeFilter(Notification.ADD)) - .and(NotificationFilter.createFeatureFilter(ResourceSet.class, ResourceSet.RESOURCE_SET__RESOURCES)); - editingDomain.getResourceSet().eAdapters().add(new Adapter() - { - private Notifier myTarger; - - public Notifier getTarget() - { - return myTarger; - } - - public boolean isAdapterForType(Object type) - { - return false; - } - - public void notifyChanged(Notification notification) - { - if (diagramResourceModifiedFilter.matches(notification)) - { - Object value = notification.getNewValue(); - if (value instanceof Resource) - { - ((Resource)value).setTrackingModification(true); - } - } - } - - public void setTarget(Notifier newTarget) - { - myTarger = newTarget; - } - }); - - return editingDomain; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - protected void setDocumentContent(IDocument document, IEditorInput element) throws CoreException - { - AcoreDiagramEditorPlugin.getInstance().logInfo("Editor Input: " + element.getName()); - - IDiagramDocument diagramDocument = (IDiagramDocument)document; - TransactionalEditingDomain domain = diagramDocument.getEditingDomain(); - if (element instanceof FileEditorInput) - { - IStorage storage = ((FileEditorInput)element).getStorage(); - Diagram diagram = DiagramIOUtil.load(domain, storage, true, getProgressMonitor()); - document.setContent(diagram); - } - else if (element instanceof URIEditorInput) - { - URIEditorInput editorInput = (URIEditorInput)element; - - URI uri = editorInput.getURI(); - Resource resource = null; - try - { - // TODO change this fake!! - URI dawnURI = URI.createURI(uri.toString().replace("cdo", "dawn")); - resource = domain.getResourceSet().getResource(dawnURI, false); - if (resource == null) - { - // TODO clarify with Eike why here a transaction will be opended?? - resource = domain.getResourceSet().getResource(dawnURI, true); - } - - if (editorInput instanceof DawnEditorInput) - { - ((DawnEditorInput)editorInput).setResource((CDOResource)resource); - } - if (!resource.isLoaded()) - { - try - { - Map options = new HashMap(GMFResourceFactory.getDefaultLoadOptions()); - resource.load(options); - } - catch (IOException e) - { - resource.unload(); - throw e; - } - } - if (uri.fragment() != null) - { - EObject rootElement = resource.getEObject(uri.fragment()); - if (rootElement instanceof Diagram) - { - Diagram diagram = (Diagram)rootElement; - DawnDiagramUpdater.initializeElement(diagram); - document.setContent(diagram); - - return; - } - } - else - { - for (Iterator<?> it = resource.getContents().iterator(); it.hasNext();) - { - Object rootElement = it.next(); - if (rootElement instanceof Diagram) - { - Diagram diagram = (Diagram)rootElement; - DawnDiagramUpdater.initializeElement(diagram); - document.setContent(diagram); - - return; - } - } - } - throw new RuntimeException(Messages.AcoreDocumentProvider_NoDiagramInResourceError); - } - catch (Exception e) - { - CoreException thrownExcp = null; - if (e instanceof CoreException) - { - thrownExcp = (CoreException)e; - } - else - { - String msg = e.getLocalizedMessage(); - thrownExcp = new CoreException( - new Status(IStatus.ERROR, AcoreDiagramEditorPlugin.ID, 0, msg != null ? msg : Messages.AcoreDocumentProvider_DiagramLoadingError, e)); - } - throw thrownExcp; - } - } - else - { - throw new CoreException(new Status(IStatus.ERROR, AcoreDiagramEditorPlugin.ID, 0, - NLS.bind(Messages.AcoreDocumentProvider_IncorrectInputError, - new Object[] { element, "org.eclipse.ui.part.FileEditorInput", //$NON-NLS-1$ - "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ - null)); - } - } - - @Override - public void changed(Object element) - { - if (element instanceof IEditorInput) - { - fireElementDirtyStateChanged(element, true); - } - } -} |