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 { /// /// Interaction logic for ucNode.xaml /// 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; } } }