using CommunityToolkit.Mvvm.ComponentModel;
|
using OpenTap;
|
using OpenTap.Addin;
|
using OpenTap.Addin.Util;
|
using System.Collections.ObjectModel;
|
using System.Windows;
|
|
namespace OpenTapEditor
|
{
|
/// <summary>
|
/// VariableSelector.xaml 的交互逻辑
|
/// </summary>
|
[ObservableObject]
|
public partial class VariableSelector : Window
|
{
|
public static DependencyProperty ResultProperty = DependencyProperty.Register(
|
"Result",
|
typeof(string),
|
typeof(VariableSelector),
|
new PropertyMetadata(null)
|
);
|
|
public string Result
|
{
|
get => (string)GetValue(ResultProperty);
|
set
|
{
|
SetValue(ResultProperty, value);
|
}
|
}
|
|
[ObservableProperty]
|
private ObservableCollection<TestVariable> variables;
|
|
public VariableSelector()
|
{
|
DataContext = this;
|
Variables = new ObservableCollection<TestVariable>() {
|
new TestVariable(){
|
Name = ConstNames.LocalsName,
|
NameCanEdit = false,
|
Type = TestVariableType.Container
|
},
|
new TestVariable(){
|
Name = ConstNames.ParametersName,
|
NameCanEdit = false,
|
Type = TestVariableType.Container
|
},
|
new TestVariable(){
|
Name = ConstNames.FileGlobalsName,
|
NameCanEdit = false,
|
Type = TestVariableType.Container
|
},
|
new TestVariable(){
|
Name = ConstNames.StationGlobalsName,
|
Type = TestVariableType.Container,
|
NameCanEdit = false,
|
Children = UIStationGlobalsManager.Instance.Datasource
|
},
|
new TestVariable(){
|
Name = ConstNames.ThisContextName,
|
NameCanEdit = false,
|
Type = TestVariableType.Refrence,
|
}
|
};
|
InitializeComponent();
|
tree.ItemDoubleClicked += Tree_ItemDoubleClicked;
|
}
|
|
private void Tree_ItemDoubleClicked(object? sender, string e)
|
{
|
if (string.IsNullOrEmpty(Result))
|
{
|
Result += e;
|
}
|
else
|
{
|
var length = tb.SelectionLength;
|
if (length > 0)
|
{
|
int index = tb.SelectionStart;
|
tb.Text = tb.Text.Remove(index, length).Insert(index, e);
|
}
|
else
|
{
|
string text = $" {e} ";
|
int p = tb.CaretIndex;
|
if (p == tb.Text.Length)
|
{
|
text = $" {e}";
|
}
|
|
|
tb.Text = tb.Text.Insert(p, text);
|
tb.CaretIndex = p + text.Length;
|
|
tb.Select(p, text.Length);
|
}
|
}
|
}
|
|
public bool? Open(TestPlan plan, TestStepList seq)
|
{
|
Variables[0].Children = seq.Variables;
|
Variables[1].Children = seq.Parameters;
|
Variables[2].Children = plan.Variables;
|
return this.ShowDialog();
|
}
|
|
private void tb_GotFocus(object sender, RoutedEventArgs e)
|
{
|
// tb.Select(start, length);
|
}
|
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
{
|
if (tree.EditingCell != null)
|
{
|
e.Cancel = !tree.EditingCell.PreSubmit(tree.EditingCell, tree.EditingCell.editing.Text, tree.EditingCell.DataContext);
|
}
|
}
|
}
|
}
|