/* * Copyright (c) 2007 Borland Software Corporation * * 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: * Dmitry Stadnik (Borland) - initial API and implementation */ package org.eclipse.gmf.internal.sketch.transformer.reconcile; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.codegen.gmfgen.DesignLabelModelFacet; import org.eclipse.gmf.codegen.gmfgen.FeatureLabelModelFacet; import org.eclipse.gmf.codegen.gmfgen.GenChildLabelNode; import org.eclipse.gmf.codegen.gmfgen.GenLabel; import org.eclipse.gmf.codegen.gmfgen.LabelModelFacet; /** * @author dstadnik */ public class LabelModelFacetDecision extends SmartDecision { public void apply(EObject newElement, EObject oldElement) { LabelModelFacet newFacet = getFacet(newElement); LabelModelFacet oldFacet = getFacet(oldElement); if (newFacet instanceof FeatureLabelModelFacet && oldFacet instanceof FeatureLabelModelFacet) { FeatureLabelModelFacet newFeatureFacet = (FeatureLabelModelFacet) newFacet; FeatureLabelModelFacet oldFeatureFacet = (FeatureLabelModelFacet) oldFacet; newFeatureFacet.setViewPattern(oldFeatureFacet.getViewPattern()); newFeatureFacet.setEditPattern(oldFeatureFacet.getEditPattern()); newFeatureFacet.setEditorPattern(oldFeatureFacet.getEditorPattern()); newFeatureFacet.setViewMethod(oldFeatureFacet.getViewMethod()); newFeatureFacet.setEditMethod(oldFeatureFacet.getEditMethod()); } else if (newFacet == null && oldFacet instanceof DesignLabelModelFacet) { setFacet(newElement, oldFacet); } } protected LabelModelFacet getFacet(EObject element) { LabelModelFacet facet = null; if (element instanceof GenLabel) { facet = ((GenLabel) element).getModelFacet(); } else if (element instanceof GenChildLabelNode) { facet = ((GenChildLabelNode) element).getLabelModelFacet(); } return facet; } protected void setFacet(EObject element, LabelModelFacet facet) { if (element instanceof GenLabel) { ((GenLabel) element).setModelFacet(facet); } else if (element instanceof GenChildLabelNode) { ((GenChildLabelNode) element).setLabelModelFacet(facet); } } }