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
{
///
/// Interaction logic for RealTimeGraphControl.xaml
///
public partial class RealTimeGraphMultiControl : UserControl , IRealTimeGraph
{
private Grid headerGrid;
#region Properties
///
/// Gets or sets the name of the sensor.
///
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));
///
/// Gets or sets the sensor units.
///
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));
///
/// Gets or sets the inner real-time graph control.
///
public RealTimeGraphExBase InnerGraph { get; set; }
///
/// Gets or sets the inner graph controller.
///
public GraphControllerBase Controller { get; set; }
private bool _enableToolbar;
///
/// Gets or sets a value indicating whether to enable toolbar buttons.
///
public bool EnableToolBar
{
get { return _enableToolbar; }
set
{
_enableToolbar = value;
if (!value)
{
if (headerGrid != null)
{
ThicknessAnimation ani = new ThicknessAnimation();
ani.To = new Thickness(0, -35, 0, 0);
ani.Duration = TimeSpan.FromSeconds(0.2);
headerGrid.BeginAnimation(Grid.MarginProperty, ani);
}
}
}
}
#endregion
#region Events
public event EventHandler GraphRemoveButtonPressed;
public event EventHandler GraphFullScreenButtonPressed;
#endregion
public RealTimeGraphMultiControl()
{
InitializeComponent();
EnableToolBar = true;
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)
{
if (EnableToolBar)
{
Grid mainGrid = sender as Grid;
headerGrid = mainGrid.Children.OfType().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;
headerGrid = mainGrid.Children.OfType().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());
}
}
}