package org.eclipse.gmf.examples.ocldriven.toe.diagram.edit.policies;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.examples.ocldriven.toe.Project;
import org.eclipse.gmf.examples.ocldriven.toe.diagram.edit.parts.ManagerLeadsEditPart;
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
import org.eclipse.gmf.runtime.notation.Edge;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.gmf.tooling.runtime.edit.policies.effect.AbstractOclVisualEffectEditPolicy;
import org.eclipse.gmf.tooling.runtime.ocl.tracker.OclTrackerFactory;
/**
* @generated
*/
public class LeadsProjectConnectionPinLineWidth4002Policy extends AbstractOclVisualEffectEditPolicy {
/**
* @generated
*/
public static final String KEY = "org.eclipse.gmf.examples.ocldriven.toe.diagram.edit.policies.LeadsProjectConnectionPinLineWidth4002Policy:KEY";
/**
* @generated
*/
public LeadsProjectConnectionPinLineWidth4002Policy() {
super(OclTrackerFactory.Type.IMPACT_ANALYZER);
}
/**
* @generated
*/
@Override
protected void setVisualEffectValue(Object value) {
getHostImpl().getPrimaryShape().setLineWidth((Integer) value);
}
/**
* @generated
*/
@Override
protected ManagerLeadsEditPart getHostImpl() {
return (ManagerLeadsEditPart) super.getHostImpl();
}
/**
* @generated
*/
@Override
protected String getExpressionBody() {
return " let _src : Manager = self.lead in " //
+ " let _dst : Project = self in " //
+ "--IA\r\nif _src.leads->size() > 2\r\nthen 3\r\nelse 1\r\nendif"; //$NON-NLS-1$
}
/**
* @generated
*/
@Override
protected EObject getContext() {
Edge hostModel = (Edge) host().getModel();
View targetModel = hostModel.getTarget();
View sourceModel = hostModel.getSource();
if (targetModel == null || sourceModel == null) {
return null;
}
EObject targetSemanticModel = ViewUtil.resolveSemanticElement(targetModel);
// need to check actual opposite of the semantic element, since diagram opposite could be not up to date
Project targetTypedModel = (Project) targetSemanticModel;
EObject sourceSemanticModel = targetTypedModel.getLead();
if (sourceSemanticModel == null) {
return null;
}
return targetSemanticModel;
}
}