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.ocl.util.Tuple; import org.eclipse.swt.graphics.Color; /** * @generated */ public class LeadsProjectConnectionPinForeground4002Policy extends AbstractOclVisualEffectEditPolicy { /** * @generated */ public static final String KEY = "org.eclipse.gmf.examples.ocldriven.toe.diagram.edit.policies.LeadsProjectConnectionPinForeground4002Policy:KEY"; /** * @generated */ public LeadsProjectConnectionPinForeground4002Policy() { super(); } /** * @generated */ @Override protected void setVisualEffectValue(Object value) { Tuple<?, ?> tupleValue = (Tuple<?, ?>) value; Integer red = (Integer) tupleValue.getValue("red"); Integer green = (Integer) tupleValue.getValue("green"); Integer blue = (Integer) tupleValue.getValue("blue"); Color color = new Color(null, red, green, blue); getHostImpl().getPrimaryShape().setForegroundColor(color); } /** * @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 " // + "if _src.leads->size() > 2\r\nthen Tuple {red: Integer = 255, green: Integer = 128, blue: Integer = 0} \r\nelse Tuple {red: Integer = 255, green: Integer =0, blue: Integer = 0} \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; } }