package net.ms.designer.editors.enumcomponentdetail.dnd;
import net.ms.designer.editors.enumcomponentdetail.model.Table;
import net.ms.designer.editors.enumcomponentdetail.model.ValueField;
import net.ms.designer.editors.enumcomponentdetail.palette.EnumCreationFactory;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.dnd.TemplateTransferDropTargetListener;
import org.eclipse.gef.requests.CreationFactory;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.graphics.Point;
public class LogicTemplateTransferDropTargetListener extends
TemplateTransferDropTargetListener
{
protected void handleDragOver()
{
Point p = getViewer().getControl().toControl(getCurrentEvent().x,
getCurrentEvent().y);
org.eclipse.draw2d.geometry.Point point = new org.eclipse.draw2d.geometry.Point();
point.x = p.x;
point.y = p.y;
EditPart ep = this.getViewer().findObjectAt(point);
Object model = getCreateRequest().getNewObject();
if (ep.getModel() instanceof Table && model instanceof Table)
{
//����Ƕ��
getCurrentEvent().detail = DND.DROP_NONE;
}
else if (!(ep.getModel() instanceof Table) && !(model instanceof Table)
&& ((model instanceof ValueField) ))
{
//�ֶα�������ڱ���
getCurrentEvent().detail = DND.DROP_NONE;
}
else
super.handleDragOver();
}
public LogicTemplateTransferDropTargetListener(EditPartViewer viewer)
{
super(viewer);
}
protected CreationFactory getFactory(Object template)
{
return new EnumCreationFactory((Class)template);
}
}