package org.eclipse.osbp.xtext.functionlibrarydsl.imports;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
import org.eclipse.osbp.xtext.oxtype.imports.DefaultShouldImportProvider;

public class ShouldImportProvider extends DefaultShouldImportProvider {

	protected boolean doShouldImport(EObject toImport, EReference eRef, EObject context) {
		return toImport instanceof LDataType;
	}

	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
		EClass type = reference.getEReferenceType();
		return OSBPTypesPackage.Literals.LDATA_TYPE.isSuperTypeOf(type);
	}
}
