/**
* Copyright (c) 2010-2012 ISBAN S.L
*
* 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
*
* Contributors:
* Ruben De Dios (ISBAN S.L)
* Andrez Alvarez Mattos (ISBAN S.L)
*/
package org.eclipse.gmf.tooling.simplemap.model.triggers.graph;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.gmf.gmfgraph.Figure;
import org.eclipse.gmf.tooling.simplemap.model.triggers.AbstractTrigger;
class SetActualFigureTrigger extends AbstractTrigger {
private Figure newFigure;
private Figure oldFigure;
/**
* This trigger migrates compatible Figure attributes from oldFigure to newFigure
* @param domain
* @param oldFigure
* @param newFigure
*/
public SetActualFigureTrigger(TransactionalEditingDomain domain, Figure oldFigure, Figure newFigure) {
super(domain);
this.newFigure = newFigure;
this.oldFigure = oldFigure;
}
@Override
public void executeTrigger() {
if (oldFigure == null || newFigure == null)
return;
//Containment references
for (EReference reference : oldFigure.eClass().getEAllReferences())
if (!reference.isDerived() && newFigure.eClass().getEAllReferences().contains(reference))
newFigure.eSet(reference, oldFigure.eGet(reference));
//Attributes
for (EAttribute attribute : oldFigure.eClass().getEAllAttributes())
if (newFigure.eClass().getEAllAttributes().contains(attribute))
newFigure.eSet(attribute, oldFigure.eGet(attribute));
}
}