/******************************************************************************* * Copyright (c) 2011 Red Hat, Inc. * All rights reserved. * This program is 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.eclipse.bpmn2.modeler.core.features; import java.util.Collection; import org.eclipse.bpmn2.BaseElement; import org.eclipse.bpmn2.di.BPMNShape; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.graphiti.mm.pictograms.Diagram; import org.eclipse.graphiti.mm.pictograms.PictogramElement; import org.eclipse.graphiti.services.Graphiti; import org.eclipse.graphiti.services.IPeService; public class BusinessObjectUtil { @SuppressWarnings("rawtypes") public static boolean containsElementOfType(PictogramElement elem, Class clazz) { if (elem.getLink() == null) { return false; } EList<EObject> businessObjs = elem.getLink().getBusinessObjects(); for (EObject eObject : businessObjs) { if (clazz.isInstance(eObject)) { return true; } } return false; } @SuppressWarnings("unchecked") public static <T extends EObject> T getFirstElementOfType(PictogramElement elem, Class<T> clazz) { if (elem.getLink() == null) { return null; } EList<EObject> businessObjs = elem.getLink().getBusinessObjects(); for (EObject eObject : businessObjs) { if (clazz.isInstance(eObject)) { return (T) eObject; } } return null; } public static PictogramElement getFirstBaseElementFromDiagram(Diagram diagram, BaseElement e) { PictogramElement foundElem = null; IPeService peService = Graphiti.getPeService(); Collection<PictogramElement> elements = peService.getAllContainedPictogramElements(diagram); for (PictogramElement pe : elements) { BaseElement be = getFirstElementOfType(pe, e.getClass()); if (be != null && be.equals(e)) { foundElem = pe; break; } } return foundElem; } public static PictogramElement getPictogramElementFromDiagram(Diagram diagram, BPMNShape bpmnShape) { PictogramElement foundElem = null; IPeService peService = Graphiti.getPeService(); Collection<PictogramElement> elements = peService.getAllContainedPictogramElements(diagram); for (PictogramElement pe : elements) { BPMNShape s = getFirstElementOfType(pe, BPMNShape.class); if (s != null && s.equals(bpmnShape)) { foundElem = pe; break; } } return foundElem; } }