package ee.edio.garmin.psi.impl;
import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
import ee.edio.garmin.psi.MonkeyId;
import ee.edio.garmin.psi.MonkeyNamedElement;
import ee.edio.garmin.util.MonkeyElementGenerator;
import org.jetbrains.annotations.NotNull;
public abstract class MonkeyNamedElementImpl extends ASTWrapperPsiElement implements MonkeyNamedElement {
public MonkeyNamedElementImpl(@NotNull ASTNode node) {
super(node);
}
@Override
public String getName() {
return getId().getText();
}
@Override
public PsiElement setName(@NotNull String newElementName) throws IncorrectOperationException {
final MonkeyId identifier = getId();
final MonkeyId identifierNew = MonkeyElementGenerator.createIdentifierFromText(getProject(), newElementName);
if (identifierNew != null) {
getNode().replaceChild(identifier.getNode(), identifierNew.getNode());
}
return this;
}
@Override
public PsiElement getNameIdentifier() {
return this;
}
@NotNull
@Override
public MonkeyId getId() {
/*if (PsiTreeUtil.instanceOf(this, MonkeyId.class)) {
return (MonkeyId) this;
}*/
return PsiTreeUtil.getChildOfType(this, MonkeyId.class);
}
}