@Override
  public PrettyPrintState print(EObject root) throws ModelCreatingException {
    // System.err.println("print open net root");
    getLayoutManager().setup();
    PrettyPrintState state = new PrettyPrintState(root);

    if (root instanceof PtNet) {
      PtNet net = (PtNet) root;

      for (Place p : net.getPlaces()) {
        state.append("place" + getWhiteSpace("ws") + "\"" + p.getName() + "\"");
        if (p.getToken() > 0)
          state.append(getWhiteSpace("ws") + "init" + getWhiteSpace("ws") + p.getToken());
        state.append(";" + getWhiteSpace("statement"));
      }
      state.append(getWhiteSpace("statement"));

      for (Transition t : net.getTransitions()) {
        state.append("trans" + getWhiteSpace("ws") + "\"" + t.getName() + "\"");
        state.append(getWhiteSpace("statement"));

        state.append("in");
        state.append(getWhiteSpace("blockstart"));
        for (Arc arc : t.getIncoming()) {
          state.append(
              getWhiteSpace("indent")
                  + "\""
                  + arc.getSource().getName()
                  + "\""
                  + getWhiteSpace("statement"));
        }
        state.append(getWhiteSpace("blockend") + getWhiteSpace("statement"));

        state.append("out");
        state.append(getWhiteSpace("blockstart"));
        for (Arc arc : t.getOutgoing()) {
          state.append(
              getWhiteSpace("indent")
                  + "\""
                  + arc.getTarget().getName()
                  + "\""
                  + getWhiteSpace("statement"));
        }
        state.append(";");
        state.append(getWhiteSpace("blockend") + getWhiteSpace("statement"));
        state.append(getWhiteSpace("statement"));
      }
    }

    return state;
  }
  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;
  }