/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2014-2014 AS3Boyan
* Copyright 2014-2014 Elias Ku
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.plugins.haxe.lang.psi.impl;
import com.intellij.lang.ASTNode;
import com.intellij.plugins.haxe.lang.lexer.HaxeTokenTypes;
import com.intellij.plugins.haxe.lang.psi.HaxeModifierListPsiMixin;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.impl.source.PsiModifierListImpl;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
/**
* @author: Srikanth.Ganapavarapu
*/
public class HaxeModifierListPsiMixinImpl extends PsiModifierListImpl implements HaxeModifierListPsiMixin {
private HashMap<String, String> mModifierStatusMap;
public HaxeModifierListPsiMixinImpl(@NotNull ASTNode node) {
super(node);
mModifierStatusMap = new HashMap<String, String>();
}
@Override
public boolean hasModifierProperty(@PsiModifier.ModifierConstant @NotNull @NonNls String name) {
return mModifierStatusMap.containsKey(name);
}
@Override
public boolean hasExplicitModifier(@PsiModifier.ModifierConstant @NotNull @NonNls String name) {
return mModifierStatusMap.containsKey(name);
}
@Override
public void setModifierProperty(@PsiModifier.ModifierConstant @NotNull @NonNls String name, boolean value)
throws IncorrectOperationException {
mModifierStatusMap.put(name, new Boolean(value).toString());
}
@Override
public void checkSetModifierProperty(@PsiModifier.ModifierConstant @NotNull @NonNls String name, boolean value)
throws IncorrectOperationException {
// XXX: implement when needed
}
@NotNull
@Override
public PsiAnnotation[] getAnnotations() {
// XXX: implement when needed
return new PsiAnnotation[0];
}
@NotNull
@Override
public PsiAnnotation[] getApplicableAnnotations() {
// XXX: implement when needed
return new PsiAnnotation[0];
}
@Nullable
@Override
public PsiAnnotation findAnnotation(@NotNull @NonNls String qualifiedName) {
if (hasModifierProperty(qualifiedName)) {
String value = mModifierStatusMap.get(qualifiedName);
// XXX: implement when needed
// translate String to PsiAnnotation
// return the newly constructed PsiAnnotation object
}
return null;
}
@Nullable
@Override
public PsiAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) {
mModifierStatusMap.put(qualifiedName, Boolean.TRUE.toString());
// XXX: implement when needed
// translate String to PsiAnnotation
// return the newly constructed PsiAnnotation object
return null;
}
@Override
public IElementType getTokenType() {
return HaxeTokenTypes.MACRO_CLASS_LIST;
}
}