ucNode.xaml.cs 5.79 KB
using RoboforkApp.Entities;
using RoboforkApp.Services;
using RoboforkApp.View;
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.Navigation;
using System.Windows.Shapes;

namespace RoboforkApp
{
    /// <summary>
    /// Interaction logic for ucNode.xaml
    /// </summary>
    public partial class ucNode : UserControl
    {
        public ucNode()
        {
            InitializeComponent();
        }

        private bool _isFocus = false;
        private bool _isDragDelta = false;
        public Robofork15Demo _dataNode;

        public static readonly DependencyProperty buttTextProperty =
        DependencyProperty.Register("txtNode", typeof(String),
        typeof(ucNode), new FrameworkPropertyMetadata(string.Empty));

        public static readonly DependencyProperty btnWidthProperty =
        DependencyProperty.Register("btnWidth", typeof(double),
        typeof(ucNode), new FrameworkPropertyMetadata(10.0));

        public static readonly DependencyProperty btnHeightProperty =
        DependencyProperty.Register("btnHeight", typeof(double),
        typeof(ucNode), new FrameworkPropertyMetadata(10.0));

        public static readonly DependencyProperty coordStringProperty =
        DependencyProperty.Register("coordString", typeof(String),
        typeof(ucNode), new FrameworkPropertyMetadata(string.Empty));

        public static readonly DependencyProperty fillColorProperty =
        DependencyProperty.Register("fillColor", typeof(String),
        typeof(ucNode), new FrameworkPropertyMetadata("Blue"));

        public static readonly DependencyProperty NameNodeProperty =
        DependencyProperty.Register("NameNode", typeof(String),
        typeof(ucNode), new FrameworkPropertyMetadata(string.Empty));

        public String NameNode
        {
            get { return GetValue(NameNodeProperty).ToString(); }
            set { SetValue(NameNodeProperty, value); }
        }
      
        public String txtNode
        {
            get { return GetValue(buttTextProperty).ToString(); }
            set { SetValue(buttTextProperty, value); }
        }

        public double btnWidth
        {
            get { return (double)GetValue(btnWidthProperty); }
            set { SetValue(btnWidthProperty, value); }

        }

        public double btnHeight
        {
            get { return (double)GetValue(btnHeightProperty); }
            set { SetValue(btnHeightProperty, value); }

        }
        public String coordString
        {
            get { return GetValue(coordStringProperty).ToString(); }
            set { SetValue(coordStringProperty, value); }
        }

        public String fillColor
        {
            get { return GetValue(fillColorProperty).ToString(); }
            set { SetValue(fillColorProperty, value); }
        }

        public bool IsFocus
        {
            get { return _isFocus; }
            set { _isFocus = value; }
        }

        public bool IsDragDelta
        {
            get { return _isDragDelta; }
            set { _isDragDelta = value; }
        }

        private void tmbThumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
        {

            if (_isDragDelta)
            {
                double left = Canvas.GetLeft(this);
                double top = Canvas.GetTop(this);
                if (0 < (top + e.VerticalChange)
                    && (top + e.VerticalChange) < (1000 - btnHeight))
                {
                    Canvas.SetTop(this, top + e.VerticalChange);

                    if (_dataNode != null)
                        _dataNode.NodePos_y = Math.Round(_dataNode.NodePos_y + e.VerticalChange, 2);
                }
                if (0 < (left + e.HorizontalChange)
                    && (left + e.HorizontalChange) < (1000 - btnWidth))
                {
                    Canvas.SetLeft(this, left + e.HorizontalChange);

                    if (_dataNode != null)
                        _dataNode.NodePos_x = Math.Round(_dataNode.NodePos_x + e.HorizontalChange, 2);
                }

                if (!DesignerCanvas.LoadDBFlag)
                {                
                    DesignerCanvas.DragDeltaFlag = true;
                }

                //UpdateCoordString(left, top);
            }
        }

        private void UpdateCoordString(double left, double top)
        {
            coordString = "(" + Math.Round((left + btnWidth / 2), 2) + "," + Math.Round((top + btnHeight / 2), 2) + ")";
        }

        private void tmbThumb_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
        {
            coordString = NameNode;

            // Update to DB
            if (DesignerCanvas.LoadDBFlag)
            { 
                Robofork15DemoService service = new Robofork15DemoService();
                service.ModifyRobofork15Demo(_dataNode);
            }
        }

        private void tmbThumb_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (!_isDragDelta)
                return;

            // Update to DB
            if(DesignerCanvas.LoadDBFlag){
                UpdateNodeView updateNode = new UpdateNodeView();
                updateNode.txtAngle.Text = _dataNode.NodeVehAng.ToString();
                updateNode.txtSpeed.Text = _dataNode.NodeVehSpd.ToString();
                updateNode.txtHight.Text = _dataNode.NodeLftHeight.ToString();
                updateNode._dataNode = this._dataNode;
                updateNode.ShowDialog();
                return;
            }

            DesignerCanvas.EditNodeFlag = true;
        }
    }
}