package cn.edu.scau.biubiusuisui.entity; import cn.edu.scau.biubiusuisui.proxy.FXEntityProxy; import javafx.beans.property.Property; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * * Context is use for storing Controller * In addition,you can store an instance into Session to use it everywhere * * @Author jack * @Date:2019/6/26 12:28 */ public class FXPlusContext { private FXPlusContext(){} private static Map> controllerContext = new ConcurrentHashMap<>(); //FXController控制器注册表 private static Map beanProxyMap = new ConcurrentHashMap<>(); // Object注册为FXEntityObject public static Property getEntityPropertyByName(Object object, String fieldName){ FXEntityProxy fxEntityProxy = FXPlusContext.getProxyByBeanObject(object); if(fxEntityProxy == null){ return null; } return fxEntityProxy.getStringPropertyMap().get(fieldName); } private static Map session = new ConcurrentHashMap<>(); public static void addController(FXBaseController fxBaseController){ List controllers = controllerContext.get(fxBaseController.getName()); if(controllers == null){ controllers = new LinkedList<>(); } controllers.add(fxBaseController); } public static List getControllers(String key){ return controllerContext.get(key); } public static FXEntityProxy getProxyByBeanObject(Object object){ return beanProxyMap.get(object); } public static void setProxyByBeanObject(Object object,FXEntityProxy fxEntityProxy){ beanProxyMap.put(object,fxEntityProxy); } public static Map getBeanProxyMap() { return beanProxyMap; } public static void setBeanProxyMap(Map beanProxyMap) { FXPlusContext.beanProxyMap = beanProxyMap; } public static Map> getControllerContext() { return controllerContext; } public static void setControllerContext(Map> controllerContext) { FXPlusContext.controllerContext = controllerContext; } public static Map getSession() { return session; } public static void setSession(Map session) { FXPlusContext.session = session; } }