1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
using RealTimeGraphEx;
using RealTimeGraphEx.Controllers;
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Tango.MachineStudio.Common.Controls
{
/// <summary>
/// Interaction logic for RealTimeGraphControl.xaml
/// </summary>
public partial class RealTimeGraphMultiControl : UserControl , IRealTimeGraph
{
#region Properties
/// <summary>
/// Gets or sets the name of the sensor.
/// </summary>
public String SensorName
{
get { return (String)GetValue(SensorNameProperty); }
set { SetValue(SensorNameProperty, value); }
}
public static readonly DependencyProperty SensorNameProperty =
DependencyProperty.Register("SensorName", typeof(String), typeof(RealTimeGraphMultiControl), new PropertyMetadata(null));
/// <summary>
/// Gets or sets the sensor units.
/// </summary>
public String SensorUnits
{
get { return (String)GetValue(SensorUnitsProperty); }
set { SetValue(SensorUnitsProperty, value); }
}
public static readonly DependencyProperty SensorUnitsProperty =
DependencyProperty.Register("SensorUnits", typeof(String), typeof(RealTimeGraphMultiControl), new PropertyMetadata(null));
/// <summary>
/// Gets or sets the inner real-time graph control.
/// </summary>
public RealTimeGraphExBase InnerGraph { get; set; }
/// <summary>
/// Gets or sets the inner graph controller.
/// </summary>
public GraphControllerBase Controller { get; set; }
#endregion
#region Events
public event EventHandler GraphRemoveButtonPressed;
public event EventHandler GraphFullScreenButtonPressed;
#endregion
public RealTimeGraphMultiControl()
{
InitializeComponent();
InnerGraph = Graph;
Controller = new GraphMultiController();
}
private void OnGraphFullScreen(object sender, RoutedEventArgs e)
{
GraphFullScreenButtonPressed?.Invoke(this, new EventArgs());
}
private void Graph_MouseEnter(object sender, MouseEventArgs e)
{
Grid mainGrid = sender as Grid;
var headerGrid = mainGrid.Children.OfType<Grid>().ToList().First();
ThicknessAnimation ani = new ThicknessAnimation();
ani.To = new Thickness(0, 0, 0, 0);
ani.Duration = TimeSpan.FromSeconds(0.2);
headerGrid.BeginAnimation(Grid.MarginProperty, ani);
}
private void Graph_MouseLeave(object sender, MouseEventArgs e)
{
Grid mainGrid = sender as Grid;
var headerGrid = mainGrid.Children.OfType<Grid>().ToList().First();
ThicknessAnimation ani = new ThicknessAnimation();
ani.To = new Thickness(0, -35, 0, 0);
ani.Duration = TimeSpan.FromSeconds(0.2);
headerGrid.BeginAnimation(Grid.MarginProperty, ani);
}
private void OnGraphRemove(object sender, RoutedEventArgs e)
{
GraphRemoveButtonPressed?.Invoke(this, new EventArgs());
}
}
}
|