package org.eclipse.gmf.tooling.runtime.parsers; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EEnumLiteral; import org.eclipse.emf.ecore.EObject; public class EnumParser extends ChoiceParserBase { public EnumParser(EAttribute enumFeature) { super(enumFeature); } @SuppressWarnings("unchecked") @Override protected Collection<Object> getItems(EObject element) { List<Object> result = new ArrayList<Object>(); EAttribute enumFeature = (EAttribute) getFeature(); EEnum type = (EEnum) enumFeature.getEType(); @SuppressWarnings("rawtypes") Class<? extends Enum> enumeratorClass = (Class<? extends Enum>) type.getInstanceClass(); for (EEnumLiteral eLiteral : type.getELiterals()) { Object literalValue = Enum.valueOf(enumeratorClass, eLiteral.getLiteral()); result.add(literalValue); } return result; } @Override protected String getEditChoice(EObject element, Object item) { return ((Enum<?>) item).name(); } }