package com.lightd.ideap.maven.navigation;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.impl.RenameableFakePsiElement;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.model.MavenCoordinate;
import javax.swing.*;
public class PomWrapper extends RenameableFakePsiElement {
private final MavenCoordinate coordinate;
private final String rootPath;
private final boolean showLocation;
private final PsiFileSystemItem pomFile;
PomWrapper(PsiFileSystemItem pomFile, MavenCoordinate coordinate, String rootPath, boolean showLocation) {
super(pomFile.getParent());
this.pomFile = pomFile;
this.coordinate = coordinate;
this.rootPath = rootPath;
this.showLocation = showLocation;
}
@Override
public String getTypeName() {
return pomFile.getVirtualFile().getFileType().getName();
}
@Override
public String getName() {
String artifact = coordinate.getArtifactId();
if (artifact.startsWith(coordinate.getGroupId()))
artifact = "." + artifact.substring(coordinate.getGroupId().length());
return coordinate.getGroupId() + ":" + artifact;
}
@Override
public Icon getIcon() {
return pomFile.getIcon(ICON_FLAG_VISIBILITY);
}
@Nullable
@Override
public String getLocationString() {
String localPath = null;
if (showLocation && pomFile.getPresentation() != null) {
localPath = pomFile.getPresentation().getLocationString();
if (localPath != null && localPath.length() > rootPath.length()) {
localPath = "." + localPath.substring(rootPath.length());
}
}
return localPath;
}
@Override
public boolean isValid() {
return pomFile.isValid();
}
@Override
public PsiFile getContainingFile() {
if (pomFile instanceof PsiFile) {
return (PsiFile) pomFile;
}
return pomFile.getContainingFile();
}
public VirtualFile getVirtualFile() {
return pomFile.getVirtualFile();
}
}