package com.intellij.lang.javascript.flex.presentation;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.ide.projectView.ProjectViewNode;
import com.intellij.ide.projectView.ViewSettings;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.lang.javascript.psi.ecmal4.JSQualifiedNamedElement;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Iconable;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
public class SwfQualifiedNamedElementNode extends ProjectViewNode<JSQualifiedNamedElement> {
public SwfQualifiedNamedElementNode(Project project, JSQualifiedNamedElement element, ViewSettings settings) {
super(project, element, settings);
}
@Override
public boolean contains(@NotNull VirtualFile file) {
return SwfProjectViewStructureProvider.nodeContainsFile(this, file);
}
@Override
public boolean canRepresent(Object element) {
JSQualifiedNamedElement value = getValue();
return value != null && value.isValid() && element != null && value.getClass() == element.getClass() &&
Comparing.equal(value.getQualifiedName(), ((JSQualifiedNamedElement)element).getQualifiedName());
}
@NotNull
@Override
public Collection<? extends AbstractTreeNode> getChildren() {
return new ArrayList<>();
}
@Override
protected void update(PresentationData presentation) {
final JSQualifiedNamedElement value = getValue();
if (value != null && value.isValid()) {
presentation.setPresentableText(value.getName());
presentation.setIcon(value.getIcon(Iconable.ICON_FLAG_VISIBILITY));
}
}
@Override
public boolean canNavigate() {
return true;
}
@Override
public boolean canNavigateToSource() {
return true;
}
@Override
public void navigate(boolean requestFocus) {
final JSQualifiedNamedElement value = getValue();
if (value != null && value.isValid()) {
value.navigate(true);
}
}
@Override
public int getTypeSortWeight(boolean sortByType) {
if (sortByType) {
int weight = FlexTreeStructureProvider.getElementWeight(getValue());
if (weight != -1) {
return weight;
}
}
return super.getTypeSortWeight(sortByType);
}
}