/**
   * This method should be called within a workspace modify operation since it creates resources.
   *
   * @generated
   */
  public static Resource createDiagram(
      URI diagramURI, URI modelURI, IProgressMonitor progressMonitor) {
    TransactionalEditingDomain editingDomain =
        GMFEditingDomainFactory.INSTANCE.createEditingDomain();
    progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
    final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
    final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
    final String diagramName = diagramURI.lastSegment();
    AbstractTransactionalCommand command =
        new AbstractTransactionalCommand(
            editingDomain,
            Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel,
            Collections.EMPTY_LIST) {

          protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
              throws ExecutionException {
            Package model = createInitialModel();
            attachModelToResource(model, modelResource);

            Diagram diagram =
                ViewService.createDiagram(
                    model,
                    PackageEditPart.MODEL_ID,
                    UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
            if (diagram != null) {
              diagramResource.getContents().add(diagram);
              diagram.setName(diagramName);
              diagram.setElement(model);
            }

            try {
              modelResource.save(
                  org.eclipse.papyrus.uml.diagram.statemachine.part.UMLDiagramEditorUtil
                      .getSaveOptions());
              diagramResource.save(
                  org.eclipse.papyrus.uml.diagram.statemachine.part.UMLDiagramEditorUtil
                      .getSaveOptions());
            } catch (IOException e) {

              UMLDiagramEditorPlugin.getInstance()
                  .logError("Unable to store model and diagram resources", e); // $NON-NLS-1$
            }
            return CommandResult.newOKCommandResult();
          }
        };
    try {
      OperationHistoryFactory.getOperationHistory()
          .execute(command, new SubProgressMonitor(progressMonitor, 1), null);
    } catch (ExecutionException e) {
      UMLDiagramEditorPlugin.getInstance()
          .logError("Unable to create model and diagram", e); // $NON-NLS-1$
    }
    setCharset(WorkspaceSynchronizer.getFile(modelResource));
    setCharset(WorkspaceSynchronizer.getFile(diagramResource));
    return diagramResource;
  }
 /** @generated */
 public static void setCharset(IFile file) {
   if (file == null) {
     return;
   }
   try {
     file.setCharset("UTF-8", new NullProgressMonitor()); // $NON-NLS-1$
   } catch (CoreException e) {
     UMLDiagramEditorPlugin.getInstance()
         .logError("Unable to set charset for file " + file.getFullPath(), e); // $NON-NLS-1$
   }
 }
 /** @generated */
 public Object evaluate(Object context, Map env) {
   if (context().isInstance(context)) {
     try {
       return doEvaluate(context, env);
     } catch (Exception e) {
       UMLDiagramEditorPlugin.getInstance()
           .logError("Expression evaluation failure: " + body(), e); // $NON-NLS-1$
     }
   }
   return null;
 }
 /**
  * Runs the wizard in a dialog.
  *
  * @generated
  */
 public static void runWizard(Shell shell, Wizard wizard, String settingsKey) {
   IDialogSettings pluginDialogSettings = UMLDiagramEditorPlugin.getInstance().getDialogSettings();
   IDialogSettings wizardDialogSettings = pluginDialogSettings.getSection(settingsKey);
   if (wizardDialogSettings == null) {
     wizardDialogSettings = pluginDialogSettings.addNewSection(settingsKey);
   }
   wizard.setDialogSettings(wizardDialogSettings);
   WizardDialog dialog = new WizardDialog(shell, wizard);
   dialog.create();
   dialog.getShell().setSize(Math.max(500, dialog.getShell().getSize().x), 500);
   dialog.open();
 }
 /** @generated */
 protected void setStatus(int severity, String message, Throwable throwable) {
   String pluginID = UMLDiagramEditorPlugin.ID;
   this.status =
       new Status(
           severity, pluginID, -1, (message != null) ? message : "", throwable); // $NON-NLS-1$
   if (!this.status.isOK()) {
     UMLDiagramEditorPlugin.getInstance()
         .logError(
             "Expression problem:" + message + "body:" + body(),
             throwable); //$NON-NLS-1$ //$NON-NLS-2$
   }
 }