aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-09 02:27:58 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-09 02:27:58 +0200
commiteb793f20dc078a304a423a481e5bb0eddce71471 (patch)
treeca7b60be7b2d588875017b3885ba3d3cd3f893f9 /Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
parent1b5d452cccd3be79c226f1438c3efe7abe786017 (diff)
parentae9cdafa944db884bf878f36a7a328c53a7588a8 (diff)
downloadTango-eb793f20dc078a304a423a481e5bb0eddce71471.tar.gz
Tango-eb793f20dc078a304a423a481e5bb0eddce71471.zip
MERGE
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs109
1 files changed, 109 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
new file mode 100644
index 000000000..9a259482b
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
@@ -0,0 +1,109 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+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.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Tango.Touch.Controls;
+
+namespace Tango.PPC.Maintenance.Controls
+{
+ public class ButtonState : DependencyObject
+ {
+ public Object Value
+ {
+ get { return (Object)GetValue(ValueProperty); }
+ set { SetValue(ValueProperty, value); }
+ }
+ public static readonly DependencyProperty ValueProperty =
+ DependencyProperty.Register("Value", typeof(Object), typeof(ButtonState), new PropertyMetadata(null));
+
+ public Object Content
+ {
+ get { return (Object)GetValue(ContentProperty); }
+ set { SetValue(ContentProperty, value); }
+ }
+ public static readonly DependencyProperty ContentProperty =
+ DependencyProperty.Register("Content", typeof(Object), typeof(ButtonState), new PropertyMetadata(null));
+ }
+
+ [ContentProperty(nameof(States))]
+ public class StateTouchButton : TouchButton
+ {
+ public ObservableCollection<Object> States
+ {
+ get { return (ObservableCollection<Object>)GetValue(StatesProperty); }
+ set { SetValue(StatesProperty, value); }
+ }
+ public static readonly DependencyProperty StatesProperty =
+ DependencyProperty.Register("States", typeof(ObservableCollection<Object>), typeof(StateTouchButton), new PropertyMetadata(null, (d, e) => (d as StateTouchButton).OnStatesChanged()));
+
+ public Object SelectedState
+ {
+ get { return (Object)GetValue(SelectedStateProperty); }
+ set { SetValue(SelectedStateProperty, value); }
+ }
+ public static readonly DependencyProperty SelectedStateProperty =
+ DependencyProperty.Register("SelectedState", typeof(Object), typeof(StateTouchButton), new PropertyMetadata(null, (d, e) => (d as StateTouchButton).OnSelectedStateChanged()));
+
+ public StateTouchButton()
+ {
+ States = new ObservableCollection<object>();
+ }
+
+ private void OnStatesChanged()
+ {
+ if (States != null)
+ {
+ States.CollectionChanged -= States_CollectionChanged;
+ States.CollectionChanged += States_CollectionChanged;
+ OnSelectedStateChanged();
+ }
+ }
+
+ private void OnSelectedStateChanged()
+ {
+ if (SelectedState == null)
+ {
+ Content = null;
+ return;
+ }
+
+ if (States != null)
+ {
+ var converter = TypeDescriptor.GetConverter(SelectedState.GetType());
+ var matchingState = States.OfType<ButtonState>().ToList().FirstOrDefault(x => x.Value != null && converter.ConvertFrom(x.Value).Equals(SelectedState));
+ if (matchingState != null)
+ {
+ Content = matchingState.Content;
+ }
+ else
+ {
+ Content = null;
+ }
+ }
+ else
+ {
+ Content = null;
+ }
+ }
+
+ private void States_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ OnSelectedStateChanged();
+ }
+ }
+}