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";