Skip to content

Commit d076f02

Browse files
committed
[FIX] removed dependency to com.intellij.psi.PsiElementFactory
Fixes #4
1 parent d28429c commit d076f02

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvStructureViewElement.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
import com.intellij.ide.structureView.StructureViewTreeElement;
44
import com.intellij.ide.util.treeView.smartTree.SortableTreeElement;
55
import com.intellij.ide.util.treeView.smartTree.TreeElement;
6+
import com.intellij.lang.*;
7+
import com.intellij.lexer.Lexer;
68
import com.intellij.navigation.ItemPresentation;
79
import com.intellij.navigation.NavigationItem;
10+
import com.intellij.openapi.project.Project;
811
import com.intellij.psi.PsiElement;
9-
import com.intellij.psi.PsiElementFactory;
1012
import com.intellij.psi.PsiFile;
13+
import com.intellij.psi.PsiManager;
1114
import com.intellij.psi.PsiNamedElement;
15+
import com.intellij.psi.impl.source.DummyHolder;
16+
import com.intellij.psi.impl.source.DummyHolderFactory;
17+
import com.intellij.psi.impl.source.tree.FileElement;
18+
import com.intellij.psi.tree.IElementType;
1219
import com.intellij.psi.util.PsiTreeUtil;
1320
import net.seesharpsoft.intellij.plugins.csv.psi.CsvField;
1421
import net.seesharpsoft.intellij.plugins.csv.psi.CsvFile;
@@ -85,8 +92,21 @@ public Icon getIcon(boolean unused) {
8592
return element.getIcon(ICON_FLAG_VISIBILITY);
8693
}
8794

95+
// replaces PsiElementFactory.SERVICE.getInstance(element.getProject()).createDummyHolder("<undefined>", CsvTypes.FIELD, null);
96+
// https://github.com/SeeSharpSoft/intellij-csv-validator/issues/4
8897
protected PsiElement createEmptyPsiField() {
89-
return PsiElementFactory.SERVICE.getInstance(element.getProject()).createDummyHolder("<undefined>", CsvTypes.FIELD, null);
98+
final String text = "<undefined>";
99+
final IElementType type = CsvTypes.FIELD;
100+
final Project project = this.element.getProject();
101+
final PsiManager psiManager = PsiManager.getInstance(project);
102+
final DummyHolder dummyHolder = DummyHolderFactory.createHolder(psiManager, null);
103+
final FileElement fileElement = dummyHolder.getTreeElement();
104+
final ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(CsvLanguage.INSTANCE);
105+
final Lexer lexer = parserDefinition.createLexer(project);
106+
final PsiBuilder psiBuilder = PsiBuilderFactory.getInstance().createBuilder(project, fileElement, lexer, CsvLanguage.INSTANCE, text);
107+
final ASTNode node = parserDefinition.createParser(project).parse(type, psiBuilder);
108+
fileElement.rawAddChildren((com.intellij.psi.impl.source.tree.TreeElement)node);
109+
return node.getPsi();
90110
}
91111

92112
public static class File extends CsvStructureViewElement {

0 commit comments

Comments
 (0)