/*******************************************************************************
* Copyright (c) 2008 g-Eclipse Consortium
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Initial development of the original code was made for the g-Eclipse project
* funded by European Union project number: FP6-IST-034327
* http://www.geclipse.eu/
*
* Contributors:
* RUR (http://acet.rdg.ac.uk/)
* - David Johnson - initial API and implementation
******************************************************************************/
package eu.geclipse.workflow.ui.edit.policies;
import java.util.List;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import eu.geclipse.jsdl.JSDLJobDescription;
import eu.geclipse.workflow.model.IWorkflowJob;
import eu.geclipse.workflow.ui.edit.commands.CopyJobDescToWorkflowCommand;
import eu.geclipse.workflow.ui.edit.commands.UpdateJobPortsCommand;
import eu.geclipse.workflow.ui.edit.parts.WorkflowJobEditPart;
import eu.geclipse.workflow.ui.part.Messages;
/**
* @author david
*/
public class WorkflowJobDragDropEditPolicy extends DragDropEditPolicy {
private WorkflowJobEditPart selectedElement = null;
/*
* (non-Javadoc)
* @see
* org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramDragDropEditPolicy
* #getDropObjectsCommand
* (org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest)
*/
@SuppressWarnings("unchecked")
@Override
public Command getDropObjectsCommand( DropObjectsRequest dropRequest ) {
List objects = dropRequest.getObjects();
CompoundCommand cmd = new CompoundCommand();
JSDLJobDescription jsdl = null;
for( Object o : objects ) {
if( o instanceof JSDLJobDescription ) {
jsdl = ( JSDLJobDescription )o;
this.selectedElement = ( WorkflowJobEditPart )getHost();
IWorkflowJob selectedJob = (IWorkflowJob)this.selectedElement.resolveSemanticElement();
CopyJobDescToWorkflowCommand copyCmd = new CopyJobDescToWorkflowCommand( this.selectedElement.resolveSemanticElement(), jsdl);
UpdateJobPortsCommand updatePortsCmd = new UpdateJobPortsCommand(this.selectedElement, jsdl);
if (!(selectedJob.getName()==null && selectedJob.getJobDescription()==null)) {
MessageDialog confirmDialog = new MessageDialog( null,
Messages.getString("WorkflowJobDragDropEditPolicy_confirmationTitle"), //$NON-NLS-1$
null,
Messages.getString( "WorkflowJobDragDropEditPolicy_userPrompt" ), //$NON-NLS-1$
true ? MessageDialog.QUESTION : MessageDialog.WARNING ,
new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL },
0 );
int result = confirmDialog.open();
if (result==0) {
cmd.add( new ICommandProxy(copyCmd) );
cmd.add (new ICommandProxy(updatePortsCmd) );
}
} else {
cmd.add( new ICommandProxy(copyCmd) );
cmd.add (new ICommandProxy(updatePortsCmd) );
}
}
return cmd;
}
return super.getDropObjectsCommand( dropRequest );
}
}