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
{
///
/// Steps.xaml 的交互逻辑
///
[ObservableObject]
public partial class StepWindow : Window
{
[ObservableProperty]
private ObservableCollection steps;
[ObservableProperty]
private ObservableCollection customSteps = new ObservableCollection();
[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(StepTypeLoader.Steps.Where(e => e.GetAttribute() != null).ToList());
CustomSteps = new ObservableCollection(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)
{
}
}
}
}