/******************************************************************************* * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. 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 * *******************************************************************************/ package com.cisco.yangide.ext.model.editor.patterns.objects; import org.eclipse.emf.ecore.EClass; import org.eclipse.graphiti.features.context.IAddContext; import org.eclipse.graphiti.mm.pictograms.ContainerShape; import org.eclipse.graphiti.mm.pictograms.PictogramElement; import com.cisco.yangide.ext.model.Node; import com.cisco.yangide.ext.model.Rpc; import com.cisco.yangide.ext.model.RpcIO; import com.cisco.yangide.ext.model.editor.util.YangDiagramImageProvider; import com.cisco.yangide.ext.model.editor.util.YangModelUtil; import com.cisco.yangide.ext.model.impl.ModelFactoryImpl; public class RpcPattern extends DomainObjectPattern { @Override public String getCreateImageId() { return YangDiagramImageProvider.IMG_RPC_PROPOSAL; } @Override public String getCreateName() { return "rpc"; } @Override public EClass getObjectEClass() { return YangModelUtil.MODEL_PACKAGE.getRpc(); } @Override public PictogramElement add(IAddContext context) { ContainerShape cs = (ContainerShape) super.add(context); Rpc rpc = (Rpc) context.getNewObject(); boolean input = false; boolean output = false; for (Node n : YangModelUtil.filter(rpc.getChildren(), YangModelUtil.MODEL_PACKAGE.getRpcIO())) { if (((RpcIO) n).isInput()) { input = true; } else { output = true; } } if (!input) { addIO(true, rpc, cs); } if (!output) { addIO(false, rpc, cs); } layoutPictogramElement(cs); return cs; } private void addIO(boolean isInput, Rpc rpc, ContainerShape cs) { RpcIO o = ModelFactoryImpl.eINSTANCE.createRpcIO(); o.setInput(isInput); YangModelUtil.add(rpc, o, rpc.getChildren().size()); } }