|
|
@@ -11,6 +11,27 @@ object ComponentMediator {
|
|
|
*/
|
|
|
private val mComponentMap: MutableMap<String, IUIComponent> = mutableMapOf()
|
|
|
|
|
|
+ private var mOnComponentUpdateListener: OnComponentUpdateListener? = null
|
|
|
+
|
|
|
+ interface OnComponentUpdateListener {
|
|
|
+ /**
|
|
|
+ * 组件注册时回调
|
|
|
+ */
|
|
|
+ fun onComponentRegister(componentName: String, component: IUIComponent)
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组件解注册时回调
|
|
|
+ */
|
|
|
+ fun onComponentUnRegister(componentName: String, component: IUIComponent)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置监听器
|
|
|
+ */
|
|
|
+ fun setOnComponentUpdateListener(listener: OnComponentUpdateListener) {
|
|
|
+ this.mOnComponentUpdateListener = listener
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 注册组件
|
|
|
*
|
|
|
@@ -21,7 +42,7 @@ object ComponentMediator {
|
|
|
componentInterfaceClazz: Class<T>,
|
|
|
component: IUIComponent
|
|
|
) {
|
|
|
- mComponentMap[componentInterfaceClazz.name] = component
|
|
|
+ registerComponent(componentInterfaceClazz.name, component)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -34,7 +55,12 @@ object ComponentMediator {
|
|
|
componentName: String,
|
|
|
component: IUIComponent
|
|
|
) {
|
|
|
+ // 如果已经注册过了,不能重复注册
|
|
|
+ if (mComponentMap.contains(componentName)) {
|
|
|
+ throw RuntimeException("组件不能重复注册,请保证组件名称唯一性")
|
|
|
+ }
|
|
|
mComponentMap[componentName] = component
|
|
|
+ mOnComponentUpdateListener?.onComponentRegister(componentName, component)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -43,7 +69,7 @@ object ComponentMediator {
|
|
|
* @param componentInterfaceClazz 组件的接口Class类
|
|
|
*/
|
|
|
fun <T : IUIComponent> unRegisterComponent(componentInterfaceClazz: Class<T>) {
|
|
|
- mComponentMap.remove(componentInterfaceClazz.name)
|
|
|
+ unRegisterComponent(componentInterfaceClazz.name)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -52,7 +78,10 @@ object ComponentMediator {
|
|
|
* @param componentName 组件名称
|
|
|
*/
|
|
|
fun unRegisterComponent(componentName: String) {
|
|
|
- mComponentMap.remove(componentName)
|
|
|
+ val component = mComponentMap.remove(componentName)
|
|
|
+ if (component != null) {
|
|
|
+ mOnComponentUpdateListener?.onComponentUnRegister(componentName, component)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|