diff options
| author | Roy <roy.mail.net@gmail.com> | 2018-02-12 09:40:08 +0200 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2018-02-12 09:40:08 +0200 |
| commit | 2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2 (patch) | |
| tree | 53ff9fc86a9e56d5cd54a53ecddf85aa4656dd6a /Software/Visual_Studio/Tango.SharedUI/Components | |
| parent | a84ca3e4bee123600c08f8897eca5be83b3ffcf8 (diff) | |
| download | Tango-2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2.tar.gz Tango-2bef1ef7fb1d5cd57e2af3f47a648e512cfcd4f2.zip | |
Implemented motor group.
Diffstat (limited to 'Software/Visual_Studio/Tango.SharedUI/Components')
| -rw-r--r-- | Software/Visual_Studio/Tango.SharedUI/Components/SelectedObject.cs | 45 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.SharedUI/Components/SelectedObjectCollection.cs | 46 |
2 files changed, 91 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObject.cs b/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObject.cs new file mode 100644 index 000000000..f91e93b5a --- /dev/null +++ b/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObject.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core; + +namespace Tango.SharedUI.Components +{ + public class SelectedObject<T> : ExtendedObject + { + public event EventHandler IsSelectedChanged; + + private bool _isSelected; + + public bool IsSelected + { + get { return _isSelected; } + set { _isSelected = value; RaisePropertyChangedAuto(); IsSelectedChanged?.Invoke(this, new EventArgs()); } + } + + private T _data; + + public T Data + { + get { return _data; } + set { _data = value; RaisePropertyChangedAuto(); } + } + + public SelectedObject() + { + + } + + public SelectedObject(T data) : this() + { + Data = data; + } + + public SelectedObject(T data, bool selected) : this(data) + { + IsSelected = selected; + } + } +} diff --git a/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObjectCollection.cs b/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObjectCollection.cs new file mode 100644 index 000000000..c9a1a6293 --- /dev/null +++ b/Software/Visual_Studio/Tango.SharedUI/Components/SelectedObjectCollection.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.SharedUI.Components +{ + public class SelectedObjectCollection<T> : ObservableCollection<SelectedObject<T>> + { + public ObservableCollection<T> Source { get; set; } + public ObservableCollection<T> SynchedSource { get; set; } + + public SelectedObjectCollection(ObservableCollection<T> source, ObservableCollection<T> synchedSource) + { + SynchedSource = synchedSource; + Source = source; + + foreach (var item in source) + { + var selectedItem = new SelectedObject<T>(item, synchedSource.Contains(item)); + this.Add(selectedItem); + selectedItem.IsSelectedChanged += SelectedItem_IsSelectedChanged; + } + } + + private void SelectedItem_IsSelectedChanged(object sender, EventArgs e) + { + SelectedObject<T> item = sender as SelectedObject<T>; + + if (item.IsSelected) + { + if (!SynchedSource.Contains(item.Data)) + { + SynchedSource.Add(item.Data); + } + } + else + { + SynchedSource.Remove(item.Data); + } + } + } +} |
