Ejemplo n.º 1
0
        public void Open(Model.ModuleData module)
        {
            if (module == null)
            {
                throw new ArgumentNullException("module");
            }

            if (this.ModuleOpened != null)
            {
                this.ModuleOpened(module, EventArgs.Empty);
            }
        }
Ejemplo n.º 2
0
 private Model.ModuleData deserialize(XElement element)
 {
     Model.ModuleData module = Model.ModuleData.Empty;
     using (var reader = element.CreateReader())
     {
         ((IXmlSerializable)module).ReadXml(reader);
     }
     foreach (XElement inner in element.Elements())
     {
         module.Add(deserialize(inner));
     }
     return(module);
 }
Ejemplo n.º 3
0
        private static void createModule(Model.ModuleData module, ModuleControllerBase controller)
        {
            controller.Closed += onModuleClosed;

            var moduleControllers = moduleControllerMap.GetOrAdd(module, new List <ModuleControllerBase>());

            moduleControllers.Add(controller);
            openedControllerList.Insert(PinnedCount, controller);
            controllerModuleMap.TryAdd(controller, module);

            updateOpenedModuleTitle(module);
            controller.Create();
        }
Ejemplo n.º 4
0
        private XElement serialize(Model.ModuleData module)
        {
            var element = new XElement("Module");

            using (var writer = element.CreateWriter())
            {
                ((IXmlSerializable)module).WriteXml(writer);
            }
            foreach (var item in module.SubModules)
            {
                element.Add(serialize(item));
            }
            return(element);
        }
Ejemplo n.º 5
0
        public static void Add(Model.ModuleData moduleSet)
        {
            if (moduleSet == null)
            {
                throw new ArgumentNullException("moduleSet");
            }
            if (!moduleSet.IsModuleSet)
            {
                throw new NotSupportedException(
                          string.Format("only support container module \"{0}\"", moduleSet.Name));
            }

            List <string> insertedKeys = new List <string>();

            try
            {
                foreach (var module in moduleSet.SubModules)
                {
                    if (!modules.ContainsKey(module.Name))
                    {
                        modules.Add(module.Name, module);
                        insertedKeys.Add(module.Name);
                    }
                    else
                    {
                        throw new Exception(
                                  string.Format("There is already a module with same name \"{0}\" exists. Make sure to add unique modules. All added modules under current module set will be removed.", module.Name));
                    }
                }
                ModuleSets.Add(moduleSet);
                if (!isRangeAdd)
                {
                    ViewModel.MenuContainerViewModel.Instance.OnPropertyChanged("ModuleSets");
                }
            }
            catch
            {
                //rollback
                foreach (var key in insertedKeys)
                {
                    modules.Remove(key);
                }
                throw;
            }
            finally
            {
                insertedKeys.Clear();
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// find Controller bound to Module, then open its first page, and handle close event
        /// </summary>
        public static void Open(Model.ModuleData module)
        {
            //get controller instance
            ModuleControllerBase controller = moduleControllerMapping(module);

            if (controller == null)
            {
                throw new InvalidOperationException("module controller can not be null.");
            }

            if (controller.IsSingleMode)
            {
                List <ModuleControllerBase> controllers;
                if (moduleControllerMap.TryGetValue(module, out controllers))
                {
                    var singleControllerInstance = controllers.SingleOrDefault();
                    if (singleControllerInstance != null)
                    {
                        NavigateTo(singleControllerInstance);
                        return;
                    }
                }
            }
            //HomePage is Single too
            if (controller.IsHomePage)
            {
                if (homePageCreated)
                {
                    throw new InvalidOperationException("only can set one Home page.");
                }
                homePageCreated = true;
                //homePageCount++;
                //if (homePageCount > 1)
                //	throw new InvalidOperationException("only can set one Home page.");
            }

            createModule(module, controller);
            currentModuleController = controller;
            updateControllerActivateState();
        }
Ejemplo n.º 7
0
        private static void updateOpenedModuleTitle(Model.ModuleData module)
        {
            List <ModuleControllerBase> moduleControllers;

            if (moduleControllerMap.TryGetValue(module, out moduleControllers))
            {
                if (moduleControllers.Count > 0)
                {
                    int    index       = 0;
                    string moduleTitle = module.Title;
                    foreach (var controller in moduleControllers.OrderBy(item => item.CreatedTime))
                    {
                        if (index++ > 0)
                        {
                            controller.Header = string.Format("{0}({1})", moduleTitle, index);
                        }
                        else
                        {
                            controller.Header = moduleTitle;
                        }
                    }
                }
            }
        }