/*******************************************************************************
* Copyright (c) 2006, 2007 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/)
* - Ashish Thandavan - initial API and implementation
******************************************************************************/
package eu.geclipse.workflow.ui.edit.policies;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
import org.eclipse.gmf.runtime.notation.View;
import eu.geclipse.workflow.model.IWorkflowElement;
import eu.geclipse.workflow.model.IWorkflowPackage;
import eu.geclipse.workflow.ui.edit.parts.InputPortEditPart;
import eu.geclipse.workflow.ui.edit.parts.OutputPortEditPart;
import eu.geclipse.workflow.ui.part.WorkflowDiagramUpdater;
import eu.geclipse.workflow.ui.part.WorkflowNodeDescriptor;
import eu.geclipse.workflow.ui.part.WorkflowVisualIDRegistry;
/**
* @generated
*/
public class WorkflowJobCanonicalEditPolicy extends CanonicalEditPolicy {
/**
* @generated
*/
Set myFeaturesToSynchronize;
/**
* @generated
*/
@Override
protected List getSemanticChildrenList() {
View viewObject = ( View )getHost().getModel();
List result = new LinkedList();
for( Iterator it = WorkflowDiagramUpdater.getIWorkflowJob_1001SemanticChildren( viewObject ).iterator(); it.hasNext(); ) {
result.add( ( ( WorkflowNodeDescriptor )it.next() ).getModelElement() );
}
return result;
}
/**
* @generated
*/
@Override
protected boolean isOrphaned( Collection semanticChildren, final View view ) {
int visualID = WorkflowVisualIDRegistry.getVisualID( view );
switch( visualID ) {
case OutputPortEditPart.VISUAL_ID:
case InputPortEditPart.VISUAL_ID:
return !semanticChildren.contains( view.getElement() )
|| visualID != WorkflowVisualIDRegistry.getNodeVisualID( ( View )getHost().getModel(), view.getElement() );
}
return false;
}
/**
* @generated
*/
@Override
protected String getDefaultFactoryHint() {
return null;
}
/**
* @generated
*/
@Override
protected Set<IWorkflowElement> getFeaturesToSynchronize() {
if( this.myFeaturesToSynchronize == null ) {
this.myFeaturesToSynchronize = new HashSet<IWorkflowElement>();
this.myFeaturesToSynchronize.add( IWorkflowPackage.eINSTANCE.getIWorkflowNode_Outputs() );
this.myFeaturesToSynchronize.add( IWorkflowPackage.eINSTANCE.getIWorkflowNode_Inputs() );
}
return this.myFeaturesToSynchronize;
}
}