package net.certware.argument.gsz.diagram.handlers; import net.certware.argument.gsz.diagram.edit.parts.ArgumentDiagramEditPart; import net.certware.argument.gsz.diagram.part.GszDiagramEditorPlugin; import net.certware.argument.gsz.diagram.part.GszDiagramEditorUtil; import net.certware.argument.gsz.diagram.part.GszNewDiagramFileWizard; import net.certware.argument.gsz.diagram.part.Messages; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; 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.gmf.runtime.emf.core.GMFEditingDomainFactory; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; public class InitializeDiagramHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain(); ResourceSet resourceSet = editingDomain.getResourceSet(); EObject diagramRoot = null; URI domainModelURI = null; try { ISelection iss = window.getSelectionService().getSelection(); IFile file = (IFile) iss; domainModelURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true); Resource resource = resourceSet.getResource(domainModelURI, true); diagramRoot = (EObject) resource.getContents().get(0); } catch (WrappedException ex) { GszDiagramEditorPlugin.getInstance().logError("Unable to load resource:" + ' ' + domainModelURI, ex); } if (diagramRoot == null) { MessageDialog.openError(window.getShell(), Messages.InitDiagramFile_ResourceErrorDialogTitle, Messages.InitDiagramFile_ResourceErrorDialogMessage); return null; } Wizard wizard = new GszNewDiagramFileWizard(domainModelURI, diagramRoot, editingDomain); wizard.setWindowTitle(NLS.bind(Messages.InitDiagramFile_WizardTitle, ArgumentDiagramEditPart.MODEL_ID)); GszDiagramEditorUtil.runWizard(window.getShell(), wizard, "InitDiagramFile"); //$NON-NLS-1$ return null; } }