e817e1cf786fd32d062664e0db077d9d59b079e1
[idea/javafx-plugin.git] / src / org / jetbrains / javafx / lang / psi / impl / JavaFxPresentableElementImpl.java
1 /*
2  * Copyright 2000-2010 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.javafx.lang.psi.impl;
17
18 import com.intellij.lang.ASTNode;
19 import com.intellij.navigation.ItemPresentation;
20 import com.intellij.openapi.editor.colors.TextAttributesKey;
21 import com.intellij.psi.PsiNamedElement;
22 import com.intellij.psi.stubs.IStubElementType;
23 import com.intellij.psi.stubs.StubElement;
24 import org.jetbrains.annotations.NotNull;
25 import org.jetbrains.javafx.lang.psi.JavaFxPsiUtil;
26
27 import javax.swing.*;
28
29 /**
30  * Created by IntelliJ IDEA.
31  *
32  * @author: Alexey.Ivanov
33  */
34 public abstract class JavaFxPresentableElementImpl<T extends StubElement> extends JavaFxBaseElementImpl<T> implements PsiNamedElement {
35   public JavaFxPresentableElementImpl(@NotNull T stub, @NotNull IStubElementType nodeType) {
36     super(stub, nodeType);
37   }
38
39   public JavaFxPresentableElementImpl(@NotNull ASTNode node) {
40     super(node);
41   }
42
43   @Override
44   public ItemPresentation getPresentation() {
45     return new ItemPresentation() {
46       public String getPresentableText() {
47         final String name = getName();
48         return (name != null) ? name : "<none>";
49       }
50
51       public String getLocationString() {
52         return "(" + JavaFxPresentableElementImpl.this.getLocationString() + ")";
53       }
54
55       public Icon getIcon(boolean open) {
56         return JavaFxPresentableElementImpl.this.getIcon(open ? ICON_FLAG_OPEN : ICON_FLAG_CLOSED);
57       }
58
59       public TextAttributesKey getTextAttributesKey() {
60         return null;
61       }
62     };
63   }
64
65   @Override
66   public int getTextOffset() {
67     final ASTNode nameNode = getNameNode();
68     if (nameNode != null) {
69       return nameNode.getStartOffset();
70     }
71     return super.getTextOffset();
72   }
73
74   protected String getLocationString() {
75     final String fileName = getContainingFile().getName();
76     final int pos = fileName.lastIndexOf('.');
77     return JavaFxPsiUtil.getPackageNameForElement(this) + "." + fileName.substring(0, pos);
78   }
79 }