Package org.jetbrains.plugins.clojure.psi.impl

Source Code of org.jetbrains.plugins.clojure.psi.impl.ClKeywordImpl

package org.jetbrains.plugins.clojure.psi.impl;

import com.intellij.lang.ASTNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.stubs.StubIndex;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.clojure.psi.ClStubElementType;
import org.jetbrains.plugins.clojure.psi.ClojureBaseElementImpl;
import org.jetbrains.plugins.clojure.psi.api.ClKeyword;
import org.jetbrains.plugins.clojure.psi.stubs.api.ClKeywordStub;
import org.jetbrains.plugins.clojure.psi.stubs.api.ClNsStub;
import org.jetbrains.plugins.clojure.psi.stubs.index.ClojureKeywordIndex;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

/**
* @author ilyas
*/
public class ClKeywordImpl extends ClojureBaseElementImpl<ClKeywordStub> implements ClKeyword, StubBasedPsiElement<ClKeywordStub> {
  public ClKeywordImpl(ASTNode node) {
    super(node);
  }

  public ClKeywordImpl(ClKeywordStub stub, @NotNull ClStubElementType nodeType) {
    super(stub, nodeType);
  }

  @Override
  public String toString() {
    return "ClKeyword";
  }

  @Override
  @NotNull
  public String getName() {
    ClKeywordStub stub = getStub();
    if (stub != null) {
      return stub.getName();
    }

    return getText();
  }

  public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException {
    throw new IncorrectOperationException("Name changing for the keyword");
  }

  @Override
  public PsiReference getReference() {
    return this;
  }

  public PsiElement getElement() {
    return this;
  }

  public TextRange getRangeInElement() {
    return new TextRange(0, getTextLength());
  }

  public PsiElement resolve() {
    return null;
  }

  @NotNull
  public String getCanonicalText() {
    return getText();
  }

  public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
    return null;
  }

  public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException {
    return null;
  }

  public boolean isReferenceTo(PsiElement element) {
    return false;
  }

  public boolean isSoft() {
    return false;
  }

  @NotNull
  public Object[] getVariants() {
    final Project project = getProject();
    final Collection<String> keys = StubIndex.getInstance().getAllKeys(ClojureKeywordIndex.KEY, project);
    return keys.toArray(new String[keys.size()]);
  }
}
TOP

Related Classes of org.jetbrains.plugins.clojure.psi.impl.ClKeywordImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.