/**
* Copyright (c) 2012-2016 Marsha Chechik, Alessio Di Sandro, Michalis Famelis,
* Rick Salay.
* 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:
* Alessio Di Sandro - Implementation.
*/
package edu.toronto.cs.se.mmint.mid.ui;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.AttributeValueWrapperItemProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import edu.toronto.cs.se.mmint.MMINT;
import edu.toronto.cs.se.mmint.mid.EMFInfo;
import edu.toronto.cs.se.mmint.mid.MIDLevel;
import edu.toronto.cs.se.mmint.mid.utils.MIDRegistry;
import edu.toronto.cs.se.mmint.mid.utils.PrimitiveEObjectWrapper;
public class ModelElementLabelProvider extends AdapterFactoryLabelProvider {
private MIDLevel level;
public ModelElementLabelProvider(AdapterFactory adapterFactory, MIDLevel level) {
super(adapterFactory);
this.level = level;
}
@Override
public String getText(Object object) {
String text;
if (level == MIDLevel.INSTANCES && (object instanceof AttributeValueWrapperItemProvider || object instanceof EObject)) {
if (object instanceof AttributeValueWrapperItemProvider) {
object = new PrimitiveEObjectWrapper((AttributeValueWrapperItemProvider) object);
}
EMFInfo eInfo = MIDRegistry.getModelElementEMFInfo((EObject) object, MIDLevel.INSTANCES);
text = eInfo.toInstanceString();
if (object instanceof PrimitiveEObjectWrapper) {
text = text.replace(MMINT.MODELELEMENT_PRIMITIVEVALUE_PLACEHOLDER, ((PrimitiveEObjectWrapper) object).getValue().toString());
text = text.replace(MMINT.MODELELEMENT_EMFVALUE_PLACEHOLDER, super.getText(((PrimitiveEObjectWrapper) object).getOwner()));
}
else {
text = text.replace(MMINT.MODELELEMENT_EMFVALUE_PLACEHOLDER, super.getText(object));
}
}
else {
text = super.getText(object);
}
return text;
}
}