using AddInPlugin.Entity;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
using OpenTap;
|
using OpenTap.Addin.Annotation;
|
using OpenTapEditor.Util;
|
using System.Collections.ObjectModel;
|
using System.Windows;
|
using System.Windows.Controls;
|
using System.Windows.Input;
|
|
namespace OpenTapEditor
|
{
|
/// <summary>
|
/// Steps.xaml 的交互逻辑
|
/// </summary>
|
[ObservableObject]
|
public partial class StepWindow : Window
|
{
|
|
[ObservableProperty]
|
private ObservableCollection<ITypeData> steps;
|
|
[ObservableProperty]
|
private ObservableCollection<AdapterData> customSteps = new ObservableCollection<AdapterData>();
|
|
[ObservableProperty]
|
private object targetType;
|
|
public bool IsAddChild { get; set; } = false;
|
|
public bool Changed { get; private set; } = false;
|
|
public StepWindow()
|
{
|
DataContext = this;
|
Changed = false;
|
InitializeComponent();
|
LoadSteps();
|
}
|
|
private void LoadSteps()
|
{
|
Steps = new ObservableCollection<ITypeData>(StepTypeLoader.Steps.Where(e => e.GetAttribute<PrototypeAttribute>() != null).ToList());
|
CustomSteps = new ObservableCollection<AdapterData>(StepTypeLoader.CustomSteps);
|
}
|
|
private void HandleDoubleClick(object sender, MouseButtonEventArgs e)
|
{
|
TargetType = ((ListViewItem)e.Source).DataContext;
|
DialogResult = true;
|
this.Close();
|
}
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
{
|
var btn = sender as Button;
|
switch (btn.Content)
|
{
|
case "新增":
|
TryAddNewAdapter();
|
break;
|
case "复制":
|
TryCopyAdapter();
|
break;
|
}
|
}
|
|
private void TryAddNewAdapter()
|
{
|
if (TargetType == null)
|
{
|
return;
|
}
|
try
|
{
|
if (TargetType is ITypeData type)
|
{
|
var setting = new AdapterSetting
|
{
|
Owner = this
|
};
|
setting.Open(type, CustomSteps);
|
}
|
else if (TargetType is AdapterData data)
|
{
|
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
private void TryCopyAdapter()
|
{
|
if (TargetType == null)
|
{
|
return;
|
}
|
try
|
{
|
if (TargetType is AdapterData data)
|
{
|
TapSerializer serializer = new TapSerializer();
|
ITestStep step = (ITestStep)serializer.DeserializeFromString(data.Xml, TypeData.FromType(typeof(ITestStep)));
|
|
var setting = new AdapterSetting
|
{
|
Owner = this
|
};
|
setting.Open(step, CustomSteps);
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
}
|
}
|