use of com.perl5.lang.htmlmason.parser.psi.impl.HTMLMasonFileImpl in project Perl5-IDEA by Camelcade.
the class HTMLMasonLineMarkerProvider method collectNavigationMarkers.
@Override
protected void collectNavigationMarkers(@NotNull PsiElement element, Collection<? super RelatedItemLineMarkerInfo> result) {
if (element instanceof HTMLMasonFileImpl) {
HTMLMasonFileImpl parentComponent = ((HTMLMasonFileImpl) element).getParentComponent();
if (parentComponent != null) {
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(AllIcons.Gutter.ImplementingMethod).setTargets(parentComponent).setTooltipText("Parent component");
result.add(builder.createLineMarkerInfo(element));
}
List<HTMLMasonFileImpl> childComponents = ((HTMLMasonFileImpl) element).getChildComponents();
if (!childComponents.isEmpty()) {
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(AllIcons.Gutter.ImplementedMethod).setTargets(childComponents).setTooltipText("Child components");
result.add(builder.createLineMarkerInfo(element));
}
} else if (element instanceof HTMLMasonMethodDefinition) {
String methodName = ((HTMLMasonMethodDefinition) element).getName();
PsiFile component = element.getContainingFile();
if (StringUtil.isNotEmpty(methodName) && component instanceof HTMLMasonFileImpl) {
// method in parent components
HTMLMasonMethodDefinition methodDefinition = ((HTMLMasonFileImpl) component).findMethodDefinitionByNameInParents(methodName);
if (methodDefinition != null) {
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(AllIcons.Gutter.OverridingMethod).setTargets(methodDefinition).setTooltipText("Overriding method");
result.add(builder.createLineMarkerInfo(element));
}
// method in subcomponents
List<HTMLMasonMethodDefinition> methodDefinitions = ((HTMLMasonFileImpl) component).findMethodDefinitionByNameInChildComponents(methodName);
if (!methodDefinitions.isEmpty()) {
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(AllIcons.Gutter.OverridenMethod).setTargets(methodDefinitions).setTooltipText("Overriden methods");
result.add(builder.createLineMarkerInfo(element));
}
}
}
}
use of com.perl5.lang.htmlmason.parser.psi.impl.HTMLMasonFileImpl in project Perl5-IDEA by Camelcade.
the class HTMLMasonSuperTypeHierarchyStructure method getSubElements.
@Override
protected Collection<PsiElement> getSubElements(PsiElement element) {
assert element instanceof HTMLMasonFileImpl;
PsiElement parent = ((HTMLMasonFileImpl) element).getParentComponent();
if (parent != null) {
List<PsiElement> result = new ArrayList<>();
result.add(parent);
return result;
}
return Collections.emptyList();
}
use of com.perl5.lang.htmlmason.parser.psi.impl.HTMLMasonFileImpl in project Perl5-IDEA by Camelcade.
the class HTMLMasonTypeHierarchyTreeStructure method getLinearParents.
protected static List<PsiElement> getLinearParents(PsiElement element) {
assert element instanceof HTMLMasonFileImpl;
List<PsiElement> result = new ArrayList<>();
Set<PsiElement> recursionMap = new THashSet<>();
HTMLMasonFileImpl run = (HTMLMasonFileImpl) element;
while (run != null) {
if (recursionMap.contains(run)) {
break;
}
result.add(0, run);
recursionMap.add(run);
run = run.getParentComponent();
}
return result;
}
Aggregations