/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using Microsoft.VisualStudio.PlatformUI; using Microsoft.VisualStudio.Shell; using System; using System.Linq; using System.Windows; using System.Windows.Input; using System.Windows.Media; namespace QuantConnect.VisualStudioPlugin { /// /// Interaction logic for NewProjectDialog.xaml /// internal partial class NewProjectDialog : DialogWindow { /// /// True if user entered valid data /// public bool CreateNewProject { get; private set; } /// /// User provided Project name /// public string NewProjectName { get; private set; } /// /// User provided project programming laguange /// public Language NewProjectLanguage { get; private set; } /// /// Supported programming languages. This is to filter enum Language, which has unsupported languages. /// private static string[] _supportedLanguages = { "FSharp", "CSharp", "Python" }; private readonly Brush _NewProjectNameNormalBrush; public NewProjectDialog() { InitializeComponent(); CreateNewProject = false; _NewProjectNameNormalBrush = NewProjectNameBox.BorderBrush; foreach (Language language in Enum.GetValues(typeof(Language))) { var languageStr = Enum.GetName(typeof(Language), language); if (_supportedLanguages.Any(x => x.Equals(languageStr))) { LanguageNameBox.Items.Add(new ComboboxLanguageItem(language, languageStr)); } } } private void Ok_Click(object sender, RoutedEventArgs e) { var selectedItem = LanguageNameBox.SelectedItem as ComboboxLanguageItem; if (string.IsNullOrEmpty(NewProjectNameBox.Text)) { NewProjectNameBox.BorderBrush = Brushes.Red; } else if (selectedItem == null) { VsUtils.DisplayInStatusBar(ServiceProvider.GlobalProvider, "Please select a language for the new project"); } else { NewProjectName = NewProjectNameBox.Text; NewProjectLanguage = selectedItem.LanguageId; CreateNewProject = true; Close(); } } private void Cancel_Click(object sender, RoutedEventArgs e) { Close(); } private void InputField_KeyDown(object sender, KeyEventArgs e) { NewProjectNameBox.BorderBrush = _NewProjectNameNormalBrush; if (e.Key == Key.Return) { Ok_Click(sender, e); } } /// /// Item that represents language name and language id in a combo box /// private class ComboboxLanguageItem { public Language LanguageId { get; } public string LanguageName { get; } public ComboboxLanguageItem(Language id, string name) { LanguageId = id; LanguageName = name; } public override string ToString() { return LanguageName; } } } }