public static void AddOrSelectDocument <T>(this IShell me, T document) where T : IDocumentTabViewModel { var doc = me.Documents.FirstOrDefault(x => x.Equals(document)); if (doc != null) { me.SelectedDocument = doc; } else { me.AddDocument(document); } }
public static void AddOrSelectDocument <T>(this IShell me, Func <T> factory) where T : IDocumentTabViewModel { var doc = me.Documents.FirstOrDefault(x => x is T); if (doc != default) { me.SelectedDocument = doc; } else { me.AddDocument(factory()); } }
public static T GetOrCreate <T>(this IShell me, Func <T> retrieveExisting) where T : IDocumentTabViewModel { T document = default; IDocumentTabViewModel doc = me.Documents.FirstOrDefault(x => x is T); if (doc != default) { document = (T)doc; me.SelectedDocument = doc; } else { document = retrieveExisting(); me.AddDocument(document); } return(document); }
public static T GetOrCreate <T>(this IShell me) where T : IDocumentTabViewModel, new() { T document = default; IDocumentTabViewModel doc = me.Documents.FirstOrDefault(x => x is T); if (doc != default) { document = (T)doc; me.SelectedDocument = doc; } else { document = new T(); me.AddDocument(document); } return(document); }
public ProjectViewModel(ISolutionParentViewModel parent, IProject model) : base(parent, model) { shell = IoC.Get <IShell>(); Items = new ObservableCollection <ProjectItemViewModel>(); Items.BindCollections(model.Items, p => { return(ProjectItemViewModel.Create(p)); }, (pivm, p) => pivm.Model == p); ConfigureCommand = ReactiveCommand.Create(() => { if (configuration == null) { configuration = new ProjectConfigurationDialogViewModel(model, () => { configuration = null; }); shell.AddDocument(configuration); } else { shell.SelectedDocument = configuration; } //shell.ModalDialog.ShowDialog(); }); DebugCommand = ReactiveCommand.Create(() => { //shell.Debug(model); }); BuildCommand = ReactiveCommand.Create(() => shell.Build(model)); CleanCommand = ReactiveCommand.Create(() => shell.Clean(model)); ManageReferencesCommand = ReactiveCommand.Create(() => { }); SetProjectCommand = ReactiveCommand.Create(() => { model.Solution.StartupProject = model; model.Solution.Save(); shell.InvalidateCodeAnalysis(); var root = this.FindRoot(); if (root != null) { root.VisitChildren(solutionItem => { solutionItem.RaisePropertyChanged(nameof(FontWeight)); }); } }); OpenInExplorerCommand = ReactiveCommand.Create(() => Platform.OpenFolderInExplorer(Model.CurrentDirectory)); NewItemCommand = ReactiveCommand.Create(() => { shell.ModalDialog = new NewItemDialogViewModel(model); shell.ModalDialog.ShowDialog(); }); RemoveCommand = ReactiveCommand.Create(() => { shell.CloseDocumentsForProject(Model); Model.Solution.RemoveItem(Model); Model.Solution.Save(); }); DevConsoleCommand = ReactiveCommand.Create(() => { PlatformSupport.LaunchShell(Model.CurrentDirectory, Model.ToolChain?.BinDirectory, Model.Debugger2?.BinDirectory); }); }
public ProjectViewModel(SolutionViewModel solutionViewModel, IProject model) : base(model) { shell = IoC.Get <IShell>(); Items = new ObservableCollection <ProjectItemViewModel>(); Items.BindCollections(model.Items, p => { return(ProjectItemViewModel.Create(p)); }, (pivm, p) => pivm.Model == p); ConfigureCommand = ReactiveCommand.Create(); ConfigureCommand.Subscribe(o => { if (configuration == null) { configuration = new ProjectConfigurationDialogViewModel(model, () => { configuration = null; }); shell.AddDocument(configuration); } else { shell.SelectedDocument = configuration; } //shell.ModalDialog.ShowDialog(); }); DebugCommand = ReactiveCommand.Create(); DebugCommand.Subscribe(_ => { //shell.Debug(model); }); BuildCommand = ReactiveCommand.Create(); BuildCommand.Subscribe(o => { shell.Build(model); }); CleanCommand = ReactiveCommand.Create(); CleanCommand.Subscribe(o => { shell.Clean(model); }); ManageReferencesCommand = ReactiveCommand.Create(); ManageReferencesCommand.Subscribe(o => { }); SetProjectCommand = ReactiveCommand.Create(); SetProjectCommand.Subscribe(o => { model.Solution.StartupProject = model; model.Solution.Save(); shell.InvalidateCodeAnalysis(); foreach (var project in solutionViewModel.Projects) { project.Invalidate(); } }); OpenInExplorerCommand = ReactiveCommand.Create(); OpenInExplorerCommand.Subscribe(o => { Process.Start(Model.CurrentDirectory); }); NewItemCommand = ReactiveCommand.Create(); NewItemCommand.Subscribe(_ => { shell.ModalDialog = new NewItemDialogViewModel(model); shell.ModalDialog.ShowDialog(); }); RemoveCommand = ReactiveCommand.Create(); RemoveCommand.Subscribe(async o => { await shell.CloseDocumentsForProjectAsync(Model); Model.Solution.RemoveProject(Model); Model.Solution.Save(); }); }
private void ShowExtensionsPage() => _shell.AddDocument(new ExtensionManagerDialogViewModel(_extensionManager));