/*
* Created on Jul 15, 2004
*/
package com.realpersist.gef.policy;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy;
import org.eclipse.gef.requests.CreateConnectionRequest;
import org.eclipse.gef.requests.ReconnectRequest;
import com.realpersist.gef.command.ReconnectForeignKeyCommand;
import com.realpersist.gef.command.ReconnectPrimaryKeyCommand;
import com.realpersist.gef.command.RelationshipCreateCommand;
import com.realpersist.gef.model.Relationship;
import com.realpersist.gef.part.TablePart;
/**
* Handles manipulation of relationships between tables
* @author Phil Zoio
*/
public class TableNodeEditPolicy extends GraphicalNodeEditPolicy
{
/**
* @see GraphicalNodeEditPolicy#getConnectionCreateCommand(CreateConnectionRequest)
*/
protected Command getConnectionCreateCommand(CreateConnectionRequest request)
{
RelationshipCreateCommand cmd = new RelationshipCreateCommand();
TablePart part = (TablePart) getHost();
cmd.setForeignTable(part.getTable());
request.setStartCommand(cmd);
return cmd;
}
/**
* @see GraphicalNodeEditPolicy#getConnectionCompleteCommand(CreateConnectionRequest)
*/
protected Command getConnectionCompleteCommand(CreateConnectionRequest request)
{
RelationshipCreateCommand cmd = (RelationshipCreateCommand) request.getStartCommand();
TablePart part = (TablePart) request.getTargetEditPart();
cmd.setPrimaryTable(part.getTable());
return cmd;
}
/**
* @see GraphicalNodeEditPolicy#getReconnectSourceCommand(ReconnectRequest)
*/
protected Command getReconnectSourceCommand(ReconnectRequest request)
{
ReconnectForeignKeyCommand cmd = new ReconnectForeignKeyCommand();
cmd.setRelationship((Relationship) request.getConnectionEditPart().getModel());
TablePart tablePart = (TablePart) getHost();
cmd.setSourceForeignKey(tablePart.getTable());
return cmd;
}
/**
* @see GraphicalNodeEditPolicy#getReconnectTargetCommand(ReconnectRequest)
*/
protected Command getReconnectTargetCommand(ReconnectRequest request)
{
ReconnectPrimaryKeyCommand cmd = new ReconnectPrimaryKeyCommand();
cmd.setRelationship((Relationship) request.getConnectionEditPart().getModel());
TablePart tablePart = (TablePart) getHost();
cmd.setTargetPrimaryKey(tablePart.getTable());
return cmd;
}
}