package org.eclipse.gmf.examples.eclipsecon.diagram.custom.editpolicies; import java.util.Iterator; import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.CompoundCommand; import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gmf.examples.eclipsecon.diagram.edit.parts.PresenterEditPart; import org.eclipse.gmf.examples.eclipsecon.diagram.providers.EclipseconElementTypes; import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy; import org.eclipse.gmf.runtime.diagram.ui.commands.EtoolsProxyCommand; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest; import org.eclipse.gmf.runtime.emf.type.core.IElementType; public class PresenterDragDropEditPolicy extends DragDropEditPolicy { /* * (non-Javadoc) * * @see org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy#getDropCommand(org.eclipse.gef.requests.ChangeBoundsRequest) */ protected Command getDropCommand(ChangeBoundsRequest request) { Command cmd = super.getDropCommand(request); if (cmd == null) { IElementType elementType = EclipseconElementTypes.TutorialPresenters_3003; CompoundCommand cm = new CompoundCommand(); Iterator elements = request.getEditParts().iterator(); while (elements.hasNext()) { Object obj = elements.next(); if (obj instanceof PresenterEditPart) { cmd = CreateConnectionViewAndElementRequest .getCreateCommand(elementType, getHost(), (PresenterEditPart) obj, ((IGraphicalEditPart) getHost()) .getDiagramPreferencesHint()); if (cmd != null) cm.add(cmd); } } if (cm.isEmpty()) return null; return new EtoolsProxyCommand(new CommandProxy(cm.unwrap())); } return cmd; } }