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) { } } } }