/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.compare.ui.tree; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.mapping.Mapping; import org.eclipse.emf.mapping.MappingHelper; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.teiid.designer.compare.DifferenceDescriptor; import org.teiid.designer.compare.DifferenceReport; import org.teiid.designer.compare.DifferenceType; import org.teiid.designer.compare.ui.PluginConstants; import org.teiid.designer.core.workspace.ModelWorkspaceItem; import org.teiid.designer.ui.viewsupport.ModelUtilities; /** * MappingLabelProvider is a specialization of LabelProvider. * * @since 8.0 */ public class MappingLabelProvider extends LabelProvider implements PluginConstants { final WorkbenchLabelProvider workbenchProvider = new WorkbenchLabelProvider(); private ILabelProvider lpImageLabelProvider; /** * Constructor. * @param showDatatypes flag whether to show datatypes as part of text string */ public MappingLabelProvider( ) { // lpImageLabelProvider = new ModelExplorerLabelProvider(); lpImageLabelProvider = ModelUtilities.getEMFLabelProvider(); } @Override public Image getImage(final Object node) { if( node instanceof DifferenceReport ) { return null; } else if( node instanceof Mapping ) { Mapping mapping = (Mapping)node; MappingHelper helper = mapping.getHelper(); if(helper instanceof DifferenceDescriptor) { final DifferenceDescriptor desc = (DifferenceDescriptor)helper; final DifferenceType type = desc.getType(); if ( type.getValue() == DifferenceType.DELETION ) { final List<EObject> inputs = mapping.getInputs(); final EObject input = inputs.isEmpty() ? null : inputs.get(0); if(input!=null) { return lpImageLabelProvider.getImage(input); } } else { final List<EObject> outputs = mapping.getOutputs(); final EObject output = outputs.isEmpty() ? null : outputs.get(0); final List<EObject> inputs = mapping.getInputs(); final EObject input = inputs.isEmpty() ? null : inputs.get(0); if(output!=null) { return lpImageLabelProvider.getImage(output); } else if(input!=null) { return lpImageLabelProvider.getImage(input); } } } } else if (node instanceof EObject) { return lpImageLabelProvider.getImage(node); } if ( node instanceof ModelWorkspaceItem ) { return workbenchProvider.getImage(((ModelWorkspaceItem)node).getResource()); } return null; } @Override public String getText(final Object node) { if( node instanceof DifferenceReport ) { DifferenceReport diffReport = (DifferenceReport)node; String result = diffReport.getTitle(); if (result == null) { result = diffReport.getResultUri(); } return result; } else if( node instanceof Mapping ) { Mapping mapping = (Mapping)node; MappingHelper helper = mapping.getHelper(); if(helper instanceof DifferenceDescriptor) { final DifferenceDescriptor desc = (DifferenceDescriptor)helper; final DifferenceType type = desc.getType(); int typeValue = type.getValue(); if ( typeValue == DifferenceType.ADDITION ) { final List<EObject> outputs = mapping.getOutputs(); final EObject output = outputs.isEmpty() ? null : outputs.get(0); if(output!=null) { return ModelUtilities.getEMFLabelProvider().getText(output); } } else if(typeValue == DifferenceType.DELETION) { final List<EObject> inputs = mapping.getInputs(); final EObject input = inputs.isEmpty() ? null : inputs.get(0); if(input!=null) { return ModelUtilities.getEMFLabelProvider().getText(input); } } else if(typeValue == DifferenceType.CHANGE) { final List<EObject> outputs = mapping.getOutputs(); final EObject output = outputs.isEmpty() ? null : outputs.get(0); if(output!=null) { return ModelUtilities.getEMFLabelProvider().getText(output); } } else if(typeValue == DifferenceType.NO_CHANGE) { final List<EObject> outputs = mapping.getOutputs(); final EObject output = outputs.isEmpty() ? null : outputs.get(0); if(output!=null) { return ModelUtilities.getEMFLabelProvider().getText(output); } } else if(typeValue == DifferenceType.CHANGE_BELOW) { final List<EObject> outputs = mapping.getOutputs(); final EObject output = outputs.isEmpty() ? null : outputs.get(0); final List<EObject> inputs = mapping.getInputs(); final EObject input = inputs.isEmpty() ? null : inputs.get(0); if(output!=null) { return ModelUtilities.getEMFLabelProvider().getText(output); } else if(input!=null) { return ModelUtilities.getEMFLabelProvider().getText(input); } } } } else if (node instanceof EObject) { return ModelUtilities.getEMFLabelProvider().getText(node); } if ( node instanceof ModelWorkspaceItem ) { return workbenchProvider.getText(((ModelWorkspaceItem)node).getResource()); } return "UNKNOWN"; //$NON-NLS-1$ } }