/*******************************************************************************
* Copyright (c) 2008, 2012
* 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:
* Javier Canovas (javier.canovas@inria.fr)
*******************************************************************************/
package fr.inria.atlanmod.collaboro.ui.views;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EModelElement;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.provider.EModelElementItemProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import fr.inria.atlanmod.collaboro.history.Add;
import fr.inria.atlanmod.collaboro.history.Comment;
import fr.inria.atlanmod.collaboro.history.Delete;
import fr.inria.atlanmod.collaboro.history.HistoryFactory;
import fr.inria.atlanmod.collaboro.history.HistoryPackage;
import fr.inria.atlanmod.collaboro.history.Proposal;
import fr.inria.atlanmod.collaboro.history.Solution;
import fr.inria.atlanmod.collaboro.history.SyntaxElement;
import fr.inria.atlanmod.collaboro.history.Update;
import fr.inria.atlanmod.collaboro.history.Vote;
import fr.inria.atlanmod.collaboro.notation.NotationElement;
import fr.inria.atlanmod.collaboro.ui.CollaboroPlugin;
public class ChangesLabelProvider extends LabelProvider {
@Override
public String getText(Object element) {
if (element instanceof Add) {
Add add = (Add) element;
return "Add";
} else if (element instanceof Update) {
Update update = (Update) element;
return "Update";
} else if (element instanceof Delete) {
Delete delete = (Delete) element;
return "Delete";
} else if (element instanceof SyntaxElement) {
SyntaxElement syntaxElement = (SyntaxElement) element;
EReference reference = syntaxElement.eContainmentFeature();
if(reference.getName().equals("referredElement")) {
return "Referred";
} else if (reference.getName().equals("target")) {
return "Target";
} else if (reference.getName().equals("source")) {
return "Source";
} else {
return "Unknown";
}
} else if (element instanceof SyntaxElementPropertySource) {
SyntaxElementPropertySource syntaxElementPropertySource = (SyntaxElementPropertySource) element;
Object syntaxElement = syntaxElementPropertySource.getObject();
if (syntaxElement instanceof EModelElement) {
EModelElement modelElement = (EModelElement) syntaxElement;
return modelElement.eClass().getName() + " " + ((modelElement instanceof EClassifier) ? (((EClassifier) modelElement).getName()) : " ");
} else if (syntaxElement instanceof NotationElement) {
NotationElement notationElement = (NotationElement) syntaxElement;
return notationElement.eClass().getName() + " " + notationElement.getId();
}
}
return super.getText(element);
}
protected String imagePath(Object element) {
if (element instanceof Add) {
return "icons/add.png";
} else if (element instanceof Update) {
return "icons/update.png";
} else if (element instanceof Delete) {
return "icons/delete.png";
} else if (element instanceof SyntaxElement) {
SyntaxElement syntaxElement = (SyntaxElement) element;
EReference reference = syntaxElement.eContainmentFeature();
if(reference.getName().equals("referredElement")) {
return "icons/referred.png";
} else if (reference.getName().equals("target")) {
return "icons/target.png";
} else if (reference.getName().equals("source")) {
return "icons/source.png";
} else {
return null;
}
} else if (element instanceof SyntaxElementPropertySource) {
SyntaxElementPropertySource syntaxElementPropertySource = (SyntaxElementPropertySource) element;
Object syntaxElement = syntaxElementPropertySource.getObject();
if (syntaxElement instanceof EModelElement) {
return "icons/abstract.png";
} else if (syntaxElement instanceof NotationElement) {
return "icons/concrete.png";
}
}
return null;
}
public Image getImage(Object element) {
return CollaboroPlugin.getImage(imagePath(element)).createImage();
}
}