From ef41947fcc608a4e9666bcfa2ea5d71df128109f Mon Sep 17 00:00:00 2001 From: rowo360 <59574371+rowo360@users.noreply.github.com> Date: Fri, 10 Jan 2025 16:02:06 +0100 Subject: [PATCH] Add interface IChanged; Use interface IChanged instead of ISelection in class TextBoxElement --- .../testcentric.gui/Elements/IChanged.cs | 19 ++++++++++++ .../Elements/TextBoxElement.cs | 29 ++++--------------- .../Presenters/TreeViewPresenter.cs | 2 +- .../testcentric.gui/Views/ITestTreeView.cs | 2 +- .../testcentric.gui/Views/TestTreeView.cs | 2 +- .../TestTree/TreeViewPresenterTests.cs | 2 +- 6 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 src/TestCentric/testcentric.gui/Elements/IChanged.cs diff --git a/src/TestCentric/testcentric.gui/Elements/IChanged.cs b/src/TestCentric/testcentric.gui/Elements/IChanged.cs new file mode 100644 index 00000000..fb8911e3 --- /dev/null +++ b/src/TestCentric/testcentric.gui/Elements/IChanged.cs @@ -0,0 +1,19 @@ +// *********************************************************************** +// Copyright (c) Charlie Poole and TestCentric contributors. +// Licensed under the MIT License. See LICENSE file in root directory. +// *********************************************************************** + +namespace TestCentric.Gui.Elements +{ + /// + /// The IChanged interface represents a IViewElement. + /// If the IViewElement changes, it will raise the Changed event. + /// + public interface IChanged : IViewElement + { + /// + /// Event raised when the element is changed by the user + /// + event CommandHandler Changed; + } +} diff --git a/src/TestCentric/testcentric.gui/Elements/TextBoxElement.cs b/src/TestCentric/testcentric.gui/Elements/TextBoxElement.cs index 61973e7b..348e1289 100644 --- a/src/TestCentric/testcentric.gui/Elements/TextBoxElement.cs +++ b/src/TestCentric/testcentric.gui/Elements/TextBoxElement.cs @@ -10,15 +10,15 @@ namespace TestCentric.Gui.Elements { /// - /// This class implements the ISelection interface for a TextBox control. It provides this additional functionality: + /// This class implements the IChanged interface for a TextBox control. It provides this additional functionality: /// - show a PlaceHoder text if there's no text input - /// - Invoke the SelectionChanged event as soon as no further input is made within a short period of time. + /// - Invoke the Changed event as soon as no further input is made within a short period of time. /// - public class TextBoxElement : ISelection + public class TextBoxElement : IChanged { private Timer _typingTimer; - public event CommandHandler SelectionChanged; + public event CommandHandler Changed; public TextBoxElement(Control textBox, string placeHolderText) { @@ -33,18 +33,6 @@ public TextBoxElement(Control textBox, string placeHolderText) OnTextBoxLostFocus(null, EventArgs.Empty); } - public string SelectedItem - { - get => TextBox.Text; - set => TextBox.Text = value; - } - - public int SelectedIndex - { - get => 0; - set => throw new NotImplementedException(); - } - public bool Enabled { get => TextBox.Enabled; @@ -74,11 +62,6 @@ public void InvokeIfRequired(MethodInvoker _delegate) throw new NotImplementedException(); } - public void Refresh() - { - throw new NotImplementedException(); - } - private void OnTextBoxGotFocus(object sender, EventArgs e) { // If the PlaceHolderText is shown, replace it with an empty text @@ -126,8 +109,8 @@ private void TypingTimerTimeout(object sender, EventArgs e) // The timer must be stopped! timer.Stop(); - if (SelectionChanged != null) - SelectionChanged(); + if (Changed != null) + Changed(); TextBox.Focus(); } diff --git a/src/TestCentric/testcentric.gui/Presenters/TreeViewPresenter.cs b/src/TestCentric/testcentric.gui/Presenters/TreeViewPresenter.cs index 204332f9..bb08aecc 100644 --- a/src/TestCentric/testcentric.gui/Presenters/TreeViewPresenter.cs +++ b/src/TestCentric/testcentric.gui/Presenters/TreeViewPresenter.cs @@ -257,7 +257,7 @@ private void WireUpEvents() _model.TestCentricTestFilter.OutcomeFilter = filter; }; - _view.TextFilter.SelectionChanged += () => + _view.TextFilter.Changed += () => { var text = _view.TextFilter.Text; _model.TestCentricTestFilter.TextFilter = text; diff --git a/src/TestCentric/testcentric.gui/Views/ITestTreeView.cs b/src/TestCentric/testcentric.gui/Views/ITestTreeView.cs index 053afb3b..806608e5 100644 --- a/src/TestCentric/testcentric.gui/Views/ITestTreeView.cs +++ b/src/TestCentric/testcentric.gui/Views/ITestTreeView.cs @@ -53,7 +53,7 @@ public interface ITestTreeView : IView // Test Filter related properties / methods IMultiSelection OutcomeFilter { get; } - ISelection TextFilter { get; } + IChanged TextFilter { get; } void SetTestFilterVisibility(bool visible); diff --git a/src/TestCentric/testcentric.gui/Views/TestTreeView.cs b/src/TestCentric/testcentric.gui/Views/TestTreeView.cs index e301957b..b61bdd57 100644 --- a/src/TestCentric/testcentric.gui/Views/TestTreeView.cs +++ b/src/TestCentric/testcentric.gui/Views/TestTreeView.cs @@ -128,7 +128,7 @@ public bool CheckBoxes public IMultiSelection OutcomeFilter { get; private set; } - public ISelection TextFilter { get; private set; } + public IChanged TextFilter { get; private set; } public TreeNode ContextNode { get; private set; } public ContextMenuStrip TreeContextMenu => TreeView.ContextMenuStrip; diff --git a/src/TestCentric/tests/Presenters/TestTree/TreeViewPresenterTests.cs b/src/TestCentric/tests/Presenters/TestTree/TreeViewPresenterTests.cs index 2de8ef16..a873eb96 100644 --- a/src/TestCentric/tests/Presenters/TestTree/TreeViewPresenterTests.cs +++ b/src/TestCentric/tests/Presenters/TestTree/TreeViewPresenterTests.cs @@ -256,7 +256,7 @@ public void TextFilterChanged_ApplyFilter() _view.TextFilter.Text.Returns("TestA"); // 2. Act - _view.TextFilter.SelectionChanged += Raise.Event(); + _view.TextFilter.Changed += Raise.Event(); // 3. Assert _model.TestCentricTestFilter.Received().TextFilter = "TestA";