| /******************************************************************************* |
| * Copyright (c) 2013, 2015 Obeo. |
| * 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: |
| * Obeo - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.emf.compare.diagram.internal.factories.extensions; |
| |
| import org.eclipse.emf.compare.AttributeChange; |
| import org.eclipse.emf.compare.Diff; |
| import org.eclipse.emf.compare.DifferenceKind; |
| import org.eclipse.emf.compare.DifferenceSource; |
| import org.eclipse.emf.compare.diagram.internal.extensions.ExtensionsFactory; |
| import org.eclipse.emf.compare.diagram.internal.extensions.Show; |
| import org.eclipse.emf.compare.diagram.internal.factories.AbstractDiagramChangeFactory; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.gmf.runtime.notation.NotationPackage; |
| import org.eclipse.gmf.runtime.notation.View; |
| |
| /** |
| * Factory of show changes. |
| * |
| * @author <a href="mailto:cedric.notot@obeo.fr">Cedric Notot</a> |
| */ |
| public class ShowFactory extends AbstractDiagramChangeFactory { |
| |
| @Override |
| public Class<? extends Diff> getExtensionKind() { |
| return Show.class; |
| } |
| |
| @Override |
| public Show createExtension() { |
| return ExtensionsFactory.eINSTANCE.createShow(); |
| } |
| |
| @Override |
| public void setRefiningChanges(Diff extension, DifferenceKind extensionKind, Diff refiningDiff) { |
| if (refiningDiff.getSource() == extension.getSource()) { |
| extension.getRefinedBy().add(refiningDiff); |
| } |
| } |
| |
| /** |
| * {@inheritDoc} |
| * |
| * @see org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory#isRelatedToAnExtensionChange(org.eclipse.emf.compare.AttributeChange) |
| */ |
| @Override |
| protected boolean isRelatedToAnExtensionChange(AttributeChange input) { |
| if (input.getAttribute().equals(NotationPackage.eINSTANCE.getView_Visible())) { |
| final EObject right = input.getMatch().getRight(); |
| if (right instanceof View) { |
| final View rightView = (View)right; |
| final boolean cond1 = !rightView.isVisible() && input.getSource() != DifferenceSource.RIGHT; |
| final boolean cond2 = rightView.isVisible() && input.getSource() == DifferenceSource.RIGHT; |
| return cond1 || cond2; |
| } |
| } |
| return false; |
| } |
| |
| } |