Demo.java :  » GWT » gwtuml » com » objetdirect » gwt » umldrawer » client » Java Open Source

Java Open Source » GWT » gwtuml 
gwtuml » com » objetdirect » gwt » umldrawer » client » Demo.java
/*
 * This file is part of the GWTUML project and was written by Mounier Florian <mounier-dot-florian.at.gmail'dot'com> for Objet Direct
 * <http://wwww.objetdirect.com>
 * 
 * Copyright  2009 Objet Direct Contact: gwtuml@googlegroups.com
 * 
 * GWTUML is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * GWTUML is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License along with GWTUML. If not, see <http://www.gnu.org/licenses/>.
 */
package com.objetdirect.gwt.umldrawer.client;

import java.util.ArrayList;
import java.util.Arrays;

import com.allen_sauer.gwt.log.client.Log;
import com.objetdirect.gwt.umlapi.client.artifacts.ClassArtifact;
import com.objetdirect.gwt.umlapi.client.artifacts.ClassRelationLinkArtifact;
import com.objetdirect.gwt.umlapi.client.artifacts.LinkNoteArtifact;
import com.objetdirect.gwt.umlapi.client.artifacts.NoteArtifact;
import com.objetdirect.gwt.umlapi.client.engine.Point;
import com.objetdirect.gwt.umlapi.client.helpers.UMLCanvas;
import com.objetdirect.gwt.umlapi.client.umlcomponents.UMLClassAttribute;
import com.objetdirect.gwt.umlapi.client.umlcomponents.UMLClassMethod;
import com.objetdirect.gwt.umlapi.client.umlcomponents.UMLParameter;
import com.objetdirect.gwt.umlapi.client.umlcomponents.UMLVisibility;
import com.objetdirect.gwt.umlapi.client.umlcomponents.UMLLink.LinkKind;

/**
 * This class is an exemple of a static contruction of a uml diagram
 * 
 * @author Florian Mounier (mounier-dot-florian.at.gmail'dot'com)
 * 
 */
public class Demo {

  private final static int  FIRST_ROW        = 85;
  private final static int  SECOND_ROW        = 250;
  private final static int  THIRD_ROW        = 450;
  private final static int  FOURTH_ROW        = 650;
  private final static int  MIDDLE_SECOND_THIRD_ROW  = 350;
  private final static int  MIDDLE_THIRD_FOURTH_ROW  = 550;

