/** @generated */
 public void run(IAction action) {
   TransactionalEditingDomain editingDomain =
       GMFEditingDomainFactory.INSTANCE.createEditingDomain();
   ResourceSet resourceSet = editingDomain.getResourceSet();
   EObject diagramRoot = null;
   try {
     Resource resource = resourceSet.getResource(domainModelURI, true);
     diagramRoot = (EObject) resource.getContents().get(0);
   } catch (WrappedException ex) {
     StateMachineDiagramEditorPlugin.getInstance()
         .logError("Unable to load resource: " + domainModelURI, ex); // $NON-NLS-1$
   }
   if (diagramRoot == null) {
     MessageDialog.openError(
         getShell(),
         Messages.InitDiagramFile_ResourceErrorDialogTitle,
         Messages.InitDiagramFile_ResourceErrorDialogMessage);
     return;
   }
   Wizard wizard =
       new StateMachineNewDiagramFileWizard(domainModelURI, diagramRoot, editingDomain);
   wizard.setWindowTitle(
       NLS.bind(Messages.InitDiagramFile_WizardTitle, StateMachineEditPart.MODEL_ID));
   StateMachineDiagramEditorUtil.runWizard(getShell(), wizard, "InitDiagramFile"); // $NON-NLS-1$
 }
  /**
   * This method should be called within a workspace modify operation since it creates resources.
   *
   * @generated
   */
  public static Resource createDiagram(
      URI diagramURI,
      URI modelURI,
      final String diagramName,
      final String diagramNameWithoutExtension,
      final EClass initialObject,
      final String encoding,
      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);
    AbstractTransactionalCommand command =
        new AbstractTransactionalCommand(
            editingDomain,
            Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel,
            Collections.EMPTY_LIST) {

          protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
              throws ExecutionException {
            Package model = createInitialModel(initialObject, diagramNameWithoutExtension);
            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.uml2.diagram.csd.part.UMLDiagramEditorUtil.getSaveOptions(encoding));
              diagramResource.save(
                  org.eclipse.uml2.diagram.csd.part.UMLDiagramEditorUtil.getSaveOptions(encoding));
            } 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 TOEDomainNavigatorContentProvider() {
    myAdapterFctoryContentProvier =
        new AdapterFactoryContentProvider(
            TOEDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
    TransactionalEditingDomain editingDomain =
        GMFEditingDomainFactory.INSTANCE.createEditingDomain();
    myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;
    myEditingDomain.setResourceToReadOnlyMap(
        new HashMap() {

          public Object get(Object key) {
            if (!containsKey(key)) {
              put(key, Boolean.TRUE);
            }
            return super.get(key);
          }
        });
    myViewerRefreshRunnable =
        new Runnable() {

          public void run() {
            if (myViewer != null) {
              myViewer.refresh();
            }
          }
        };
    myWorkspaceSynchronizer =
        new WorkspaceSynchronizer(
            editingDomain,
            new WorkspaceSynchronizer.Delegate() {

              public void dispose() {}

              public boolean handleResourceChanged(final Resource resource) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }

              public boolean handleResourceDeleted(Resource resource) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }

              public boolean handleResourceMoved(Resource resource, final URI newURI) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }
            });
  }
 /** @generated */
 public void run(IAction action) {
   TransactionalEditingDomain editingDomain =
       GMFEditingDomainFactory.INSTANCE.createEditingDomain();
   Resource resource =
       AtomicDiagramEditorUtil.openModel(
           getShell(), Messages.InitDiagramFile_OpenModelFileDialogTitle, editingDomain);
   if (resource == null || resource.getContents().isEmpty()) {
     return;
   }
   EObject diagramRoot = (EObject) resource.getContents().get(0);
   Wizard wizard = new AtomicNewDiagramFileWizard(resource.getURI(), diagramRoot, editingDomain);
   wizard.setWindowTitle(NLS.bind(Messages.InitDiagramFile_WizardTitle, AGraphEditPart.MODEL_ID));
   AtomicDiagramEditorUtil.runWizard(getShell(), wizard, "InitDiagramFile"); // $NON-NLS-1$
 }
  /** @generated */
  @SuppressWarnings({"unchecked", "serial", "rawtypes"})
  public StateAnalysisNavigatorContentProvider() {
    TransactionalEditingDomain editingDomain =
        GMFEditingDomainFactory.INSTANCE.createEditingDomain();
    myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;
    myEditingDomain.setResourceToReadOnlyMap(
        new HashMap() {
          public Object get(Object key) {
            if (!containsKey(key)) {
              put(key, Boolean.TRUE);
            }
            return super.get(key);
          }
        });
    myViewerRefreshRunnable =
        new Runnable() {
          public void run() {
            if (myViewer != null) {
              myViewer.refresh();
            }
          }
        };
    myWorkspaceSynchronizer =
        new WorkspaceSynchronizer(
            editingDomain,
            new WorkspaceSynchronizer.Delegate() {
              public void dispose() {}

              public boolean handleResourceChanged(final Resource resource) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }

              public boolean handleResourceDeleted(Resource resource) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }

              public boolean handleResourceMoved(Resource resource, final URI newURI) {
                unloadAllResources();
                asyncRefresh();
                return true;
              }
            });
  }
  /** @generated */
  public static Resource createDiagram(URI diagramURI, IProgressMonitor progressMonitor) {
    TransactionalEditingDomain editingDomain =
        GMFEditingDomainFactory.INSTANCE.createEditingDomain();
    progressMonitor.beginTask(Messages.RoxgtDiagramEditorUtil_CreateDiagramProgressTask, 3);
    final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
    final String diagramName = diagramURI.lastSegment();
    AbstractTransactionalCommand command =
        new AbstractTransactionalCommand(
            editingDomain,
            Messages.RoxgtDiagramEditorUtil_CreateDiagramCommandLabel,
            Collections.EMPTY_LIST) {
          protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
              throws ExecutionException {
            Graph model = createInitialModel();
            attachModelToResource(model, diagramResource);

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

            try {

              diagramResource.save(org.roxgt.diagram.part.RoxgtDiagramEditorUtil.getSaveOptions());
            } catch (IOException e) {

              RoxgtDiagramEditorPlugin.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) {
      RoxgtDiagramEditorPlugin.getInstance()
          .logError("Unable to create model and diagram", e); // $NON-NLS-1$
    }
    return diagramResource;
  }
  protected void initDiagramFile() throws CoreException {
    List<IFile> affectedFiles = new LinkedList<IFile>();
    final IFile diagramFile = createNewFile();
    PlwebDiagramEditorUtil.setCharset(diagramFile);
    affectedFiles.add(diagramFile);
    URI diagramModelURI = URI.createPlatformResourceURI(diagramFile.getFullPath().toString(), true);
    TransactionalEditingDomain editingDomain =
        GMFEditingDomainFactory.INSTANCE.createEditingDomain();
    ResourceSet resourceSet = editingDomain.getResourceSet();
    final Resource diagramResource = resourceSet.createResource(diagramModelURI);
    AbstractTransactionalCommand command =
        new AbstractTransactionalCommand(
            editingDomain, Messages.PlwebNewDiagramFileWizard_InitDiagramCommand, affectedFiles) {

          protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
              throws ExecutionException {
            DiagramRoot element = getElement(getEditingDomain());
            int diagramVID = PlwebVisualIDRegistry.getDiagramVisualID(element);
            if (diagramVID != DiagramRootEditPart.VISUAL_ID) {
              return CommandResult.newErrorCommandResult(
                  Messages.PlwebNewDiagramFileWizard_IncorrectRootError);
            }
            Diagram diagram =
                ViewService.createDiagram(
                    element,
                    DiagramRootEditPart.MODEL_ID,
                    PlwebDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
            diagramResource.getContents().add(diagram);
            return CommandResult.newOKCommandResult();
          }
        };
    try {
      OperationHistoryFactory.getOperationHistory()
          .execute(command, new NullProgressMonitor(), null);
      diagramResource.save(PlwebDiagramEditorUtil.getSaveOptions());
      PlwebDiagramEditorUtil.openDiagram(diagramResource);
    } catch (ExecutionException e) {
      PlwebDiagramEditorPlugin.getInstance()
          .logError("Unable to create model and diagram", e); // $NON-NLS-1$
    } catch (IOException ex) {
      PlwebDiagramEditorPlugin.getInstance()
          .logError("Save operation failed for: " + diagramModelURI, ex); // $NON-NLS-1$
    } catch (PartInitException ex) {
      PlwebDiagramEditorPlugin.getInstance().logError("Unable to open editor", ex); // $NON-NLS-1$
    }
  }
  public Object execute(ExecutionEvent event) throws ExecutionException {
    IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
    PluginHelper plugin = hub.top.editor.Activator.getPluginHelper();
    try {
      /*
      if (!(window.getActivePage().getActiveEditor() instanceof
      		hub.top.editor.eclipse.IFrameWorkEditor ))
      	throw new Exception("Anonymize: action works in ServiceTechnology.org framework editors only.");

      // retrieve and prepare editor utils
      EditorUtil sourceEditor = ((IFrameWorkEditor)window.getActivePage().getActiveEditor()).getEditorUtil();
      EObject obj = sourceEditor.getCurrentResource().getContents().get(0);

      System.out.println(obj);
      */
      IEditorPart editor = window.getActivePage().getActiveEditor();

      Resource res = null;
      PtNet net = null;
      EditorUtil sourceEditor = null;

      if (editor instanceof DiagramDocumentEditor) {
        DiagramDocumentEditor diagEdit = (DiagramDocumentEditor) editor;
        net = (PtNet) diagEdit.getDiagram().getElement();
        res = diagEdit.getDiagram().eResource();
      } else if (editor instanceof hub.top.editor.eclipse.IFrameWorkEditor) {
        sourceEditor =
            ((IFrameWorkEditor) window.getActivePage().getActiveEditor()).getEditorUtil();
        net = (PtNet) sourceEditor.getCurrentRootModel();
        res = net.eResource();
      }

      if (net != null) {
        TransactionalEditingDomain editDomain =
            PtnetLoLAEditingDomainFactory.INSTANCE.getEditingDomain(
                net.eResource().getResourceSet());
        if (editDomain == null) editDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();

        CompoundCommand cc = new CompoundCommand();
        int placeNum = 0;
        for (Place p : net.getPlaces()) {
          String name = "p" + placeNum;
          SetCommand set =
              new SetCommand(editDomain, p, PtnetLoLAPackage.eINSTANCE.getNode_Name(), name);
          cc.append(set);
          placeNum++;
        }
        int transitionNum = 0;
        for (Transition t : net.getTransitions()) {
          String name = "t" + transitionNum;
          SetCommand set =
              new SetCommand(editDomain, t, PtnetLoLAPackage.eINSTANCE.getNode_Name(), name);
          cc.append(set);
          transitionNum++;
        }
        editDomain.getCommandStack().execute(cc);
        return res;
      }

      if (sourceEditor != null) {
        sourceEditor.refreshEditorView();
      }

      return null;
    } catch (Exception exception) {
      plugin.logError(exception);
      MessageDialog.openInformation(
          window.getShell(),
          "Anonymize",
          "We're sorry, we could not anonymize the model. See the error log for details.");
    }
    return null;
  }