Source/Tx.LinqPad/ConnectionDialog.xaml.cs (159 lines of code) (raw):

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; using System.Windows; using Microsoft.Win32; using System.Diagnostics; namespace Tx.LinqPad { /// <summary> /// Interaction logic for ConnectionDialog.xaml /// </summary> public partial class ConnectionDialog : Window { private const string ErrorMessageTitle = "Tx LINQPad Driver"; private readonly ObservableCollection<string> _files; private readonly string _filter; private readonly ObservableCollection<string> _metadataFiles; private readonly TxProperties _properties; internal ConnectionDialog(TxProperties properties, string filter) { DataContext = properties; _properties = properties; _filter = filter; InitializeComponent(); _files = new ObservableCollection<string>(_properties.Files); _metadataFiles = new ObservableCollection<string>(_properties.MetadataFiles); FileList.ItemsSource = _files; MetadataFileList.ItemsSource = _metadataFiles; rbLookup.IsChecked = _properties.IsUsingDirectoryLookup; rbRealTime.IsChecked = _properties.IsRealTime; } private void ClickOK(object sender, RoutedEventArgs e) { if (String.IsNullOrWhiteSpace(_properties.ContextName)) { MessageBox.Show("The connection name can not be empty", ErrorMessageTitle); return; } if (rbPast.IsChecked.Value) { if (_files.Count == 0) { MessageBox.Show("Empty list of files", ErrorMessageTitle); return; } } _properties.Files = _files.ToArray(); _properties.MetadataFiles = _metadataFiles.ToArray(); _properties.IsRealTime = rbRealTime.IsChecked.Value; _properties.IsUsingDirectoryLookup = rbLookup.IsChecked.Value; DialogResult = true; } private void AddFiles_Click(object sender, RoutedEventArgs e) { var fileDialog = new OpenFileDialog { Title = "Add file to the query context", Multiselect = true, Filter = _filter }; if (fileDialog.ShowDialog().GetValueOrDefault()) { foreach (string name in fileDialog.FileNames) { _files.Add(name); } } } private void RemoveFiles_Click(object sender, RoutedEventArgs e) { var removed = new List<string>(); foreach (string name in FileList.SelectedItems) { removed.Add(name); } foreach (string name in removed) { _files.Remove(name); } } private void btnBrowseDefinition_Click(object sender, RoutedEventArgs e) { var fileDialog = new OpenFileDialog { Title = "Select Data Collector Set Template", Multiselect = false, Filter = "Data Collector Set Templates (*.xml)|*.xml" }; } private static T GetAttribute<T>(ICustomAttributeProvider provider) { return (T) (provider.GetCustomAttributes(typeof (T), false))[0]; } private void SwitchPastOrRealTime(object sender, RoutedEventArgs e) { if (!IsInitialized) return; if (rbRealTime.IsChecked.Value) { PastUI.Visibility = Visibility.Collapsed; RealTimeUI.Visibility = Visibility.Visible; } else { PastUI.Visibility = Visibility.Visible; RealTimeUI.Visibility = Visibility.Collapsed; } LookupOrSelectMetadata_Checked(sender, e); } private void LookupOrSelectMetadata_Checked(object sender, RoutedEventArgs e) { if (!IsInitialized) return; if (rbLookup.IsChecked.Value) { LookupDirPanel.Visibility = Visibility.Visible; AddMetadataPanel.Visibility = Visibility.Collapsed; } else { LookupDirPanel.Visibility = Visibility.Collapsed; AddMetadataPanel.Visibility = Visibility.Visible; } } private void AddMetadataFiles_Click(object sender, RoutedEventArgs e) { var fileDialog = new OpenFileDialog { Title = "Add metadata files", Multiselect = true, Filter = "Etl Files (*.etl)|*.etl|Manifests|*.man|All Files|*.*" }; if (fileDialog.ShowDialog().GetValueOrDefault()) { foreach (string name in fileDialog.FileNames) { _metadataFiles.Add(name); } } } private void RemoveMetadataFiles_Click(object sender, RoutedEventArgs e) { var removed = new List<string>(); foreach (string name in MetadataFileList.SelectedItems) { removed.Add(name); } foreach (string name in removed) { _metadataFiles.Remove(name); } } private void TxDocs_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { Process.Start(e.Uri.AbsoluteUri); e.Handled = true; } } }