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