示例#1
0
        /// <summary>
        /// Resgiser appointed module
        /// </summary>
        /// <param name="module"></param>
        public static void Register(IPWModule module, params object[] args)
        {
            if (module == null)
            {
                _log.Error("Module is not null.");
                return;
            }

            if (_modules.ContainsKey(module.ModuleName))
            {
                _log.WarnFormat("Could not add [{0}] to the registered list. Repeat entry in modules?", module.ModuleName);
                return;
            }

            _modules.Add(module.ModuleName, module);
            _log.InfoFormat("Registered module:[{0},{1}]", module.ModuleName, module.GetType().FullName);

            try
            {
                InitModule(module);
            }
            catch (Exception ex)
            {
                _log.Error("Module :[" + module.ModuleName + "] initialize fail.", ex);
            }
        }
示例#2
0
        private static void InitModule(IPWModule module)
        {
            module.InitModule();
            module.IsInitialized = true;

            if (!module.IsBackgroud)
            {
                Control control = module.GetControl();
                if (control != null)
                {
                    //moduleControl.Dock = DockStyle.Fill;
                    _controls.Add(module.ModuleName, control);
                }
            }
        }
示例#3
0
        private static void LoadModule(string moduleName, object[] args, IPWModule module)
        {
            if (_currentModuleControl != module)
            {
                _currentModuleControl = module;
                module.IsOnScreen     = true;
                module.ModuleShowing(args);
            }

            if (_controls.ContainsKey(moduleName))
            {
                var moduleCtrl = module as Control;
                _controlPanel.Controls.Add(moduleCtrl);
                _controls[moduleName].Dock = DockStyle.Fill;
            }

            module.ModuleShown(args);
        }
示例#4
0
        public static void LoadModule(string moduleName, object[] args)
        {
            try
            {
                IPWModule targetModule = null;
                _modules.TryGetValue(moduleName, out targetModule);


                if (_currentModuleControl != null)
                {
                    if (targetModule != _currentModuleControl)
                    {
                        _currentModuleControl.IsOnScreen = false;
                        _currentModuleControl.ModuleClosed();
                        _controlPanel.Controls.Clear();
                    }
                }

                if (targetModule != null)
                {
                    LoadModule(moduleName, args, targetModule);
                }
                else if (_moduleInfos.ContainsKey(moduleName))
                {
                    ModuleInfo info   = _moduleInfos[moduleName];
                    IPWModule  module = info.Module;
                    Register(module, info.Args);
                    LoadModule(moduleName, args, module);
                    _moduleInfos.Remove(moduleName);
                }
                else
                {
                    _log.ErrorFormat("Invalid module:[{0}]", moduleName);
                }
            }
            catch (Exception ex)
            {
                _log.Error("Module :[" + moduleName + "] show fail.", ex);
            }
        }
示例#5
0
 public static void Register(IPWModule module)
 {
     Register(module, null);
 }