package com.bitbakery.plugin.arc.psi;
/*
* Copyright (c) Kurt Christensen, 2009
*
* Licensed under the Artistic 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.opensource.org/licenses/artistic-license-2.0.php
*
* 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..
*/
import com.bitbakery.plugin.arc.ArcIcons;
import static com.bitbakery.plugin.arc.psi.ArcElementTypes.*;
import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.tree.TokenSet;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* TODO - Describe roles and responsibilities
*/
public class VariableAssignment extends Expression implements PsiNamedElement {
protected String name;
public VariableAssignment(ASTNode node) {
super(node);
ASTNode[] children = node.getChildren(TokenSet.create(VARIABLE_DEFINITION));
name = isEmpty(children) ? "=" : children[0].getText();
}
public String getName() {
return name;
}
public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException {
// TODO - Need to actually set the text in the symbol child element that defines the name
this.name = name;
return this;
}
public Icon getIcon(int flags) {
return ArcIcons.ARC_EQ_ICON;
}
// TODO - Figure out where this should really live... ArcElement, maybe??
public ItemPresentation getPresentation() {
return new ItemPresentation() {
public String getPresentableText() {
return getName();
}
@Nullable
public String getLocationString() {
return getNode().getPsi().getContainingFile().getName();
}
@Nullable
public Icon getIcon(boolean open) {
return VariableAssignment.this.getIcon(0);
}
@Nullable
public TextAttributesKey getTextAttributesKey() {
return null; // TODO - Investigate different fonts/colors/etc.for def vs. mac...?
}
};
}
}