/** * Copyright (c) 2011, 2012 Cloudsmith Inc. and other contributors, as listed below. * 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: * Cloudsmith * */ package org.cloudsmith.geppetto.pp.dsl.ui.outline; import org.cloudsmith.geppetto.pp.PPPackage; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.xtext.resource.DefaultLocationInFileProvider; /** * Used to define the significant "short" locations for outline relevant elements. * (The defaults do not understand which nodes are "names"). * * Also used to determine if a hover should appear or not; a significant region must be returned * for a hover to be considered. * */ public class PPLocationInFileProvider extends DefaultLocationInFileProvider { @Override protected EStructuralFeature getIdentifierFeature(EObject obj) { // note, must check against EClass as the class id is not universally unique. EClass ec = obj.eClass(); if(ec.equals(PPPackage.Literals.DEFINITION)) return PPPackage.Literals.DEFINITION__CLASS_NAME; if(ec.equals(PPPackage.Literals.DOUBLE_QUOTED_STRING)) return PPPackage.Literals.DOUBLE_QUOTED_STRING__STRING_PART; if(ec.equals(PPPackage.Literals.HOST_CLASS_DEFINITION)) return PPPackage.Literals.DEFINITION__CLASS_NAME; if(ec.equals(PPPackage.Literals.IMPORT_EXPRESSION)) return PPPackage.Literals.IMPORT_EXPRESSION__VALUES; if(ec.equals(PPPackage.Literals.RESOURCE_EXPRESSION)) return PPPackage.Literals.RESOURCE_EXPRESSION__RESOURCE_EXPR; if(ec.equals(PPPackage.Literals.RESOURCE_BODY)) return PPPackage.Literals.RESOURCE_BODY__NAME_EXPR; if(ec.equals(PPPackage.Literals.DEFINITION_ARGUMENT)) return PPPackage.Literals.DEFINITION_ARGUMENT__ARG_NAME; if(ec.equals(PPPackage.Literals.ATTRIBUTE_OPERATION)) return PPPackage.Literals.ATTRIBUTE_OPERATION__KEY; return super.getIdentifierFeature(obj); } }