package bluej.views;

import threadchecker.OnThread;
import threadchecker.Tag;

import java.lang.reflect.Modifier;
import java.util.function.Predicate;


| A View Filter specifying whether, for a given method, | it should be included in an operation. The two configurable | parts are static methods or instance methods, and public-only | vs package-private&protected&public. | @OnThread(Tag.FXPlatform) public final class ViewFilter implements Predicate<MemberView>{ public static enum StaticOrInstance { STATIC, INSTANCE; } private final StaticOrInstance staticOrInstance; private final String callingPackage;
| Create a View filter. | @param staticOrInstance Do you want only-static, or only-instance? | @param callingPackage Show only items callable from another class in the given package. | If null, only show public items. | public ViewFilter(StaticOrInstance staticOrInstance, String callingPackage) { this.staticOrInstance = staticOrInstance; this.callingPackage = callingPackage; } @Override @OnThread(value = Tag.FXPlatform, ignoreParent = true) public boolean test(MemberView member) { boolean wantStatic = staticOrInstance == StaticOrInstance.STATIC; boolean isStatic = member.isStatic(); if (wantStatic != isStatic) return false; if ((member.getModifiers() & Modifier.PUBLIC) != 0) return true; boolean samePackage = member.getDeclaringView().getPackageName().equals(callingPackage); if (!samePackage) return false; return (member.getModifiers() & Modifier.PRIVATE) == 0; } }

.   ViewFilter
.   test




58 neLoCode + 8 LoComm