public AddNewUrlSourceDialog() { _input = new JsonUrlInput(); InitializeComponent(); // sigh, too bad reactiveui doesn't support .net 4 Action doValidation = () => { var name = NameTextBox.Text; var uri = UrlTextBox.Text; bool validUri = false; try { var obj = new Uri(uri, UriKind.Absolute); validUri = true; } catch { } var nameOk = String.IsNullOrEmpty(name) || char.IsLetter(name.ToCharArray()[0]); var jsonOk = validUri || String.IsNullOrEmpty(uri); OkButton.IsEnabled = (nameOk && jsonOk && !String.IsNullOrEmpty(name)); NameTextBox.Background = nameOk ? _goodBrush : _badBrush; UrlTextBox.Background = jsonOk ? _goodBrush : _badBrush; }; NameTextBox.TextChanged += (sender, args) => doValidation(); UrlTextBox.TextChanged += (sender, args) => doValidation(); UrlTextBox.TextChanged += (sender, args) => { try { var uri = new Uri(UrlTextBox.Text); var pcol = HttpUtility.ParseQueryString(uri.Query); var ps = pcol .AllKeys .Select(k => Tuple.Create(k, pcol[k])) .ToList(); ParametersListView.ItemsSource = ps; UrlTextBox.Background = _goodBrush; } catch { UrlTextBox.Background = _badBrush; ParametersListView.ItemsSource = null; } if (ParametersListView.Items.Count > 0) { ExposeAsMethodCheckbox.IsEnabled = true; } else { ExposeAsMethodCheckbox.IsEnabled = false; ExposeAsPropertyCheckBox.IsChecked = true; } }; HeadersListView.SelectionChanged += (sender, args) => RemoveHeaderButton.IsEnabled = HeadersListView.SelectedItem != null; AddNewHeaderButton.Click += (sender, args) => { var h = new WebRequestHeader() { Name = "Name", Value = "Value" }; Headers.Add(h); HeadersListView.SelectedItem = h; }; RemoveHeaderButton.Click += (sender, args) => { var h = HeadersListView.SelectedItem as WebRequestHeader; Headers.Remove(h); }; CancelButton.Click += (sender, args) => DialogResult = false; OkButton.Click += (sender, args) => { _input.Name = NameTextBox.Text; _input.Url = UrlTextBox.Text; _input.Headers = Headers; _input.GenerateAsMethod = ExposeAsMethodCheckbox.IsChecked == true; Input = _input; DialogResult = true; }; HeadersListView.ItemsSource = Headers; doValidation(); NameTextBox.Focus(); }
public AddNewUrlSourceDialog() { _input = new JsonUrlInput(); InitializeComponent(); // sigh, too bad reactiveui doesn't support .net 4 Action doValidation = () => { var name = NameTextBox.Text; var uri = UrlTextBox.Text; bool validUri = false; try { var obj = new Uri(uri, UriKind.Absolute); validUri = true; } catch { } var nameOk = String.IsNullOrEmpty(name) || char.IsLetter(name.ToCharArray()[0]); var jsonOk = validUri || String.IsNullOrEmpty(uri); OkButton.IsEnabled = (nameOk && jsonOk && !String.IsNullOrEmpty(name)); NameTextBox.Background = nameOk ? _goodBrush : _badBrush; UrlTextBox.Background = jsonOk ? _goodBrush : _badBrush; }; NameTextBox.TextChanged += (sender, args) => doValidation(); UrlTextBox.TextChanged += (sender, args) => doValidation(); UrlTextBox.TextChanged += (sender, args) => { try { var uri = new Uri(UrlTextBox.Text); var pcol = HttpUtility.ParseQueryString(uri.Query); var ps = pcol .AllKeys .Select(k => Tuple.Create(k, pcol[k])) .ToList(); ParametersListView.ItemsSource = ps; UrlTextBox.Background = _goodBrush; } catch { UrlTextBox.Background = _badBrush; ParametersListView.ItemsSource = null; } if (ParametersListView.Items.Count > 0) ExposeAsMethodCheckbox.IsEnabled = true; else { ExposeAsMethodCheckbox.IsEnabled = false; ExposeAsPropertyCheckBox.IsChecked = true; } }; HeadersListView.SelectionChanged += (sender, args) => RemoveHeaderButton.IsEnabled = HeadersListView.SelectedItem != null; AddNewHeaderButton.Click += (sender, args) => { var h = new WebRequestHeader() {Name = "Name", Value = "Value"}; Headers.Add(h); HeadersListView.SelectedItem = h; }; RemoveHeaderButton.Click += (sender, args) => { var h = HeadersListView.SelectedItem as WebRequestHeader; Headers.Remove(h); }; CancelButton.Click += (sender, args) => DialogResult = false; OkButton.Click += (sender, args) => { _input.Name = NameTextBox.Text; _input.Url = UrlTextBox.Text; _input.Headers = Headers; _input.GenerateAsMethod = ExposeAsMethodCheckbox.IsChecked == true; Input = _input; DialogResult = true; }; HeadersListView.ItemsSource = Headers; doValidation(); NameTextBox.Focus(); }