diff options
Diffstat (limited to 'uml/org.eclipse.papyrus.diagram.activity/src/org/eclipse/papyrus/diagram/activity/part/UMLInitDiagramFileAction.java')
-rw-r--r-- | uml/org.eclipse.papyrus.diagram.activity/src/org/eclipse/papyrus/diagram/activity/part/UMLInitDiagramFileAction.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/uml/org.eclipse.papyrus.diagram.activity/src/org/eclipse/papyrus/diagram/activity/part/UMLInitDiagramFileAction.java b/uml/org.eclipse.papyrus.diagram.activity/src/org/eclipse/papyrus/diagram/activity/part/UMLInitDiagramFileAction.java new file mode 100644 index 00000000000..7fe1839c1cf --- /dev/null +++ b/uml/org.eclipse.papyrus.diagram.activity/src/org/eclipse/papyrus/diagram/activity/part/UMLInitDiagramFileAction.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright (c) 2008 + * 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: + * Francisco Javier Cano Muñoz (Prodevelop) - initial API implementation + ******************************************************************************/ +package org.eclipse.papyrus.diagram.activity.part; + +import org.eclipse.core.resources.IFile; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.common.util.WrappedException; +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.TransactionalEditingDomain; +import org.eclipse.emf.workspace.WorkspaceEditingDomainFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.osgi.util.NLS; +import org.eclipse.papyrus.diagram.activity.edit.parts.PackageEditPart; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; + +/** + * @generated + */ +public class UMLInitDiagramFileAction implements IObjectActionDelegate { + + /** + * @generated + */ + private IWorkbenchPart targetPart; + + /** + * @generated + */ + private URI domainModelURI; + + /** + * @generated + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + this.targetPart = targetPart; + } + + /** + * @generated + */ + public void selectionChanged(IAction action, ISelection selection) { + domainModelURI = null; + action.setEnabled(false); + if (selection instanceof IStructuredSelection == false || selection.isEmpty()) { + return; + } + IFile file = (IFile) ((IStructuredSelection) selection).getFirstElement(); + domainModelURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true); + action.setEnabled(true); + } + + /** + * @generated + */ + private Shell getShell() { + return targetPart.getSite().getShell(); + } + + /** + * @generated + */ + public void run(IAction action) { + TransactionalEditingDomain editingDomain = WorkspaceEditingDomainFactory.INSTANCE.createEditingDomain(); + ResourceSet resourceSet = editingDomain.getResourceSet(); + EObject diagramRoot = null; + try { + Resource resource = resourceSet.getResource(domainModelURI, true); + diagramRoot = resource.getContents().get(0); + } catch (WrappedException ex) { + UMLDiagramEditorPlugin.getInstance().logError("Unable to load resource: " + domainModelURI, ex); //$NON-NLS-1$ + } + if (diagramRoot == null) { + MessageDialog.openError(getShell(), Messages.UMLInitDiagramFileAction_InitDiagramFileResourceErrorDialogTitle, Messages.UMLInitDiagramFileAction_InitDiagramFileResourceErrorDialogMessage); + return; + } + Wizard wizard = new UMLNewDiagramFileWizard(domainModelURI, diagramRoot, editingDomain); + wizard.setWindowTitle(NLS.bind(Messages.UMLInitDiagramFileAction_InitDiagramFileWizardTitle, PackageEditPart.MODEL_ID)); + UMLDiagramEditorUtil.runWizard(getShell(), wizard, "InitDiagramFile"); //$NON-NLS-1$ + } +} |