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 = 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 = (Button)sender;
|
switch (btn.Tag)
|
{
|
case "Create":
|
TryAddNewAdapter(btn.DataContext);
|
break;
|
case "Copy":
|
TryEditAdapter(btn.DataContext, false);
|
break;
|
case "Edit":
|
TryEditAdapter(btn.DataContext, true);
|
break;
|
case "Delete":
|
TryDeleteAdapter(btn.DataContext);
|
break;
|
}
|
}
|
|
private void TryAddNewAdapter(object obj)
|
{
|
if (obj == null)
|
{
|
return;
|
}
|
try
|
{
|
if (obj is ITypeData type)
|
{
|
var newStep = (ITestStep)type.CreateInstance();
|
var setting = new AdapterSetting
|
{
|
Owner = this
|
};
|
setting.Open(newStep, CustomSteps);
|
}
|
else if (obj is AdapterData data)
|
{
|
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
private void TryEditAdapter(object obj, bool isEdit)
|
{
|
if (obj == null)
|
{
|
return;
|
}
|
try
|
{
|
if (obj is AdapterData data)
|
{
|
var setting = new AdapterSetting
|
{
|
Owner = this
|
};
|
setting.Open(data, CustomSteps, isEdit);
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
private void TryDeleteAdapter(object obj)
|
{
|
if (obj == null)
|
{
|
return;
|
}
|
|
try
|
{
|
|
if (obj is AdapterData data)
|
{
|
if (MessageBox.Show($"确定要删除 [{data.Name}] 吗?", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
|
{
|
CustomSteps.Remove(data);
|
StepTypeLoader.SaveAdapterStep();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
}
|
}
|