  /**
   * Constructor of the demo, it creates all the demo uml artifacts and positions it
   * 
   * @param canvas
   *            The {@link UMLCanvas} where to add the demo uml artifacts
   */
  public Demo(final UMLCanvas canvas) {
    super();
    Log.trace("Creating demo");

    final ClassArtifact uMLCanvas = new ClassArtifact(canvas, 0, "UMLCanvas");
    final ClassArtifact uMLEventListener = new ClassArtifact(canvas, 1, "UMLEventListener", "Interface");
    final ClassArtifact externClass = new ClassArtifact(canvas, 2, "ExternClass", "Imaginary");
    final ClassArtifact uMLArtifact = new ClassArtifact(canvas, 3, "UMLArtifact", "Abstract");
    final ClassArtifact boxArtifact = new ClassArtifact(canvas, 4, "BoxArtifact", "Abstract");
    final ClassArtifact classArtifact = new ClassArtifact(canvas, 5, "ClassArtifact");
    final ClassArtifact classPartArtifact = new ClassArtifact(canvas, 6, "ClassPartArtifact", "Abstract");
    final ClassArtifact classPartAttributesArtifact = new ClassArtifact(canvas, 7, "ClassPartAttributesArtifact");
    final ClassArtifact classPartMethodsArtifact = new ClassArtifact(canvas, 8, "ClassPartMethodsArtifact");
    final ClassArtifact classPartNameArtifact = new ClassArtifact(canvas, 9, "ClassPartNameArtifact");
    final ClassArtifact noteArtifact = new ClassArtifact(canvas, 10, "NoteArtifact");
    final ClassArtifact linkArtifact = new ClassArtifact(canvas, 11, "LinkArtifact", "Abstract");
    final ClassArtifact linkClassRelationArtifact = new ClassArtifact(canvas, 12, "LinkClassRelationArtifact");
    final ClassArtifact linkNoteArtifact = new ClassArtifact(canvas, 13, "LinkNoteArtifact");
    final ClassArtifact relationLinkArtifact = new ClassArtifact(canvas, 14, "RelationLinkArtifact");

    uMLCanvas.setLocation(new Point(500, Demo.FIRST_ROW));
    uMLEventListener.setLocation(new Point(10, Demo.FIRST_ROW - 10));
    uMLArtifact.setLocation(new Point(925, Demo.FIRST_ROW));
    externClass.setLocation(new Point(140, Demo.SECOND_ROW));
    boxArtifact.setLocation(new Point(355, Demo.SECOND_ROW));
    linkArtifact.setLocation(new Point(850, Demo.MIDDLE_SECOND_THIRD_ROW));
    classArtifact.setLocation(new Point(100, Demo.THIRD_ROW));
    noteArtifact.setLocation(new Point(550, Demo.THIRD_ROW));
    linkClassRelationArtifact.setLocation(new Point(800, Demo.FOURTH_ROW));
    linkNoteArtifact.setLocation(new Point(700, Demo.MIDDLE_THIRD_FOURTH_ROW));
    relationLinkArtifact.setLocation(new Point(950, Demo.MIDDLE_THIRD_FOURTH_ROW));
    classPartArtifact.setLocation(new Point(325, Demo.THIRD_ROW - 15));
    classPartAttributesArtifact.setLocation(new Point(50, Demo.FOURTH_ROW));
    classPartMethodsArtifact.setLocation(new Point(305, Demo.FOURTH_ROW));
    classPartNameArtifact.setLocation(new Point(525, Demo.FOURTH_ROW));

    uMLEventListener.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "boolean", "onNewUMLArtifact", Arrays.asList(new UMLParameter("UMLArtifact",
        "uMLArtifact"))));
    uMLEventListener.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "boolean", "onEditUMLArtifact", Arrays.asList(new UMLParameter("UMLArtifact",
        "uMLArtifact"))));
    uMLEventListener.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "boolean", "onDeleteUMLArtifact", Arrays.asList(new UMLParameter("UMLArtifact",
        "uMLArtifact"))));

    uMLCanvas.addAttribute(new UMLClassAttribute(UMLVisibility.PRIVATE, "HashMap<GfxObject,UMLArtifact>", "objects"));
    uMLCanvas.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "void", "add", Arrays.asList(new UMLParameter("UMLArtifact", "uMLArtifact"))));
    uMLCanvas.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "void", "remove", Arrays.asList(new UMLParameter("UMLArtifact", "uMLArtifact"))));

    uMLArtifact.addAttribute(new UMLClassAttribute(UMLVisibility.PROTECTED, "GfxObject", "gfxObject"));
    uMLArtifact.addMethod(new UMLClassMethod(UMLVisibility.PUBLIC, "void", "edit", Arrays.asList(new UMLParameter("GfxObject", "editedGfxObject"))));

    classPartArtifact.addMethod(new UMLClassMethod(UMLVisibility.PACKAGE, "void", "computeBounds", new ArrayList<UMLParameter>()));

    canvas.add(uMLCanvas);
    canvas.add(uMLEventListener);
    canvas.add(externClass);
    canvas.add(uMLArtifact);
    canvas.add(boxArtifact);
    canvas.add(classArtifact);
    canvas.add(classPartArtifact);
    canvas.add(classPartAttributesArtifact);
    canvas.add(classPartMethodsArtifact);
    canvas.add(classPartNameArtifact);
    canvas.add(noteArtifact);
    canvas.add(linkArtifact);
    canvas.add(linkClassRelationArtifact);
    canvas.add(linkNoteArtifact);
    canvas.add(relationLinkArtifact);

    final ClassRelationLinkArtifact uMLCanvas_uMLEventListener = new ClassRelationLinkArtifact(canvas, 15, uMLCanvas, uMLEventListener, LinkKind.AGGREGATION_RELATION);
    final ClassRelationLinkArtifact uMLEventListener_externClass = new ClassRelationLinkArtifact(canvas, 16, uMLEventListener, externClass,
        LinkKind.REALIZATION_RELATION);
    final ClassRelationLinkArtifact uMLCanvas_uMLArtifact = new ClassRelationLinkArtifact(canvas, 17, uMLCanvas, uMLArtifact, LinkKind.COMPOSITION_RELATION);
    final ClassRelationLinkArtifact uMLArtifact_uMLArtifact = new ClassRelationLinkArtifact(canvas, 18, uMLArtifact, uMLArtifact, LinkKind.COMPOSITION_RELATION);
    final ClassRelationLinkArtifact uMLArtifact_boxArtifact = new ClassRelationLinkArtifact(canvas, 19, uMLArtifact, boxArtifact, LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact uMLArtifact_linkArtifact = new ClassRelationLinkArtifact(canvas, 20, uMLArtifact, linkArtifact, LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact uMLArtifact_linkArtifact_2 = new ClassRelationLinkArtifact(canvas, 21, uMLArtifact, linkArtifact, LinkKind.ASSOCIATION_RELATION);
    final ClassRelationLinkArtifact boxArtifact_classArtifact = new ClassRelationLinkArtifact(canvas, 22, boxArtifact, classArtifact, LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact boxArtifact_classPartArtifact = new ClassRelationLinkArtifact(canvas, 23, boxArtifact, classPartArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact boxArtifact_noteArtifact = new ClassRelationLinkArtifact(canvas, 24, boxArtifact, noteArtifact, LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact linkArtifact_relationLinkArtifact = new ClassRelationLinkArtifact(canvas, 25, linkArtifact, relationLinkArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact linkArtifact_linkClassRelationArtifact = new ClassRelationLinkArtifact(canvas, 26, linkArtifact, linkClassRelationArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact linkArtifact_linkNoteArtifact = new ClassRelationLinkArtifact(canvas, 27, linkArtifact, linkNoteArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact classPartArtifact_classPartAttributesArtifact = new ClassRelationLinkArtifact(canvas, 28, classPartArtifact,
        classPartAttributesArtifact, LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact classPartArtifact_classPartMethodsArtifact = new ClassRelationLinkArtifact(canvas, 29, classPartArtifact, classPartMethodsArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact classPartArtifact_classPartNameArtifact = new ClassRelationLinkArtifact(canvas, 30, classPartArtifact, classPartNameArtifact,
        LinkKind.GENERALIZATION_RELATION);
    final ClassRelationLinkArtifact classArtifact_classPartArtifact = new ClassRelationLinkArtifact(canvas, 31, classArtifact, classPartArtifact,
        LinkKind.COMPOSITION_RELATION);

    uMLCanvas_uMLEventListener.setRightNavigability(false);
    classArtifact_classPartArtifact.setCardinalities("1", "3");
    uMLArtifact_linkArtifact_2.setName("Links");
    uMLArtifact_linkArtifact_2.setLeftCardinality("2");
    uMLArtifact_linkArtifact_2.setRightCardinality("0..*");
    canvas.add(uMLCanvas_uMLEventListener);
    canvas.add(uMLEventListener_externClass);
    canvas.add(uMLCanvas_uMLArtifact);
    canvas.add(uMLArtifact_uMLArtifact);
    canvas.add(uMLArtifact_boxArtifact);
    canvas.add(uMLArtifact_linkArtifact);
    canvas.add(uMLArtifact_linkArtifact_2);
    canvas.add(boxArtifact_classArtifact);
    canvas.add(boxArtifact_classPartArtifact);
    canvas.add(boxArtifact_noteArtifact);
    canvas.add(linkArtifact_relationLinkArtifact);
    canvas.add(linkArtifact_linkClassRelationArtifact);
    canvas.add(linkArtifact_linkNoteArtifact);
    canvas.add(classPartArtifact_classPartAttributesArtifact);
    canvas.add(classPartArtifact_classPartMethodsArtifact);
    canvas.add(classPartArtifact_classPartNameArtifact);
    canvas.add(classArtifact_classPartArtifact);

    final NoteArtifact titleNote = new NoteArtifact(canvas, 32, "Demo class diagram\nCanvas and artifact of gwtuml");
    final NoteArtifact classPartNote = new NoteArtifact(canvas, 33, "ClassArtifact\nis cut in 3 parts\nfor code clarity");

    titleNote.setLocation(new Point(15, 15));
    classPartNote.setLocation(new Point(30, Demo.MIDDLE_SECOND_THIRD_ROW));

    canvas.add(titleNote);
    canvas.add(classPartNote);

    final LinkNoteArtifact classPartNote_classArtifact = new LinkNoteArtifact(canvas, 34, classPartNote, classArtifact);
    final LinkNoteArtifact classPartNote_classPartArtifact = new LinkNoteArtifact(canvas, 35, classPartNote, classPartArtifact);
    final LinkNoteArtifact classPartNote_classArtifact_classPartArtifact = new LinkNoteArtifact(canvas, 36, classPartNote, classArtifact_classPartArtifact);

    canvas.add(classPartNote_classArtifact);
    canvas.add(classPartNote_classPartArtifact);
    canvas.add(classPartNote_classArtifact_classPartArtifact);

  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.