/*
* Copyright (c) 2006, 2008 Borland Software Corp.
*
* 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:
* Alexander Shatalin (Borland) - initial API and implementation
*/
package org.eclipse.gmf.ecore.providers;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.gmf.ecore.edit.parts.EAnnotation2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EAnnotationSourceEditPart;
import org.eclipse.gmf.ecore.edit.parts.EAttributeEditPart;
import org.eclipse.gmf.ecore.edit.parts.EClass2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EClassNameEditPart;
import org.eclipse.gmf.ecore.edit.parts.EDataType2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EDataTypeNameEditPart;
import org.eclipse.gmf.ecore.edit.parts.EEnum2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EEnumLiteralEditPart;
import org.eclipse.gmf.ecore.edit.parts.EEnumNameEditPart;
import org.eclipse.gmf.ecore.edit.parts.EOperationEditPart;
import org.eclipse.gmf.ecore.edit.parts.EPackage3EditPart;
import org.eclipse.gmf.ecore.edit.parts.EPackageNameEditPart;
import org.eclipse.gmf.ecore.edit.parts.EReferenceLowerBoundUpperBound2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EReferenceLowerBoundUpperBoundEditPart;
import org.eclipse.gmf.ecore.edit.parts.EReferenceName2EditPart;
import org.eclipse.gmf.ecore.edit.parts.EReferenceNameEditPart;
import org.eclipse.gmf.ecore.edit.parts.EStringToStringMapEntryEditPart;
import org.eclipse.gmf.ecore.parsers.EAttributeExpressionLabelParser;
import org.eclipse.gmf.ecore.parsers.MessageFormatParser;
import org.eclipse.gmf.ecore.part.EcoreVisualIDRegistry;
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
import org.eclipse.gmf.runtime.common.core.service.IOperation;
import org.eclipse.gmf.runtime.common.ui.services.parser.GetParserOperation;
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserProvider;
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
import org.eclipse.gmf.runtime.notation.View;
/**
* @generated
*/
public class EcoreParserProvider extends AbstractProvider implements IParserProvider {
/**
* @generated
*/
private IParser eClassName_5001Parser;
/**
* @generated
*/
private IParser getEClassName_5001Parser() {
if (eClassName_5001Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eClassName_5001Parser = parser;
}
return eClassName_5001Parser;
}
/**
* @generated
*/
private IParser ePackageName_5002Parser;
/**
* @generated
*/
private IParser getEPackageName_5002Parser() {
if (ePackageName_5002Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
ePackageName_5002Parser = parser;
}
return ePackageName_5002Parser;
}
/**
* @generated
*/
private IParser eAnnotationSource_5003Parser;
/**
* @generated
*/
private IParser getEAnnotationSource_5003Parser() {
if (eAnnotationSource_5003Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getEAnnotation_Source() };
MessageFormatParser parser = new MessageFormatParser(features);
eAnnotationSource_5003Parser = parser;
}
return eAnnotationSource_5003Parser;
}
/**
* @generated
*/
private IParser eDataTypeName_5004Parser;
/**
* @generated
*/
private IParser getEDataTypeName_5004Parser() {
if (eDataTypeName_5004Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eDataTypeName_5004Parser = parser;
}
return eDataTypeName_5004Parser;
}
/**
* @generated
*/
private IParser eEnumName_5005Parser;
/**
* @generated
*/
private IParser getEEnumName_5005Parser() {
if (eEnumName_5005Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eEnumName_5005Parser = parser;
}
return eEnumName_5005Parser;
}
/**
* @generated
*/
private EAttributeExpressionLabelParser eAttribute_3001Parser;
/**
* @generated
*/
private IParser getEAttribute_3001Parser() {
if (eAttribute_3001Parser == null) {
eAttribute_3001Parser = new EAttributeExpressionLabelParser();
}
return eAttribute_3001Parser;
}
/**
* @generated
*/
private IParser eOperation_3002Parser;
/**
* @generated
*/
private IParser getEOperation_3002Parser() {
if (eOperation_3002Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eOperation_3002Parser = parser;
}
return eOperation_3002Parser;
}
/**
* @generated
*/
private IParser eAnnotation_3003Parser;
/**
* @generated
*/
private IParser getEAnnotation_3003Parser() {
if (eAnnotation_3003Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getEAnnotation_Source() };
MessageFormatParser parser = new MessageFormatParser(features);
eAnnotation_3003Parser = parser;
}
return eAnnotation_3003Parser;
}
/**
* @generated
*/
private IParser eClass_3004Parser;
/**
* @generated
*/
private IParser getEClass_3004Parser() {
if (eClass_3004Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eClass_3004Parser = parser;
}
return eClass_3004Parser;
}
/**
* @generated
*/
private IParser ePackage_3005Parser;
/**
* @generated
*/
private IParser getEPackage_3005Parser() {
if (ePackage_3005Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
ePackage_3005Parser = parser;
}
return ePackage_3005Parser;
}
/**
* @generated
*/
private IParser eDataType_3006Parser;
/**
* @generated
*/
private IParser getEDataType_3006Parser() {
if (eDataType_3006Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eDataType_3006Parser = parser;
}
return eDataType_3006Parser;
}
/**
* @generated
*/
private IParser eEnum_3007Parser;
/**
* @generated
*/
private IParser getEEnum_3007Parser() {
if (eEnum_3007Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eEnum_3007Parser = parser;
}
return eEnum_3007Parser;
}
/**
* @generated
*/
private IParser eStringToStringMapEntry_3008Parser;
/**
* @generated
*/
private IParser getEStringToStringMapEntry_3008Parser() {
if (eStringToStringMapEntry_3008Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getEStringToStringMapEntry_Key(), EcorePackage.eINSTANCE.getEStringToStringMapEntry_Value() };
MessageFormatParser parser = new MessageFormatParser(features);
parser.setViewPattern("{0} : {1}"); //$NON-NLS-1$
parser.setEditorPattern("{0} : {1}"); //$NON-NLS-1$
parser.setEditPattern("{0} : {1}"); //$NON-NLS-1$
eStringToStringMapEntry_3008Parser = parser;
}
return eStringToStringMapEntry_3008Parser;
}
/**
* @generated
*/
private IParser eEnumLiteral_3009Parser;
/**
* @generated
*/
private IParser getEEnumLiteral_3009Parser() {
if (eEnumLiteral_3009Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eEnumLiteral_3009Parser = parser;
}
return eEnumLiteral_3009Parser;
}
/**
* @generated
*/
private IParser eReferenceName_6001Parser;
/**
* @generated
*/
private IParser getEReferenceName_6001Parser() {
if (eReferenceName_6001Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eReferenceName_6001Parser = parser;
}
return eReferenceName_6001Parser;
}
/**
* @generated
*/
private IParser eReferenceLowerBoundUpperBound_6003Parser;
/**
* @generated
*/
private IParser getEReferenceLowerBoundUpperBound_6003Parser() {
if (eReferenceLowerBoundUpperBound_6003Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getETypedElement_LowerBound(), EcorePackage.eINSTANCE.getETypedElement_UpperBound() };
MessageFormatParser parser = new MessageFormatParser(features);
parser.setViewPattern("{0}..{1,choice,-1#*|-1<{1}}"); //$NON-NLS-1$
parser.setEditorPattern("{0}..{1,choice,-1#*|-1<{1}}"); //$NON-NLS-1$
parser.setEditPattern("{0}..{1}"); //$NON-NLS-1$
eReferenceLowerBoundUpperBound_6003Parser = parser;
}
return eReferenceLowerBoundUpperBound_6003Parser;
}
/**
* @generated
*/
private IParser eReferenceName_6002Parser;
/**
* @generated
*/
private IParser getEReferenceName_6002Parser() {
if (eReferenceName_6002Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getENamedElement_Name() };
MessageFormatParser parser = new MessageFormatParser(features);
eReferenceName_6002Parser = parser;
}
return eReferenceName_6002Parser;
}
/**
* @generated
*/
private IParser eReferenceLowerBoundUpperBound_6004Parser;
/**
* @generated
*/
private IParser getEReferenceLowerBoundUpperBound_6004Parser() {
if (eReferenceLowerBoundUpperBound_6004Parser == null) {
EAttribute[] features = new EAttribute[] { EcorePackage.eINSTANCE.getETypedElement_LowerBound(), EcorePackage.eINSTANCE.getETypedElement_UpperBound() };
MessageFormatParser parser = new MessageFormatParser(features);
parser.setViewPattern("{0}..{1,choice,-1#*|-1<{1}}"); //$NON-NLS-1$
parser.setEditorPattern("{0}..{1,choice,-1#*|-1<{1}}"); //$NON-NLS-1$
parser.setEditPattern("{0}..{1}"); //$NON-NLS-1$
eReferenceLowerBoundUpperBound_6004Parser = parser;
}
return eReferenceLowerBoundUpperBound_6004Parser;
}
/**
* @generated
*/
protected IParser getParser(int visualID) {
switch (visualID) {
case EClassNameEditPart.VISUAL_ID:
return getEClassName_5001Parser();
case EPackageNameEditPart.VISUAL_ID:
return getEPackageName_5002Parser();
case EAnnotationSourceEditPart.VISUAL_ID:
return getEAnnotationSource_5003Parser();
case EDataTypeNameEditPart.VISUAL_ID:
return getEDataTypeName_5004Parser();
case EEnumNameEditPart.VISUAL_ID:
return getEEnumName_5005Parser();
case EAttributeEditPart.VISUAL_ID:
return getEAttribute_3001Parser();
case EOperationEditPart.VISUAL_ID:
return getEOperation_3002Parser();
case EAnnotation2EditPart.VISUAL_ID:
return getEAnnotation_3003Parser();
case EClass2EditPart.VISUAL_ID:
return getEClass_3004Parser();
case EPackage3EditPart.VISUAL_ID:
return getEPackage_3005Parser();
case EDataType2EditPart.VISUAL_ID:
return getEDataType_3006Parser();
case EEnum2EditPart.VISUAL_ID:
return getEEnum_3007Parser();
case EStringToStringMapEntryEditPart.VISUAL_ID:
return getEStringToStringMapEntry_3008Parser();
case EEnumLiteralEditPart.VISUAL_ID:
return getEEnumLiteral_3009Parser();
case EReferenceNameEditPart.VISUAL_ID:
return getEReferenceName_6001Parser();
case EReferenceLowerBoundUpperBoundEditPart.VISUAL_ID:
return getEReferenceLowerBoundUpperBound_6003Parser();
case EReferenceName2EditPart.VISUAL_ID:
return getEReferenceName_6002Parser();
case EReferenceLowerBoundUpperBound2EditPart.VISUAL_ID:
return getEReferenceLowerBoundUpperBound_6004Parser();
}
return null;
}
/**
* Utility method that consults ParserService
* @generated
*/
public static IParser getParser(IElementType type, EObject object, String parserHint) {
return ParserService.getInstance().getParser(new HintAdapter(type, object, parserHint));
}
/**
* @generated
*/
public IParser getParser(IAdaptable hint) {
String vid = (String) hint.getAdapter(String.class);
if (vid != null) {
return getParser(EcoreVisualIDRegistry.getVisualID(vid));
}
View view = (View) hint.getAdapter(View.class);
if (view != null) {
return getParser(EcoreVisualIDRegistry.getVisualID(view));
}
return null;
}
/**
* @generated
*/
public boolean provides(IOperation operation) {
if (operation instanceof GetParserOperation) {
IAdaptable hint = ((GetParserOperation) operation).getHint();
if (EcoreElementTypes.getElement(hint) == null) {
return false;
}
return getParser(hint) != null;
}
return false;
}
/**
* @generated
*/
private static class HintAdapter extends ParserHintAdapter {
/**
* @generated
*/
private final IElementType elementType;
/**
* @generated
*/
public HintAdapter(IElementType type, EObject object, String parserHint) {
super(object, parserHint);
assert type != null;
elementType = type;
}
/**
* @generated
*/
public Object getAdapter(Class adapter) {
if (IElementType.class.equals(adapter)) {
return elementType;
}
return super.getAdapter(adapter);
}
}
}