using CommunityToolkit.Mvvm.ComponentModel;
|
using Microsoft.Win32;
|
using OpenTap;
|
using System.IO;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace OpenTapEditor;
|
|
/// <summary>
|
/// Interaction logic for SequencePanel.xaml
|
/// </summary>
|
[ObservableObject]
|
public partial class SequencePanel : UserControl, ITabItem
|
{
|
private TestPlan Plan;
|
private TapThread testPlanThread;
|
|
[ObservableProperty]
|
private ITestStep selectedTestStep;
|
|
[ObservableProperty]
|
private bool isRunning = false;
|
|
[ObservableProperty]
|
private bool hasChanged = false;
|
|
[ObservableProperty]
|
private string tabName;
|
|
public SequencePanel(string tabName, TestPlan plan)
|
{
|
TabName = tabName;
|
InitializeComponent();
|
Plan = plan;
|
bcSetting.Source = Plan;
|
|
treeView.Plan = Plan;
|
variableControl.SetPlan(Plan);
|
|
variableControl.SequenceChanged += VariableControl_SequenceChanged;
|
|
Plan.ChildTestSteps.ChildStepsChanged += ChildTestSteps_ChildStepsChanged;
|
Plan.ChildTestSteps.CollectionChanged += ChildTestSteps_CollectionChanged;
|
}
|
|
private void VariableControl_SequenceChanged(object? sender, EventArgs e)
|
{
|
HasChanged = true;
|
}
|
|
private void ChildTestSteps_ChildStepsChanged(TestStepList senderList, TestStepList.ChildStepsChangedAction Action, ITestStep Object, int Index)
|
{
|
HasChanged = true;
|
}
|
|
private void ChildTestSteps_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
{
|
HasChanged = true;
|
}
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
{
|
var btn = sender as Button;
|
switch (btn.Content)
|
{
|
case "运行":
|
RunTestPlan();
|
break;
|
case "停止":
|
StopRunTestPlan();
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void RunTestPlan()
|
{
|
IsRunning = true;
|
|
testPlanThread = TapThread.Start(() =>
|
{
|
var res = ResultSettings.Current;
|
Plan.Execute(treeView.Datasource.SequenceName, ResultSettings.Current, null);
|
IsRunning = false;
|
});
|
}
|
|
private void StopRunTestPlan()
|
{
|
testPlanThread?.Abort();
|
}
|
|
public bool TrySaveTestStep()
|
{
|
if (!string.IsNullOrEmpty(Plan.Path))
|
{
|
Plan.Save(Plan.Path);
|
HasChanged = false;
|
TabName = Path.GetFileName(Plan.Path);
|
return true;
|
}
|
else
|
{
|
SaveFileDialog sfd = new SaveFileDialog()
|
{
|
Filter = "Test Plan|*.TapPlan",
|
DefaultExt = ".TapPlan"
|
};
|
if (sfd.ShowDialog() == true)
|
{
|
Plan.Save(sfd.FileName);
|
HasChanged = false;
|
TabName = Path.GetFileName(Plan.Path);
|
return true;
|
}
|
}
|
return false;
|
}
|
|
public void TrySaveAs()
|
{
|
SaveFileDialog sfd = new SaveFileDialog()
|
{
|
Filter = "Test Plan|*.TapPlan",
|
DefaultExt = ".TapPlan"
|
};
|
if (sfd.ShowDialog() == true)
|
{
|
Plan.Save(sfd.FileName);
|
HasChanged = false;
|
TabName = Path.GetFileName(Plan.Path);
|
}
|
}
|
|
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
|
{
|
if (e.NewValue != null)
|
{
|
settingView.UpdateSource(e.NewValue);
|
SelectedTestStep = (ITestStep)e.NewValue;
|
}
|
}
|
|
private void variableControl_SelectedSequenceChanged(object sender, TestStepList e)
|
{
|
treeView.Datasource = e;
|
}
|
}
|