public static ProjectItemViewModel Create(IProjectItem item) { ProjectItemViewModel result = null; if (item is IProjectFolder) { result = new ProjectFolderViewModel(item as IProjectFolder); } else if (item is ISourceFile) { result = new SourceFileViewModel(item as ISourceFile); } else if (item is IReferenceFolder) { result = new ReferenceFolderViewModel(item as IReferenceFolder); } return(result); }
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(); }); }