| /***************************************************************************** |
| * Copyright (c) 2012, 2017 CEA LIST. |
| * |
| * |
| * 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: |
| * (CEA LIST) - Initial API and implementation |
| * |
| *****************************************************************************/ |
| package org.eclipse.papyrus.revision.tool.queries; |
| |
| import org.eclipse.emf.compare.Comparison; |
| import org.eclipse.emf.compare.DifferenceKind; |
| import org.eclipse.emf.compare.ReferenceChange; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.papyrus.emf.facet.custom.metamodel.custompt.IColor; |
| import org.eclipse.papyrus.emf.facet.custom.ui.internal.custompt.Color; |
| import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager; |
| import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2; |
| import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2; |
| import org.eclipse.papyrus.revision.tool.core.ReviewResourceManager; |
| import org.eclipse.papyrus.revision.tool.ui.ReviewsEditor; |
| import org.eclipse.ui.IWorkbenchPart; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.uml2.uml.Element; |
| |
| /** This class is query that returns the color of the element by taking account information about Compare model. */ |
| public class GetBackgroundColor implements IJavaQuery2<EObject, IColor> { |
| protected Color blue=new Color(0,0,250); |
| protected Color red=new Color(250,0,0); |
| protected Color green=new Color(0,250,0); |
| protected Color black=new Color(0,0,0); |
| |
| public IColor evaluate(final EObject context, final IParameterValueList2 parameterValues, final IFacetManager facetManager){ |
| if( context instanceof Element){ |
| Element element= (Element)context; |
| IWorkbenchPart part=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.papyrus.revisiontool.commentview"); |
| if( part instanceof ReviewsEditor){ |
| ReviewResourceManager reviewResourceManager=((ReviewsEditor)part).getReviewResourceManager(); |
| if(reviewResourceManager.getCurrentReviewModelWithoutLoading()!=null){ |
| Comparison comparison=reviewResourceManager.getDiffModel(); |
| if(comparison.getMatch(element)!=null){ |
| return blue; |
| } |
| |
| if(comparison.getDifferences(element).size()>0){ |
| if(comparison.getDifferences(element).get(0).getKind().equals(DifferenceKind.DELETE)&& isChangeAboutContaiment(comparison, element)){ |
| return red; |
| } |
| if(comparison.getDifferences(element).get(0).getKind().equals(DifferenceKind.ADD)&& isChangeAboutContaiment(comparison, element)){ |
| return green; |
| } |
| if(comparison.getDifferences(element).get(0).getKind().equals(DifferenceKind.CHANGE)){ |
| return blue; |
| } |
| else{return black;} |
| |
| } |
| else{return black;} |
| } |
| } |
| } |
| return black; |
| } |
| protected boolean isChangeAboutContaiment(Comparison comparison, EObject element){ |
| if(comparison.getDifferences(element).get(0) instanceof ReferenceChange){ |
| ReferenceChange refChange=(ReferenceChange)comparison.getDifferences(element).get(0); |
| if( refChange.getReference().isContainment()){ |
| return true; |
| } |
| } |
| return false; |
| } |
| } |