Esempio n. 1
0
        public async Task <bool> ReloadModelAsync(IModelPageControl ctrl)
        {
            if (ctrl is null)
            {
                return(false);
            }

            var oldRootModel = ctrl.IModel;
            var oldChef      = oldRootModel.DataRoot;
            var repo         = oldChef.Repository;

            RemoveModelPage(oldRootModel);
            oldRootModel.Release();

            WindowManagerService.Current.CloseRelatedModels(oldRootModel);

            var rootModel = new RootModel();
            var newChef   = rootModel.DataRoot;

            _ = await repo.ReloadAsync(newChef).ConfigureAwait(true);

            await ctrl.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                InsertModelPage(rootModel);
            });

            return(true);
        }
Esempio n. 2
0
        public async Task <bool> ReloadModel(IModelPageControl ctrl)
        {
            if (ctrl is null)
            {
                return(false);
            }
            var oldModel = ctrl.PageModel;

            if (oldModel.Root.Repository is StorageFileRepo repo)
            {
                RemoveModelPage(oldModel);
                oldModel.Release();

                WindowManagerService.Current.CloseRelatedModels(oldModel);

                var rootModel = new RootModel();
                var newRoot   = rootModel.Root;

                _ = await repo.ReloadAsync(newRoot).ConfigureAwait(true);

                await ctrl.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    InsertModelPage(rootModel);
                });
            }
            return(false);
        }
Esempio n. 3
0
        public async Task <bool> SaveModelAs(IModelPageControl ctrl)
        {
            if (ctrl is null)
            {
                return(false);
            }
            var root = ctrl.PageModel.Root;

            if (root.Repository is StorageFileRepo repo)
            {
                _ = await repo.SaveAsAsync(root);
            }
            return(false);
        }
Esempio n. 4
0
        public void CloseModel(IModelPageControl ctrl)
        {
            if (ctrl is null)
            {
                return;
            }
            var model = ctrl.PageModel;

            if (model.Root.Repository is StorageFileRepo repo)
            {
                RemoveModelPage(model);
                model.Release();

                WindowManagerService.Current.CloseRelatedModels(model);
            }
        }
Esempio n. 5
0
        internal void NavigatedTo(object parm)
        {
            if (parm is RootModel m1)
            {
                GetModelControl(m1);
                NavigationService.ActiveModelPage = this;
            }
            else if (parm is ViewLifetimeControl viewControl && viewControl.IModel is RootModel m2)
            {
                GetModelControl(m2);
                //await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { viewControl.PageControl = new IModelControl(viewControl.IModel); ModelControl = viewControl.PageControl;  ControlGrid.Children.Add(viewControl.PageControl); });
            }
            ControlGrid.Children.Add(PageControl as UIElement);


            void GetModelControl(RootModel m)
            {
                if (m.PageControl is null)
                {
                    m.DataRoot.SetLocalizer(ResourceExtensions.CoreLocalizer());

                    switch (m.ControlType)
                    {
                    case ControlType.PrimaryTree:
                    case ControlType.PartialTree:
                        var treeControl = new ModelTreeControl(m);
                        treeControl.Loaded += TreeControll_Loaded;
                        m.PageControl       = treeControl;
                        break;

                    case ControlType.SymbolEditor: m.PageControl = new SymbolEditControl(m); break;

                    case ControlType.GraphDisplay: m.PageControl = new ModelGraphControl(m); break;

                    default:
                        throw new ArgumentException("Unknown ControlType");
                    }
                }
                PageControl = m.PageControl as IModelPageControl;
            }
        }
Esempio n. 6
0
        internal async System.Threading.Tasks.Task NavigatedToAsync(object parm)
        {
            if (parm is RootModel m1)
            {
                GetModelControl(m1);
                NavigationService.ActiveModelPage = this;
            }
            else if (parm is ViewLifetimeControl viewControl && viewControl.DataModel is IPageModel m2)
            {
                GetModelControl(m2);
            }
            ControlGrid.Children.Add(PageControl as UIElement);


            void GetModelControl(IPageModel m)
            {
                if (m.PageControl is null)
                {
                    Root.SetLocalizer(ResourceExtensions.CoreLocalizer());

                    switch (m.ControlType)
                    {
                    case ControlType.PrimaryTree:
                    case ControlType.PartialTree:
                        var treeControl = new ModelTreeControl(m);
                        treeControl.Loaded += TreeControll_Loaded;
                        m.PageControl       = treeControl;
                        break;

                    case ControlType.ComplexDraw: m.PageControl = new ModelDrawControl(m); break;

                    default:
                        throw new ArgumentException("Unknown ControlType");
                    }
                }
                PageControl = m.PageControl as IModelPageControl;
            }
        }
Esempio n. 7
0
 internal void NavigatedFrom()
 {
     ControlGrid.Children.Clear();
     PageControl = null;
 }