using BeDesignerSCADA.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace BeDesignerSCADA.View
{
///
/// JsEditWindow.xaml 的交互逻辑
///
public partial class JsEditWindow : Window
{
public JsEditWindow()
{
InitializeComponent();
Owner = Application.Current.MainWindow;
Closing += (s, e) => { e.Cancel = true; Hide(); };
}
public static JsEditWindow Instance { get; } = new JsEditWindow();
public static string ShowEdit(string script, List selectItems)
{
// 获取所有控件的可用属性
var pros = PropertyHelper.GetCustomerControlProperty(selectItems);
Instance.Tree.ItemsSource = pros;
Instance.txtBox.Text = script;
Instance.ShowDialog();
if (Instance.IsOk)
{
return Instance.txtBox.Text;
}
else
{
return script;
}
}
public bool IsOk { get; set; }
private void CancelBtn_Click(object sender, RoutedEventArgs e)
{
IsOk = false;
Close();
}
private void ConfirmBtn_Click(object sender, RoutedEventArgs e)
{
IsOk = true;
Close();
}
private void Tree_MouseMove(object sender, MouseEventArgs e)
{
if (Tree.SelectedItem != null && e.LeftButton == MouseButtonState.Pressed)
{
DragDrop.DoDragDrop(Tree, Tree.SelectedItem, System.Windows.DragDropEffects.Copy);
}
}
private void txtBox_Drop(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Copy;
var data = ((ControlName)e.Data.GetData("BeDesignerSCADA.Common.ControlName"));
var str = $"{(data.Parent == null ? string.Empty : (data.Parent.Name + "."))}{data.Name}";
var position = txtBox.GetPositionFromPoint(e.GetPosition(txtBox));
if (position == null)
{
txtBox.Text += str;
return;
}
var offset = txtBox.Document.GetOffset(position.Value.Location);
txtBox.SelectionStart = offset;
txtBox.Document.Insert(offset, str);
}
private void txtBox_DragOver(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Copy;
}
}
}