package net.ms.designer.editors.workflow.policies;
import net.ms.designer.editors.workflow.commands.CreateNodeCommand;
import net.ms.designer.editors.workflow.commands.MoveNodeCommand;
import net.ms.designer.editors.workflow.commands.WireCommand;
import net.ms.designer.editors.workflow.editparts.WorkflowDiagramEditPart;
import net.ms.designer.editors.workflow.editparts.WorkflowEditPart;
import net.ms.designer.editors.workflow.figures.WorkflowActivityFigure;
import net.ms.designer.editors.workflow.figures.WorkflowColorConstants;
import net.ms.designer.editors.workflow.models.Wire;
import net.ms.designer.editors.workflow.models.WorkflowBaseActivity;
import net.ms.designer.editors.workflow.models.WorkflowDiagram;
import net.ms.designer.editors.workflow.models.WorkflowSubPart;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
import org.eclipse.gef.requests.CreateRequest;
public class DiagramLayoutEditPolicy extends XYLayoutEditPolicy
{
protected Command createAddCommand(EditPart child, Object constraint)
{
// TODO Auto-generated method stub
// //System.out.println("DiagramLayoutEditPolicy.createAddCommand");
return null;
}
protected Command createChangeConstraintCommand(EditPart child, Object constraint)
{
// //System.out.println("DiagramLayoutEditPolicy.createChangeConstraintCommand(");
// TODO Auto-generated method stub
if ((child instanceof WorkflowDiagramEditPart))
{
// //System.out.println("is workflowDiagramEditPart");
return null;
}
if (!(constraint instanceof Rectangle))
{
// //System.out.println("is not rectangle");
return null;
}
MoveNodeCommand cmd = new MoveNodeCommand();
cmd.setNode((WorkflowBaseActivity) child.getModel());
cmd.setLocation(((Rectangle) constraint).getLocation());
return cmd;
}
protected Command getCreateCommand(CreateRequest request)
{
// TODO Auto-generated method stub
// //System.out.println("DiagramLayoutEditPolicy.getCreateCommand()");
if (request.getNewObject() instanceof WorkflowSubPart)
{
CreateNodeCommand cmd = new CreateNodeCommand();
cmd.setParent((WorkflowDiagram) getHost().getModel());
cmd.setChild((WorkflowSubPart) request.getNewObject());
Rectangle constraint = (Rectangle) getConstraintFor(request);
// constraint.height = 30;
// constraint.setSize(20,20);
// constraint.width = 30;
cmd.setLocation(constraint.getLocation());
// //System.out.println("cmd.location:"+constraint.getLocation());
return cmd;
}
// if(request.getNewObject() instanceof Wire)
// {
// WireCommand wireCmd = new WireCommand();
//// wireCmd.s
// }
return null;
}
protected Command getDeleteDependantCommand(Request request)
{
// //System.out.println("DiagramLayoutEditPolicy.getDeleteDependantCommand");
// TODO Auto-generated method stub
return null;
}
protected IFigure createSizeOnDropFeedback(CreateRequest createRequest) {
IFigure figure;
Object oTemp = createRequest.getNewObject();
if (oTemp instanceof WorkflowBaseActivity)
figure = new WorkflowActivityFigure(((WorkflowBaseActivity)oTemp).getName(),((WorkflowBaseActivity)oTemp).getIconImage());
else {
figure = new RectangleFigure();
((RectangleFigure)figure).setXOR(true);
((RectangleFigure)figure).setFill(true);
figure.setBackgroundColor(WorkflowColorConstants.ghostFillColor);
figure.setForegroundColor(ColorConstants.white);
}
addFeedback(figure);
return figure;
}
}