aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs')
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs144
1 files changed, 144 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs
new file mode 100644
index 000000000..6e3cb862f
--- /dev/null
+++ b/Software/Visual_Studio/Tango.SharedUI/Controls/AllSelectedCheckboxList.cs
@@ -0,0 +1,144 @@
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using Tango.Core.Commands;
+//using System.Collections;
+using System.Linq;
+using System.Collections;
+
+namespace Tango.SharedUI.Controls
+{
+ public class AllSelectedCheckboxList : ListBox
+ {
+ #region Properties
+
+ private ItemsControl _itemsControl;
+
+ public ItemsControl ItemsControl
+ {
+ get { return _itemsControl; }
+ set { _itemsControl = value; }
+ }
+
+ public bool? AllSelected
+ {
+ get { return (bool?)GetValue(AllSelectedProperty); }
+ set
+ {
+ SetValue(AllSelectedProperty, value);
+ }
+ }
+
+ public static readonly DependencyProperty AllSelectedProperty =
+ DependencyProperty.Register("AllSelected", typeof(bool?), typeof(AllSelectedCheckboxList), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnAllSelectedChanged)));
+
+
+ private static void OnAllSelectedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
+ {
+ AllSelectedCheckboxList l = o as AllSelectedCheckboxList;
+ var nv = e.NewValue;
+ l.AllSelectedChanged((bool?)nv);
+ }
+
+ public static DependencyProperty ClickCheckBoxCommandProperty = DependencyProperty.Register("ClickCheckBoxCommand", typeof(RelayCommand<object>), typeof(AllSelectedCheckboxList));
+ public RelayCommand<object> ClickCheckBoxCommand
+ {
+ get { return (RelayCommand<object>)GetValue(ClickCheckBoxCommandProperty); }
+ private set { SetValue(ClickCheckBoxCommandProperty, value); }
+ }
+
+ #endregion
+
+ #region "Constructors"
+
+ static AllSelectedCheckboxList()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(AllSelectedCheckboxList), new FrameworkPropertyMetadata(typeof(AllSelectedCheckboxList)));
+
+ }
+ public AllSelectedCheckboxList() : base()
+ {
+ ClickCheckBoxCommand = new RelayCommand<object>(ClickCheckBox);
+ }
+
+ /// <summary>
+ /// Clicks the CheckBox.Update Selection ListBoxitem.
+ /// </summary>
+ /// <param name="obj">The object.</param>
+ private void ClickCheckBox(object obj)
+ {
+ if (obj is ListBoxItem)
+ {
+ ListBoxItem lbItem = obj as ListBoxItem;
+ CheckBox checkBox = lbItem.FindVisualChildren<CheckBox>().FirstOrDefault();
+ if (checkBox != null)
+ {
+ bool? check = checkBox.IsChecked;
+ if (check != null)
+ {
+ lbItem.IsSelected = (bool)check;
+ }
+ }
+ }
+
+ if (SelectedItems.Count == 0)
+ {
+ AllSelected = false;
+ }
+ else if (Items.Count > 0 && SelectedItems.Count == Items.Count)
+ {
+ AllSelected = true;
+ }
+ else
+ {
+ AllSelected = null;
+ }
+ }
+
+ #endregion
+
+ #region Override
+
+ /// <summary>
+ /// When overridden in a derived class, is invoked whenever application code or internal processes call <see cref="M:System.Windows.FrameworkElement.ApplyTemplate" />.
+ /// </summary>
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+ AllSelectedChanged(AllSelected);
+
+
+
+ }
+
+ protected override void OnSelectionChanged(SelectionChangedEventArgs e)
+ {
+ base.OnSelectionChanged(e);
+ foreach(var addItem in e.AddedItems.OfType<Components.SelectedObject>())
+ {
+ addItem.IsSelected = true;
+ }
+ foreach (var removeItem in e.RemovedItems.OfType<Components.SelectedObject>())
+ {
+ removeItem.IsSelected = false;
+ }
+ }
+
+ #endregion
+
+ private void AllSelectedChanged(bool? value)
+ {
+ if (value == null)
+ return;
+ SelectionMode = SelectionMode.Multiple;
+ if (value == true)
+ {
+ SelectAll();
+ }
+ else
+ {
+ UnselectAll();
+ }
+ }
+ }
+}