mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 16:57:49 +08:00
78 lines
2.2 KiB
Java
78 lines
2.2 KiB
Java
package com.simpleplugin.psi.impl;
|
|
|
|
import com.intellij.lang.ASTNode;
|
|
import com.intellij.navigation.ItemPresentation;
|
|
import com.intellij.psi.*;
|
|
import com.simpleplugin.SimpleIcons;
|
|
import com.simpleplugin.psi.*;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import javax.swing.*;
|
|
|
|
public class SimplePsiImplUtil {
|
|
public static String getKey(SimpleProperty element) {
|
|
ASTNode keyNode = element.getNode().findChildByType(SimpleTypes.KEY);
|
|
if (keyNode != null) {
|
|
// IMPORTANT: Convert embedded escaped spaces to simple spaces
|
|
return keyNode.getText().replaceAll("\\\\ ", " ");
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static String getValue(SimpleProperty element) {
|
|
ASTNode valueNode = element.getNode().findChildByType(SimpleTypes.VALUE);
|
|
if (valueNode != null) {
|
|
return valueNode.getText();
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static String getName(SimpleProperty element) {
|
|
return getKey(element);
|
|
}
|
|
|
|
public static PsiElement setName(SimpleProperty element, String newName) {
|
|
ASTNode keyNode = element.getNode().findChildByType(SimpleTypes.KEY);
|
|
if (keyNode != null) {
|
|
SimpleProperty property = SimpleElementFactory.createProperty(element.getProject(), newName);
|
|
ASTNode newKeyNode = property.getFirstChild().getNode();
|
|
element.getNode().replaceChild(keyNode, newKeyNode);
|
|
}
|
|
return element;
|
|
}
|
|
|
|
public static PsiElement getNameIdentifier(SimpleProperty element) {
|
|
ASTNode keyNode = element.getNode().findChildByType(SimpleTypes.KEY);
|
|
if (keyNode != null) {
|
|
return keyNode.getPsi();
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static ItemPresentation getPresentation(final SimpleProperty element) {
|
|
return new ItemPresentation() {
|
|
@Nullable
|
|
@Override
|
|
public String getPresentableText() {
|
|
return element.getKey();
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public String getLocationString() {
|
|
PsiFile containingFile = element.getContainingFile();
|
|
return containingFile == null ? null : containingFile.getName();
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public Icon getIcon(boolean unused) {
|
|
return SimpleIcons.FILE;
|
|
}
|
|
};
|
|
}
|
|
}
|