2 * Copyright 2000-2009 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package com
.intellij
.psi
.impl
.light
;
18 import com
.intellij
.psi
.*;
19 import com
.intellij
.psi
.impl
.PsiImplUtil
;
20 import com
.intellij
.openapi
.fileTypes
.StdFileTypes
;
21 import org
.jetbrains
.annotations
.NotNull
;
26 public class LightReferenceParameterList
extends LightElement
implements PsiReferenceParameterList
{
27 private final PsiTypeElement
[] myTypeElements
;
28 private final String myText
;
30 public LightReferenceParameterList(PsiManager manager
, PsiTypeElement
[] referenceElements
) {
31 super(manager
, StdFileTypes
.JAVA
.getLanguage());
32 myTypeElements
= referenceElements
;
33 myText
= calculateText();
36 private String
calculateText() {
37 if (myTypeElements
.length
== 0) return "";
38 final StringBuilder buffer
= new StringBuilder();
40 for (int i
= 0; i
< myTypeElements
.length
; i
++) {
41 PsiTypeElement type
= myTypeElements
[i
];
45 buffer
.append(type
.getText());
48 return buffer
.toString();
51 public String
toString() {
52 return "PsiReferenceParameterList";
55 public String
getText() {
59 public void accept(@NotNull PsiElementVisitor visitor
) {
60 if (visitor
instanceof JavaElementVisitor
) {
61 ((JavaElementVisitor
)visitor
).visitReferenceParameterList(this);
64 visitor
.visitElement(this);
68 public PsiElement
copy() {
69 final PsiTypeElement
[] elements
= new PsiTypeElement
[myTypeElements
.length
];
70 for (int i
= 0; i
< myTypeElements
.length
; i
++) {
71 PsiTypeElement typeElement
= myTypeElements
[i
];
72 elements
[i
] = (PsiTypeElement
) typeElement
.copy();
74 return new LightReferenceParameterList(myManager
, elements
);
78 public PsiTypeElement
[] getTypeParameterElements() {
79 return myTypeElements
;
83 public PsiType
[] getTypeArguments() {
84 return PsiImplUtil
.typesByTypeElements(myTypeElements
);