@Override @Nullable public RefClass getOwnerClass(RefElement refElement) { RefEntity parent = refElement.getOwner(); while (!(parent instanceof RefClass) && parent instanceof RefElement) { parent = parent.getOwner(); } if (parent instanceof RefClass) return (RefClass) parent; return null; }
@Override public RefClass getTopLevelClass(RefElement refElement) { RefEntity refParent = refElement.getOwner(); while (refParent != null && refParent instanceof RefElement && !(refParent instanceof RefFile)) { refElement = (RefElementImpl) refParent; refParent = refParent.getOwner(); } return refElement instanceof RefClass ? (RefClass) refElement : null; }
@Override @Nullable public String getGroupName(final RefElement entity) { for (RefManagerExtension extension : myExtensions.values()) { final String groupName = extension.getGroupName(entity); if (groupName != null) return groupName; } final LinkedList<String> containingDirs = new LinkedList<>(); RefEntity parent = entity.getOwner(); while (parent != null && !(parent instanceof RefDirectory)) { parent = parent.getOwner(); } while (parent instanceof RefDirectory) { containingDirs.addFirst(parent.getName()); parent = parent.getOwner(); } return containingDirs.isEmpty() ? null : StringUtil.join(containingDirs, File.separator); }