// Path: app/src/main/java/com/example/dev_wang/databindingdemo/Module/Home/RunsHomePageModule.java
// public class RunsHomePageModule extends Module {
//     @Override
//     public void onRegister() {
// 
//     }
// 
//     @Override
//     public void onRemove() {
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/dev_wang/databindingdemo/Module/Login/RunsUserLoginModule.java
// public class RunsUserLoginModule extends Module {
// 
//     @Override
//     public void onRegister() {
// 
//         this.registerMediatorClass(RunsUserLoginMediator.class);
//         this.registerMediatorClass(RunsUserRegisterMediator.class);
//         //
//         this.registerViewModelClass(RunsUserLoginViewModel.class);
//     }
// 
//     @Override
//     public void onRemove() {
//         this.removeAllMediator();
//         this.removeAllViewModel();
//     }
// }
// 
// Path: puremvc_appfacade/src/main/java/com/example/puremvc_appfacade/Runs/core/Controller.java
// public class Controller implements IController {
//     protected String TAG = Controller.class.getName();
// 
//     public HashMap<String, IModule> moduleHashMap = new HashMap<>();
// 
//     @Override
//     public void registerAllModules() {
//         // will override by sub class
//     }
// 
//     @Override
//     public void unRegisterAllModules() {
//         // will override by sub class
//     }
// 
//     @Override
//     public void addOnceModuleClass(Class moduleClass) {
//         String name = moduleClass.getName();
//         if (moduleHashMap.containsKey(name)){
//             return;
//         }
// 
//         IModule module;
//         try {
//             module = (IModule)moduleClass.newInstance();
//             module.setModuleName(name);
//             moduleHashMap.put(name, module);
//             module.onRegister();
//         }catch (Exception ex) {
//             ex.printStackTrace();
//         }
//         Log.i(TAG, "注册 module :" + name );
//     }
// 
//     @Override
//     public void removeModule(String moduleName) {
//         moduleHashMap.remove(moduleName);
//     }
// 
//     @Override
//     public IModule getModule(String moduleName) {
//         return moduleHashMap.get(moduleName);
//     }
// 
// }


import com.example.dev_wang.databindingdemo.Module.Home.RunsHomePageModule;
import com.example.dev_wang.databindingdemo.Module.Login.RunsUserLoginModule;
import com.example.puremvc_appfacade.Runs.core.Controller;
package com.example.dev_wang.databindingdemo.Module.AppFacade;



/**
 * Created by dev_wang on 2017/1/24.
 */

public class AppModuleController extends Controller {
    @Override
    public void registerAllModules() {
        super.registerAllModules();
        this.addOnceModuleClass(RunsUserLoginModule.class);
        this.addOnceModuleClass(RunsHomePageModule.class);
    }

    @Override
    public void unRegisterAllModules() {
        super.unRegisterAllModules();
// Path: app/src/main/java/com/example/dev_wang/databindingdemo/Module/Home/RunsHomePageModule.java
// public class RunsHomePageModule extends Module {
//     @Override
//     public void onRegister() {
// 
//     }
// 
//     @Override
//     public void onRemove() {
// 
//     }
// }
// 
// Path: app/src/main/java/com/example/dev_wang/databindingdemo/Module/Login/RunsUserLoginModule.java
// public class RunsUserLoginModule extends Module {
// 
//     @Override
//     public void onRegister() {
// 
//         this.registerMediatorClass(RunsUserLoginMediator.class);
//         this.registerMediatorClass(RunsUserRegisterMediator.class);
//         //
//         this.registerViewModelClass(RunsUserLoginViewModel.class);
//     }
// 
//     @Override
//     public void onRemove() {
//         this.removeAllMediator();
//         this.removeAllViewModel();
//     }
// }
// 
// Path: puremvc_appfacade/src/main/java/com/example/puremvc_appfacade/Runs/core/Controller.java
// public class Controller implements IController {
//     protected String TAG = Controller.class.getName();
// 
//     public HashMap<String, IModule> moduleHashMap = new HashMap<>();
// 
//     @Override
//     public void registerAllModules() {
//         // will override by sub class
//     }
// 
//     @Override
//     public void unRegisterAllModules() {
//         // will override by sub class
//     }
// 
//     @Override
//     public void addOnceModuleClass(Class moduleClass) {
//         String name = moduleClass.getName();
//         if (moduleHashMap.containsKey(name)){
//             return;
//         }
// 
//         IModule module;
//         try {
//             module = (IModule)moduleClass.newInstance();
//             module.setModuleName(name);
//             moduleHashMap.put(name, module);
//             module.onRegister();
//         }catch (Exception ex) {
//             ex.printStackTrace();
//         }
//         Log.i(TAG, "注册 module :" + name );
//     }
// 
//     @Override
//     public void removeModule(String moduleName) {
//         moduleHashMap.remove(moduleName);
//     }
// 
//     @Override
//     public IModule getModule(String moduleName) {
//         return moduleHashMap.get(moduleName);
//     }
// 
// }


// Path: app/src/main/java/com/example/dev_wang/databindingdemo/Module/AppFacade/AppModuleController.java
import com.example.dev_wang.databindingdemo.Module.Home.RunsHomePageModule;
import com.example.dev_wang.databindingdemo.Module.Login.RunsUserLoginModule;
import com.example.puremvc_appfacade.Runs.core.Controller;

package com.example.dev_wang.databindingdemo.Module.AppFacade;



/**
 * Created by dev_wang on 2017/1/24.
 */

public class AppModuleController extends Controller {
    @Override
    public void registerAllModules() {
        super.registerAllModules();
        this.addOnceModuleClass(RunsUserLoginModule.class);
        this.addOnceModuleClass(RunsHomePageModule.class);
    }

    @Override
    public void unRegisterAllModules() {
        super.unRegisterAllModules();
        this.removeModule(RunsUserLoginModule.class.getName());