
ingenias.editor.panels.ActivityDiagramPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of editor Show documentation
Show all versions of editor Show documentation
The INGENIAS Development Kit
/**
* Copyright (C) 2010 Jorge J. Gomez-Sanz over original code from Ruben Fuentes and Juan Pavon
*
* Modifications over original code from jgraph.sourceforge.net
*
* This file is part of the INGENME tool. INGENME is an open source meta-editor
* which produces customized editors for user-defined modeling languages
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 3 of the License
*
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
**/
package ingenias.editor.panels;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.Map;
import java.util.Hashtable;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.URL;
import java.util.Map;
import java.util.Hashtable;
import java.util.ArrayList;
import javax.swing.event.UndoableEditEvent;
import org.jgraph.JGraph;
import org.jgraph.graph.*;
import org.jgraph.event.*;
import java.util.Vector;
import org.jgraph.JGraph;
import org.jgraph.graph.*;
import org.jgraph.event.*;
import org.jgraph.plaf.basic.*;
import ingenias.editor.entities.*;
import ingenias.editor.cell.*;
import ingenias.editor.events.*;
import ingenias.exception.InvalidEntity;
import ingenias.editor.*;
public class ActivityDiagramPanel extends JGraph {
public ActivityDiagramPanel(ActivityDiagramDataEntity mde,
String nombre, Model
m, BasicMarqueeHandler mh) {
super(m, mh);
this.getGraphLayoutCache().setFactory(new ingenias.editor.cellfactories.ActivityDiagramCellViewFactory());
}
//
// Adding Tooltips
//
// Return Cell Label as a Tooltip
public String getToolTipText(MouseEvent e) {
if (e != null) {
// Fetch Cell under Mousepointer
Object c = getFirstCellForLocation(e.getX(), e.getY());
if (c != null) {
// Convert Cell to String and Return
return convertValueToString(c);
}
}
return null;
}
public static Vector getAllowedEntities(){
Vector entities=new Vector();
entities.add("InitialNode");
entities.add("DecisionNode");
entities.add("ForkNode");
entities.add("EndNode");
entities.add("Task");
entities.add("Role");
entities.add("WorkflowBox");
entities.add("UMLComment");
entities.add("TextNote");
entities.add("TaskWS");
entities.add("Workflow");
entities.add("BoxedTask");
entities.add("RoleWS");
entities.add("ContextBindingTask");
entities.add("ContextReleaseTask");
entities.add("Plan");
return entities;
}
public DefaultGraphCell createCell(String entity) throws InvalidEntity{
if (entity.equalsIgnoreCase("InitialNode")) {
InitialNode nentity=new InitialNode(((Model)getModel()).getNewId("InitialNode"));
DefaultGraphCell vertex = new
InitialNodeCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("DecisionNode")) {
DecisionNode nentity=new DecisionNode(((Model)getModel()).getNewId("DecisionNode"));
DefaultGraphCell vertex = new
DecisionNodeCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("ForkNode")) {
ForkNode nentity=new ForkNode(((Model)getModel()).getNewId("ForkNode"));
DefaultGraphCell vertex = new
ForkNodeCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("EndNode")) {
EndNode nentity=new EndNode(((Model)getModel()).getNewId("EndNode"));
DefaultGraphCell vertex = new
EndNodeCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("Task")) {
Task nentity=new Task(((Model)getModel()).getNewId("Task"));
DefaultGraphCell vertex = new
TaskCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("Role")) {
Role nentity=new Role(((Model)getModel()).getNewId("Role"));
DefaultGraphCell vertex = new
RoleCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("WorkflowBox")) {
WorkflowBox nentity=new WorkflowBox(((Model)getModel()).getNewId("WorkflowBox"));
DefaultGraphCell vertex = new
WorkflowBoxCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("UMLComment")) {
UMLComment nentity=new UMLComment(((Model)getModel()).getNewId("UMLComment"));
DefaultGraphCell vertex = new
UMLCommentCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("TextNote")) {
TextNote nentity=new TextNote(((Model)getModel()).getNewId("TextNote"));
DefaultGraphCell vertex = new
TextNoteCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("TaskWS")) {
TaskWS nentity=new TaskWS(((Model)getModel()).getNewId("TaskWS"));
DefaultGraphCell vertex = new
TaskWSCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("Workflow")) {
Workflow nentity=new Workflow(((Model)getModel()).getNewId("Workflow"));
DefaultGraphCell vertex = new
WorkflowCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("BoxedTask")) {
BoxedTask nentity=new BoxedTask(((Model)getModel()).getNewId("BoxedTask"));
DefaultGraphCell vertex = new
BoxedTaskCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("RoleWS")) {
RoleWS nentity=new RoleWS(((Model)getModel()).getNewId("RoleWS"));
DefaultGraphCell vertex = new
RoleWSCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("ContextBindingTask")) {
ContextBindingTask nentity=new ContextBindingTask(((Model)getModel()).getNewId("ContextBindingTask"));
DefaultGraphCell vertex = new
ContextBindingTaskCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("ContextReleaseTask")) {
ContextReleaseTask nentity=new ContextReleaseTask(((Model)getModel()).getNewId("ContextReleaseTask"));
DefaultGraphCell vertex = new
ContextReleaseTaskCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
if (entity.equalsIgnoreCase("Plan")) {
Plan nentity=new Plan(((Model)getModel()).getNewId("Plan"));
DefaultGraphCell vertex = new
PlanCell(nentity);
// Default Size for the cell with the new entity
return vertex;
}
else
throw new ingenias.exception.InvalidEntity("Entity type "+entity+" is not allowed in this diagram");
}
public Dimension getDefaultSize(Entity entity) throws InvalidEntity{
if (entity.getType().equalsIgnoreCase("InitialNode")) {
return InitialNodeView.getSize((InitialNode)entity);
}
else
if (entity.getType().equalsIgnoreCase("DecisionNode")) {
return DecisionNodeView.getSize((DecisionNode)entity);
}
else
if (entity.getType().equalsIgnoreCase("ForkNode")) {
return ForkNodeView.getSize((ForkNode)entity);
}
else
if (entity.getType().equalsIgnoreCase("EndNode")) {
return EndNodeView.getSize((EndNode)entity);
}
else
if (entity.getType().equalsIgnoreCase("Task")) {
return TaskView.getSize((Task)entity);
}
else
if (entity.getType().equalsIgnoreCase("Role")) {
return RoleView.getSize((Role)entity);
}
else
if (entity.getType().equalsIgnoreCase("WorkflowBox")) {
return WorkflowBoxView.getSize((WorkflowBox)entity);
}
else
if (entity.getType().equalsIgnoreCase("UMLComment")) {
return UMLCommentView.getSize((UMLComment)entity);
}
else
if (entity.getType().equalsIgnoreCase("TextNote")) {
return TextNoteView.getSize((TextNote)entity);
}
else
if (entity.getType().equalsIgnoreCase("TaskWS")) {
return TaskWSView.getSize((TaskWS)entity);
}
else
if (entity.getType().equalsIgnoreCase("Workflow")) {
return WorkflowView.getSize((Workflow)entity);
}
else
if (entity.getType().equalsIgnoreCase("BoxedTask")) {
return BoxedTaskView.getSize((BoxedTask)entity);
}
else
if (entity.getType().equalsIgnoreCase("RoleWS")) {
return RoleWSView.getSize((RoleWS)entity);
}
else
if (entity.getType().equalsIgnoreCase("ContextBindingTask")) {
return ContextBindingTaskView.getSize((ContextBindingTask)entity);
}
else
if (entity.getType().equalsIgnoreCase("ContextReleaseTask")) {
return ContextReleaseTaskView.getSize((ContextReleaseTask)entity);
}
else
if (entity.getType().equalsIgnoreCase("Plan")) {
return PlanView.getSize((Plan)entity);
}
else
throw new ingenias.exception.InvalidEntity("Entity type "+entity+" is not allowed in this diagram");
}
public DefaultGraphCell insert(Point point, String entity) throws InvalidEntity {
// CellView information is not available after creating the cell.
// Create a Map that holds the attributes for the Vertex
Map map = new Hashtable();
// Snap the Point to the Grid
// Construct Vertex with no Label
DefaultGraphCell vertex;
Dimension size;
vertex=this.createCell(entity);
size=this.getDefaultSize((Entity)vertex.getUserObject());
// Add a Bounds Attribute to the Map
GraphConstants.setBounds(map, new Rectangle(point, size));
// Construct a Map from cells to Maps (for insert)
Hashtable attributes = new Hashtable();
// Associate the Vertex with its Attributes
attributes.put(vertex, map);
// Insert the Vertex and its Attributes
this.getModel().insert(new Object[] {vertex},attributes
, null, null, null);
return vertex;
}
public DefaultGraphCell insertDuplicated(Point point, ingenias.editor.entities.Entity
entity) {
// CellView information is not available after creating the cell.
// Create a Map that holds the attributes for the Vertex
Map map =new Hashtable();
// Snap the Point to the Grid
// Construct Vertex with no Label
DefaultGraphCell vertex = null;
Dimension size = null;
if (entity.getClass().equals(InitialNode.class)) {
vertex = new InitialNodeCell( (InitialNode) entity);
// Default Size for the new Vertex with the new entity within
size = InitialNodeView.getSize((InitialNode) entity);
}
else
if (entity.getClass().equals(DecisionNode.class)) {
vertex = new DecisionNodeCell( (DecisionNode) entity);
// Default Size for the new Vertex with the new entity within
size = DecisionNodeView.getSize((DecisionNode) entity);
}
else
if (entity.getClass().equals(ForkNode.class)) {
vertex = new ForkNodeCell( (ForkNode) entity);
// Default Size for the new Vertex with the new entity within
size = ForkNodeView.getSize((ForkNode) entity);
}
else
if (entity.getClass().equals(EndNode.class)) {
vertex = new EndNodeCell( (EndNode) entity);
// Default Size for the new Vertex with the new entity within
size = EndNodeView.getSize((EndNode) entity);
}
else
if (entity.getClass().equals(Task.class)) {
vertex = new TaskCell( (Task) entity);
// Default Size for the new Vertex with the new entity within
size = TaskView.getSize((Task) entity);
}
else
if (entity.getClass().equals(Role.class)) {
vertex = new RoleCell( (Role) entity);
// Default Size for the new Vertex with the new entity within
size = RoleView.getSize((Role) entity);
}
else
if (entity.getClass().equals(WorkflowBox.class)) {
vertex = new WorkflowBoxCell( (WorkflowBox) entity);
// Default Size for the new Vertex with the new entity within
size = WorkflowBoxView.getSize((WorkflowBox) entity);
}
else
if (entity.getClass().equals(UMLComment.class)) {
vertex = new UMLCommentCell( (UMLComment) entity);
// Default Size for the new Vertex with the new entity within
size = UMLCommentView.getSize((UMLComment) entity);
}
else
if (entity.getClass().equals(TextNote.class)) {
vertex = new TextNoteCell( (TextNote) entity);
// Default Size for the new Vertex with the new entity within
size = TextNoteView.getSize((TextNote) entity);
}
else
if (entity.getClass().equals(TaskWS.class)) {
vertex = new TaskWSCell( (TaskWS) entity);
// Default Size for the new Vertex with the new entity within
size = TaskWSView.getSize((TaskWS) entity);
}
else
if (entity.getClass().equals(Workflow.class)) {
vertex = new WorkflowCell( (Workflow) entity);
// Default Size for the new Vertex with the new entity within
size = WorkflowView.getSize((Workflow) entity);
}
else
if (entity.getClass().equals(BoxedTask.class)) {
vertex = new BoxedTaskCell( (BoxedTask) entity);
// Default Size for the new Vertex with the new entity within
size = BoxedTaskView.getSize((BoxedTask) entity);
}
else
if (entity.getClass().equals(RoleWS.class)) {
vertex = new RoleWSCell( (RoleWS) entity);
// Default Size for the new Vertex with the new entity within
size = RoleWSView.getSize((RoleWS) entity);
}
else
if (entity.getClass().equals(ContextBindingTask.class)) {
vertex = new ContextBindingTaskCell( (ContextBindingTask) entity);
// Default Size for the new Vertex with the new entity within
size = ContextBindingTaskView.getSize((ContextBindingTask) entity);
}
else
if (entity.getClass().equals(ContextReleaseTask.class)) {
vertex = new ContextReleaseTaskCell( (ContextReleaseTask) entity);
// Default Size for the new Vertex with the new entity within
size = ContextReleaseTaskView.getSize((ContextReleaseTask) entity);
}
else
if (entity.getClass().equals(Plan.class)) {
vertex = new PlanCell( (Plan) entity);
// Default Size for the new Vertex with the new entity within
size = PlanView.getSize((Plan) entity);
}
else
{}; // Just in case there is no allowed entity in the diagram
if (vertex == null) {
System.err.println(
"Object not allowed in ActivityDiagram diagram :"+
entity.getId()+":"+entity.getClass().getName()+
this.getClass().getName()); }
else {
// Add a Bounds Attribute to the Map
GraphConstants.setBounds(map, new Rectangle(point, size));
// Construct a Map from cells to Maps (for insert)
Hashtable attributes = new Hashtable();
// Associate the Vertex with its Attributes
attributes.put(vertex, map);
// Insert the Vertex and its Attributes
this.getModel().insert(new Object[] {vertex},attributes
, null, null, null);
}
return vertex;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy