/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.lang.psi.impl.statements; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiReference; import gw.lang.parser.statements.INamespaceStatement; import gw.plugin.ij.lang.parser.GosuCompositeElement; import gw.plugin.ij.lang.psi.api.IGosuPackageDefinition; import gw.plugin.ij.lang.psi.api.types.IGosuCodeReferenceElement; import gw.plugin.ij.lang.psi.impl.GosuElementVisitor; import gw.plugin.ij.lang.psi.impl.GosuPsiElementImpl; import gw.plugin.ij.lang.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class GosuPackageDefinitionImpl extends GosuPsiElementImpl<INamespaceStatement> implements IGosuPackageDefinition { public GosuPackageDefinitionImpl(@NotNull GosuCompositeElement node) { super(node); } public void accept(@NotNull GosuElementVisitor visitor) { visitor.visitPackageDefinition(this); } @Nullable public String getPackageName() { IGosuCodeReferenceElement ref = getPackageReference(); if (ref == null) { return ""; } return PsiUtil.getQualifiedReferenceText(ref); } @Nullable public IGosuCodeReferenceElement getPackageReference() { return (IGosuCodeReferenceElement) findChildByClass( PsiReference.class ); } @Override public void accept(@NotNull PsiElementVisitor visitor) { if( visitor instanceof GosuElementVisitor) { ((GosuElementVisitor)visitor).visitPackageDefinition(this); } else { visitor.visitElement( this ); } } }