aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Dialogs/NewProjectViewVM.cs
blob: 69cf8034ed473fce5aa6bd3ad70fe4e54235f4f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using Tango.Core.Commands;
using Tango.Scripting.IDE.ProjectTypes;
using Tango.SharedUI;
using Microsoft.WindowsAPICodePack.Dialogs;
using Microsoft.Win32;

namespace Tango.Scripting.IDE.Dialogs
{
    public class NewProjectViewVM : BaseProjectDialogVM
    {
        /// <summary>
        /// Gets or sets the last solution locations.
        /// </summary>
        public ObservableCollection<String> LastSolutionPaths { get; set; }

        private String _solutionName = "App1";
        public String SolutionName
        {
            get { return _solutionName; }
            set { _solutionName = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
        }

        #region Commands
        public RelayCommand BrowseFileCommand { get; set; }
        #endregion

        public NewProjectViewVM() : base()
        {
            Title = "New Project";
            BrowseFileCommand = new RelayCommand(BrowseFile);
        }

        public NewProjectViewVM(IEnumerable<String> lastSolutionFolders) : this()
        {
            LastSolutionPaths = new ObservableCollection<string>(lastSolutionFolders);
            ProjectLocation = LastSolutionPaths.FirstOrDefault();
        }

        private void BrowseFile()
        {
            CommonOpenFileDialog dialog = new CommonOpenFileDialog();
            dialog.InitialDirectory = LastSolutionPaths.LastOrDefault<string>();
            dialog.IsFolderPicker = true;
            if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
            {
                if (Directory.Exists(dialog.FileName) == true)
                {
                    if (false == LastSolutionPaths.Contains(dialog.FileName))
                    {
                        LastSolutionPaths.Add(dialog.FileName);
                    }
                    ProjectLocation = dialog.FileName;
                }
            }
        }

        protected override bool CanOK()
        {
            return base.CanOK() && !String.IsNullOrWhiteSpace(SolutionName);
        }
    }
}