diff options
Diffstat (limited to 'deprecated/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.diagram.sequence/src/org/eclipse/papyrus/diagram/sequence/part/UMLDocumentProvider.java')
-rw-r--r-- | deprecated/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.diagram.sequence/src/org/eclipse/papyrus/diagram/sequence/part/UMLDocumentProvider.java | 714 |
1 files changed, 0 insertions, 714 deletions
diff --git a/deprecated/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.diagram.sequence/src/org/eclipse/papyrus/diagram/sequence/part/UMLDocumentProvider.java b/deprecated/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.diagram.sequence/src/org/eclipse/papyrus/diagram/sequence/part/UMLDocumentProvider.java deleted file mode 100644 index 4311228331d..00000000000 --- a/deprecated/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.diagram.sequence/src/org/eclipse/papyrus/diagram/sequence/part/UMLDocumentProvider.java +++ /dev/null @@ -1,714 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2007 Conselleria de Infraestructuras y Transporte, - * Generalitat de la Comunitat Valenciana . 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: Gabriel Merin Cubero (Prodevelop) – Sequence Diagram implementation - * - ******************************************************************************/ -package org.eclipse.papyrus.diagram.sequence.part; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceStatus; -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.eclipse.core.runtime.jobs.MultiRule; -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.util.EcoreUtil; -import org.eclipse.emf.transaction.TransactionalEditingDomain; -import org.eclipse.emf.workspace.util.WorkspaceSynchronizer; -import org.eclipse.gmf.runtime.common.core.command.CommandResult; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocumentProvider; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.EditorStatusCodes; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.util.DiagramIOUtil; -import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; -import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory; -import org.eclipse.gmf.runtime.notation.Diagram; -import org.eclipse.jface.operation.IRunnableContext; -import org.eclipse.osgi.util.NLS; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.part.FileEditorInput; - -import org.eclipse.papyrus.diagram.common.part.CachedResourcesDocumentProvider; - -/** - * @generated - */ -public class UMLDocumentProvider extends CachedResourcesDocumentProvider - implements IDiagramDocumentProvider { - - /** - * @generated - */ - @Override - protected ElementInfo createElementInfo(Object element) - throws CoreException { - if (false == element instanceof FileEditorInput - && false == element instanceof URIEditorInput) { - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - 0, - NLS - .bind( - Messages.UMLDocumentProvider_IncorrectInputError, - new Object[] { - element, - "org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ - null)); - } - IEditorInput editorInput = (IEditorInput) element; - IDiagramDocument document = (IDiagramDocument) createDocument(editorInput); - - CachedResourceSetInfo info = new CachedResourceSetInfo(document, - editorInput); - info.setModificationStamp(computeModificationStamp(info)); - info.fStatus = null; - return info; - } - - /** - * @generated - */ - @Override - protected IDocument createDocument(Object element) throws CoreException { - if (false == element instanceof FileEditorInput - && false == element instanceof URIEditorInput) { - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - 0, - NLS - .bind( - Messages.UMLDocumentProvider_IncorrectInputError, - new Object[] { - element, - "org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ - null)); - } - IDocument document = createEmptyDocument((IEditorInput) element); - setDocumentContent(document, (IEditorInput) element); - setupDocument(element, document); - return document; - } - - /** - * Sets up the given document as it would be provided for the given element. The - * content of the document is not changed. This default implementation is empty. - * Subclasses may reimplement. - * - * @param element the blue-print element - * @param document the document to set up - * @generated - */ - protected void setupDocument(Object element, IDocument document) { - // for subclasses - } - - /** - * @generated - */ - protected void setDocumentContent(IDocument document, IEditorInput element) - throws CoreException { - 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) { - URI uri = ((URIEditorInput) element).getURI(); - Resource resource = null; - try { - resource = domain.getResourceSet().getResource( - uri.trimFragment(), false); - if (resource == null) { - resource = domain.getResourceSet().createResource( - uri.trimFragment()); - } - if (!resource.isLoaded()) { - try { - Map options = new HashMap(GMFResourceFactory - .getDefaultLoadOptions()); - // @see 171060 - // options.put(org.eclipse.emf.ecore.xmi.XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - resource.load(options); - } catch (IOException e) { - resource.unload(); - throw e; - } - } - if (uri.fragment() != null) { - EObject rootElement = resource.getEObject(uri.fragment()); - if (rootElement instanceof Diagram) { - document.setContent((Diagram) rootElement); - return; - } - } else { - for (Iterator it = resource.getContents().iterator(); it - .hasNext();) { - Object rootElement = it.next(); - if (rootElement instanceof Diagram) { - document.setContent((Diagram) rootElement); - return; - } - } - } - throw new RuntimeException( - Messages.UMLDocumentProvider_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, - UMLDiagramEditorPlugin.ID, - 0, - msg != null ? msg - : Messages.UMLDocumentProvider_DiagramLoadingError, - e)); - } - throw thrownExcp; - } - } else { - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - 0, - NLS - .bind( - Messages.UMLDocumentProvider_IncorrectInputError, - new Object[] { - element, - "org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ - null)); - } - } - - /** - * @generated - */ - @Override - public long getModificationStamp(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - return computeModificationStamp(info); - } - return super.getModificationStamp(element); - } - - /** - * @generated - */ - @Override - public boolean isDeleted(Object element) { - IDiagramDocument document = getDiagramDocument(element); - if (document != null) { - Resource diagramResource = document.getDiagram().eResource(); - if (diagramResource != null) { - IFile file = WorkspaceSynchronizer.getFile(diagramResource); - return file == null || file.getLocation() == null - || !file.getLocation().toFile().exists(); - } - } - return super.isDeleted(element); - } - - /** - * @generated - */ - public CachedResourceSetInfo getResourceSetInfo(Object editorInput) { - return (CachedResourceSetInfo) super.getElementInfo(editorInput); - } - - /** - * @generated - */ - @Override - protected void doValidateState(Object element, Object computationContext) - throws CoreException { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - Collection files2Validate = new ArrayList(); - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null && file.isReadOnly()) { - files2Validate.add(file); - } - } - ResourcesPlugin.getWorkspace().validateEdit( - (IFile[]) files2Validate.toArray(new IFile[files2Validate - .size()]), computationContext); - } - - super.doValidateState(element, computationContext); - } - - /** - * @generated - */ - @Override - public boolean isReadOnly(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - if (info.isUpdateCache()) { - try { - updateCache(element); - } catch (CoreException ex) { - UMLDiagramEditorPlugin.getInstance().logError( - Messages.UMLDocumentProvider_isModifiable, ex); - // Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable - } - } - return info.isReadOnly(); - } - return super.isReadOnly(element); - } - - /** - * @generated - */ - @Override - public boolean isModifiable(Object element) { - if (!isStateValidated(element)) { - if (element instanceof FileEditorInput - || element instanceof URIEditorInput) { - return true; - } - } - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - if (info.isUpdateCache()) { - try { - updateCache(element); - } catch (CoreException ex) { - UMLDiagramEditorPlugin.getInstance().logError( - Messages.UMLDocumentProvider_isModifiable, ex); - // Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable - } - } - return info.isModifiable(); - } - return super.isModifiable(element); - } - - /** - * @generated - */ - protected void updateCache(Object element) throws CoreException { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null && file.isReadOnly()) { - info.setReadOnly(true); - info.setModifiable(false); - return; - } - } - info.setReadOnly(false); - info.setModifiable(true); - return; - } - } - - /** - * @generated - */ - @Override - protected void doUpdateStateCache(Object element) throws CoreException { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - info.setUpdateCache(true); - } - super.doUpdateStateCache(element); - } - - /** - * @generated - */ - @Override - public boolean isSynchronized(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - return info.isSynchronized(); - } - return super.isSynchronized(element); - } - - /** - * @generated - */ - @Override - protected ISchedulingRule getResetRule(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - Collection rules = new ArrayList(); - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null) { - rules.add(ResourcesPlugin.getWorkspace().getRuleFactory() - .modifyRule(file)); - } - } - return new MultiRule((ISchedulingRule[]) rules - .toArray(new ISchedulingRule[rules.size()])); - } - return null; - } - - /** - * @generated - */ - @Override - protected ISchedulingRule getSaveRule(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - Collection rules = new ArrayList(); - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null) { - rules.add(computeSchedulingRule(file)); - } - } - return new MultiRule((ISchedulingRule[]) rules - .toArray(new ISchedulingRule[rules.size()])); - } - return null; - } - - /** - * @generated - */ - @Override - protected ISchedulingRule getSynchronizeRule(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - Collection rules = new ArrayList(); - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null) { - rules.add(ResourcesPlugin.getWorkspace().getRuleFactory() - .refreshRule(file)); - } - } - return new MultiRule((ISchedulingRule[]) rules - .toArray(new ISchedulingRule[rules.size()])); - } - return null; - } - - /** - * @generated - */ - @Override - protected ISchedulingRule getValidateStateRule(Object element) { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - Collection files = new ArrayList(); - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - IFile file = WorkspaceSynchronizer.getFile(nextResource); - if (file != null) { - files.add(file); - } - } - return ResourcesPlugin.getWorkspace().getRuleFactory() - .validateEditRule( - (IFile[]) files.toArray(new IFile[files.size()])); - } - return null; - } - - /** - * @generated - */ - private ISchedulingRule computeSchedulingRule(IResource toCreateOrModify) { - if (toCreateOrModify.exists()) - return ResourcesPlugin.getWorkspace().getRuleFactory().modifyRule( - toCreateOrModify); - - IResource parent = toCreateOrModify; - do { - /* - * XXX This is a workaround for - * https://bugs.eclipse.org/bugs/show_bug.cgi?id=67601 - * IResourceRuleFactory.createRule should iterate the hierarchy - * itself. - */ - toCreateOrModify = parent; - parent = toCreateOrModify.getParent(); - } while (parent != null && !parent.exists()); - - return ResourcesPlugin.getWorkspace().getRuleFactory().createRule( - toCreateOrModify); - } - - /** - * @generated - */ - @Override - protected void doSynchronize(Object element, IProgressMonitor monitor) - throws CoreException { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - for (Iterator it = info.getResourceSet().getResources().iterator(); it - .hasNext();) { - Resource nextResource = (Resource) it.next(); - handleElementChanged(info, nextResource, monitor); - } - return; - } - super.doSynchronize(element, monitor); - } - - /** - * @generated - */ - @Override - protected void doSaveDocument(IProgressMonitor monitor, Object element, - IDocument document, boolean overwrite) throws CoreException { - CachedResourceSetInfo info = getResourceSetInfo(element); - if (info != null) { - if (!overwrite && !info.isSynchronized()) { - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - IResourceStatus.OUT_OF_SYNC_LOCAL, - Messages.UMLDocumentProvider_UnsynchronizedFileSaveError, - null)); - } - info.stopResourceListening(); - fireElementStateChanging(element); - List resources = info.getResourceSet().getResources(); - try { - monitor.beginTask(Messages.UMLDocumentProvider_SaveDiagramTask, - resources.size() + 1); //"Saving diagram" - for (Iterator it = resources.iterator(); it.hasNext();) { - Resource nextResource = (Resource) it.next(); - monitor.setTaskName(NLS.bind( - Messages.UMLDocumentProvider_SaveNextResourceTask, - nextResource.getURI())); - if (nextResource.isLoaded() - && !info.getEditingDomain() - .isReadOnly(nextResource)) { - try { - nextResource.save(UMLDiagramEditorUtil - .getSaveOptions()); - } catch (IOException e) { - fireElementStateChangeFailed(element); - throw new CoreException(new Status(IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - EditorStatusCodes.RESOURCE_FAILURE, e - .getLocalizedMessage(), null)); - } - } - monitor.worked(1); - } - monitor.done(); - info.setModificationStamp(computeModificationStamp(info)); - } catch (RuntimeException x) { - fireElementStateChangeFailed(element); - throw x; - } finally { - info.startResourceListening(); - } - } else { - URI newResoruceURI; - List affectedFiles = null; - if (element instanceof FileEditorInput) { - IFile newFile = ((FileEditorInput) element).getFile(); - affectedFiles = Collections.singletonList(newFile); - newResoruceURI = URI.createPlatformResourceURI(newFile - .getFullPath().toString(), true); - } else if (element instanceof URIEditorInput) { - newResoruceURI = ((URIEditorInput) element).getURI(); - } else { - fireElementStateChangeFailed(element); - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - 0, - NLS - .bind( - Messages.UMLDocumentProvider_IncorrectInputError, - new Object[] { - element, - "org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ - null)); - } - if (false == document instanceof IDiagramDocument) { - fireElementStateChangeFailed(element); - throw new CoreException( - new Status( - IStatus.ERROR, - UMLDiagramEditorPlugin.ID, - 0, - "Incorrect document used: " + document + " instead of org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument", null)); //$NON-NLS-1$ //$NON-NLS-2$ - } - IDiagramDocument diagramDocument = (IDiagramDocument) document; - final Resource newResource = diagramDocument.getEditingDomain() - .getResourceSet().createResource(newResoruceURI); - final Diagram diagramCopy = (Diagram) EcoreUtil - .copy(diagramDocument.getDiagram()); - try { - new AbstractTransactionalCommand(diagramDocument - .getEditingDomain(), NLS.bind( - Messages.UMLDocumentProvider_SaveAsOperation, - diagramCopy.getName()), affectedFiles) { - protected CommandResult doExecuteWithResult( - IProgressMonitor monitor, IAdaptable info) - throws ExecutionException { - newResource.getContents().add(diagramCopy); - return CommandResult.newOKCommandResult(); - } - }.execute(monitor, null); - newResource.save(UMLDiagramEditorUtil.getSaveOptions()); - } catch (ExecutionException e) { - fireElementStateChangeFailed(element); - throw new CoreException(new Status(IStatus.ERROR, - UMLDiagramEditorPlugin.ID, 0, e.getLocalizedMessage(), - null)); - } catch (IOException e) { - fireElementStateChangeFailed(element); - throw new CoreException(new Status(IStatus.ERROR, - UMLDiagramEditorPlugin.ID, 0, e.getLocalizedMessage(), - null)); - } - newResource.unload(); - } - } - - /** - * @generated - */ - @Override - protected void handleElementChanged(CachedResourceSetInfo info, - Resource changedResource, IProgressMonitor monitor) { - IFile file = WorkspaceSynchronizer.getFile(changedResource); - if (file != null) { - try { - file.refreshLocal(IResource.DEPTH_INFINITE, monitor); - } catch (CoreException ex) { - UMLDiagramEditorPlugin - .getInstance() - .logError( - Messages.UMLDocumentProvider_handleElementContentChanged, - ex); - // Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.FileDocumentProvider_handleElementContentChanged - } - } - changedResource.unload(); - - fireElementContentAboutToBeReplaced(info.getEditorInput()); - removeUnchangedElementListeners(info.getEditorInput(), info); - info.fStatus = null; - try { - setDocumentContent(info.fDocument, info.getEditorInput()); - } catch (CoreException e) { - info.fStatus = e.getStatus(); - } - if (!info.fCanBeSaved) { - info.setModificationStamp(computeModificationStamp(info)); - } - addUnchangedElementListeners(info.getEditorInput(), info); - fireElementContentReplaced(info.getEditorInput()); - } - - /** - * @generated - */ - @Override - protected void handleElementMoved(IEditorInput input, URI uri) { - if (input instanceof FileEditorInput) { - IFile newFile = ResourcesPlugin.getWorkspace().getRoot().getFile( - new Path(URI.decode(uri.path())).removeFirstSegments(1)); - fireElementMoved(input, newFile == null ? null - : new FileEditorInput(newFile)); - return; - } - // TODO: append suffix to the URI! (use diagram as a parameter) - fireElementMoved(input, new URIEditorInput(uri)); - } - - /** - * @generated - */ - public IEditorInput createInputWithEditingDomain(IEditorInput editorInput, - TransactionalEditingDomain domain) { - return editorInput; - } - - /** - * @generated - */ - public IDiagramDocument getDiagramDocument(Object element) { - IDocument doc = getDocument(element); - if (doc instanceof IDiagramDocument) { - return (IDiagramDocument) doc; - } - return null; - } - - /** - * @generated - */ - @Override - protected IRunnableContext getOperationRunner(IProgressMonitor monitor) { - return null; - } - - /** - * @generated - */ - @Override - protected String getEditingDomainID() { - return "es.cv.gvcase.mdt.uml2.diagram.SharedEditingDomainID"; - } - -} |