/**
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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 gov.redhawk.ide.graphiti.ui.diagram.features.update;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import gov.redhawk.core.graphiti.ui.diagram.features.AbstractDiagramUpdateFeature;
import gov.redhawk.core.graphiti.ui.ext.RHContainerShape;
import gov.redhawk.ide.graphiti.ui.diagram.patterns.AbstractFindByPattern;
import gov.redhawk.ide.graphiti.ui.diagram.util.DUtil;
import gov.redhawk.ide.graphiti.ui.diagram.util.FindByUtil;
import mil.jpeojtrs.sca.partitioning.FindBy;
import mil.jpeojtrs.sca.partitioning.FindByStub;
public abstract class AbstractDesignDiagramUpdateFeature extends AbstractDiagramUpdateFeature {
public AbstractDesignDiagramUpdateFeature(IFeatureProvider fp) {
super(fp);
}
protected FindByStub addFindByStub(FindBy findBy, Diagram diagram) {
return FindByUtil.createFindByStub(findBy, getFeatureProvider(), diagram);
}
protected List<FindByStub> getFindByStubs(Diagram diagram) {
// contains all the findByStubs that should exist in the diagram
ArrayList<FindByStub> findByStubs = new ArrayList<FindByStub>();
// populate list of findByStubs with existing instances from diagram
List<RHContainerShape> findByShapes = AbstractFindByPattern.getAllFindByShapes(diagram);
for (RHContainerShape findByShape : findByShapes) {
findByStubs.add(DUtil.getBusinessObject(findByShape, FindByStub.class));
}
return findByStubs;
}
protected FindByStub getFindByStub(FindBy findBy, Diagram diagram) {
for (FindByStub findByStub : getFindByStubs(diagram)) {
if (AbstractFindByPattern.doFindByObjectsMatch(findBy, findByStub)) {
return findByStub;
}
}
return null;
}
}