package org.eclipse.uml2.diagram.clazz.parser; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.uml2.diagram.clazz.parsers.MessageFormatParser; import org.eclipse.uml2.diagram.parser.assist.FixedSetCompletionProcessor; import org.eclipse.uml2.uml.UMLPackage; public class GeneralizationSetParser extends MessageFormatParser { private static final String COMPLETE = "complete"; //$NON-NLS-1$ private static final String INCOMPLETE = "incomplete"; //$NON-NLS-1$ private static final String DISJOINT = "disjoint"; //$NON-NLS-1$ private static final String OVERLAPPING = "overlapping"; //$NON-NLS-1$ private static final EAttribute[] features = new EAttribute[] { UMLPackage.eINSTANCE.getGeneralizationSet_IsCovering(), UMLPackage.eINSTANCE.getGeneralizationSet_IsDisjoint(), }; public GeneralizationSetParser() { super(features); setViewPattern("{0}, {1}"); //$NON-NLS-1$ setEditPattern("{0}, {1}"); //$NON-NLS-1$ } @Override protected Object getValue(EObject element, EAttribute feature) { Object value = element.eGet(feature); if (UMLPackage.eINSTANCE.getGeneralizationSet_IsCovering().equals(feature)) { return Boolean.TRUE.equals(value) ? COMPLETE : INCOMPLETE; } if (UMLPackage.eINSTANCE.getGeneralizationSet_IsDisjoint().equals(feature)) { return Boolean.TRUE.equals(value) ? DISJOINT : OVERLAPPING; } return super.getValue(element, feature); } @Override protected Object getValidNewValue(EAttribute feature, Object value) { if (UMLPackage.eINSTANCE.getGeneralizationSet_IsCovering().equals(feature)) { return COMPLETE.equals(value); } if (UMLPackage.eINSTANCE.getGeneralizationSet_IsDisjoint().equals(feature)) { return DISJOINT.equals(value); } return super.getValidNewValue(feature, value); } @Override public IContentAssistProcessor getCompletionProcessor(IAdaptable element) { return new FixedSetCompletionProcessor(COMPLETE, INCOMPLETE, DISJOINT, OVERLAPPING); } }