package org.jetbrains.plugins.ruby.motion.symbols;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.module.Module;
import com.jetbrains.cidr.CocoaDocumentationManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.ruby.motion.bridgesupport.Constant;
import org.jetbrains.plugins.ruby.ruby.codeInsight.symbols.Type;
import org.jetbrains.plugins.ruby.ruby.codeInsight.symbols.structure.RTypedSyntheticSymbol;
import org.jetbrains.plugins.ruby.ruby.codeInsight.types.RType;
import javax.swing.*;
/**
* @author Dennis.Ushakov
*/
public class ConstantSymbol extends RTypedSyntheticSymbol implements MotionSymbol {
@NotNull private final Module myModule;
@NotNull private final Constant myConstant;
public ConstantSymbol(@NotNull Module module,
@NotNull Constant constant,
@Nullable String name,
@NotNull RType returnType) {
super(module.getProject(), name, Type.CONSTANT, null, returnType, 0);
myModule = module;
myConstant = constant;
}
@NotNull
@Override
public Module getModule() {
return myModule;
}
@Nullable
@Override
public Icon getExplicitIcon() {
return myConstant instanceof org.jetbrains.plugins.ruby.motion.bridgesupport.Enum ? AllIcons.Nodes.Enum : null;
}
@Override
public CocoaDocumentationManager.DocTokenType getInfoType() {
return myConstant instanceof org.jetbrains.plugins.ruby.motion.bridgesupport.Enum ?
CocoaDocumentationManager.DocTokenType.ENUM_CONSTANT :
CocoaDocumentationManager.DocTokenType.CLASS_CONSTANT;
}
@Override
public String getInfoName() {
final String name = getName();
assert name != null;
return name;
}
@NotNull
public Constant getConstant() {
return myConstant;
}
}