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...? } }; } }