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); }
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); }
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); }
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); } }
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; } }
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; } }
internal void NavigatedFrom() { ControlGrid.Children.Clear(); PageControl = null; }