Package org.openiaml.model.tests.eclipse

Source Code of org.openiaml.model.tests.eclipse.CreateNewDiagramTestCase

/**
*
*/
package org.openiaml.model.tests.eclipse;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.openiaml.model.diagram.custom.commands.GmfInferenceHandler;
import org.openiaml.model.diagram.part.IamlDiagramEditor;
import org.openiaml.model.diagram.part.IamlDiagramEditorPlugin;
import org.openiaml.model.diagram.part.IamlDiagramEditorUtil;
import org.openiaml.model.inference.EcoreCreateElementsHelper;
import org.openiaml.model.model.InternetApplication;
import org.openiaml.model.model.domain.DomainType;
import org.openiaml.model.model.visual.Frame;
import org.openiaml.model.model.wires.SyncWire;

/**
* Try creating a new diagram and new domain file.
*
* @author jmwright
*
*/
public class CreateNewDiagramTestCase extends EclipseTestCaseHelper {

  private IamlDiagramEditor editor;
  private InternetApplication root;

  /**
   * Try simply creating a brand new editor with no files in it.
   *
   * @throws Exception
   */
  public void testCreateBlank() throws Exception {
    Resource r = IamlDiagramEditorUtil.createDiagram(
        createProjectURI("blank.iaml_diagram"),
        createProjectURI("blank.iaml"),
        new NullProgressMonitor());

    assertNotNull(r);

    boolean opened = IamlDiagramEditorUtil.openDiagram(r);
    assertTrue("Editor opened", opened);

    IEditorPart ep = getActiveEditor();
    assertTrue("Active editor an IamlDiagramEditor", ep instanceof IamlDiagramEditor);

    editor = (IamlDiagramEditor) ep;
    EObject rendering = editor.getDiagramEditPart().resolveSemanticElement();
    assertNotNull("Rendering a non-null element", rendering);
    assertTrue("Rendering an InternetApplication", rendering instanceof InternetApplication);

    // there should be 1 elements in this editor: a generated page (issue 89)
    assertEditorHasChildren(1, editor);

    root = (InternetApplication) rendering;
    assertEquals(0, root.getIterators().size());
    assertEquals(0, root.getLoginHandlers().size());
    assertEquals(0, root.getAccessHandlers().size());
    assertEquals(1, root.getScopes().size());
    Frame page = (Frame) root.getScopes().get(0);
    assertEquals("Home", page.getName());

    // should not be empty
    assertFalse("InternetApplication is not empty", root.eContents().isEmpty());
  }

  /**
   * Get the currently open editor.
   *
   * @return The currently open editor part.
   */
  protected IEditorPart getActiveEditor() {
    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    assertNotNull("Workbench page not null", page);

    IEditorPart ep = page.getActiveEditor();
    assertNotNull("Active editor not null", ep);

    return ep;
  }

  /**
   * Try creating a new diagram, and then add elements to it.
   *
   * @throws Exception
   */
  public void testCreatingElements() throws Exception {
    // create a blank editor
    testCreateBlank();
    EcoreCreateElementsHelper gmf = getElementCreator();

    // initially just the default page
    assertEditorHasChildren(1, editor);

    // create a DomainStore
    DomainType ds = gmf.createDomainType(root);
    assertNotNull(ds);

    // and a Frame
    Frame page = gmf.createFrame(root);
    assertNotNull(page);

    // there should be three elements in this editor
    assertEditorHasChildren(3, editor);

    // add another frame
    Frame page2 = gmf.createFrame(root);
    assertNotNull(page2);

    // create a SyncWire between the two
    SyncWire sync = gmf.createSyncWire(root, page, page2);
    assertNotNull(sync);

    // there should be four elements in this editor
    assertEditorHasChildren(4, editor);
  }

  public void testCreatingSubEditor() throws Exception {
    // create a blank editor
    testCreateBlank();
    EcoreCreateElementsHelper gmf = getElementCreator();

    // we should be in the root editor
    assertEditorRoot(editor);

    // initially just the initial page
    assertEditorHasChildren(1, editor);

    // create a Page
    Frame page = gmf.createFrame(root);
    assertNotNull(page);

    // set its name
    gmf.setName(page, "page1");
    assertEquals("Page name should have changed", page.getName(), "page1");

    // there should be one element in this editor
    assertEditorHasChildren(2, editor);

    // find the edit part for the page
    ShapeNodeEditPart pageNode = assertHasFrame(editor, "page1");

    // open the page
    DiagramDocumentEditor pageEditor = openDiagram(pageNode);
    assertNotNull(pageEditor);
    assertEditorFrame(pageEditor);

    // there shouldn't be anything here
    assertEditorHasChildren(0, pageEditor);

    // close this editor
    ((org.openiaml.model.diagram.frame.part.IamlDiagramEditor) pageEditor).closeBlocking(false);

    // we're back in the root editor
    assertEquals(editor.getTitle(), getActiveEditor().getTitle());
    assertEquals("We're back in the root editor after closing the visual editor", getActiveEditor(), editor);
    assertEditorRoot(getActiveEditor());
  }

  /**
   * Returns an object that we will use to create elements in the editor.
   *
   * @see GmfInferenceHandler
   * @return an object creation helper
   */
  protected EcoreCreateElementsHelper getElementCreator() {
    return new GmfInferenceHandler(
      new NullProgressMonitor(),   // monitor
      null, // IAdaptable info
      IamlDiagramEditorPlugin.ID, // editorId
      editor.getEditingDomain()); // editingDomain
  }

  /**
   * Construct an EMF URI from a given filename in the current
   * project.
   *
   * @param filename
   * @returns an EMF URI of the filename
   */
  protected URI createProjectURI(String filename) {
    return URI.createPlatformResourceURI(getProject().getFile(filename).getFullPath().toString(), true);
  }

  @Override
  public void tearDown() throws Exception {
    if (editor != null) {
      editor.close(false);
      editor = null;
    }

    root = null;

    super.tearDown();
  }
}
TOP

Related Classes of org.openiaml.model.tests.eclipse.CreateNewDiagramTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.