aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs')
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs180
1 files changed, 39 insertions, 141 deletions
diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs
index 94f263be7..dcbc35f60 100644
--- a/Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs
+++ b/Software/Visual_Studio/Tango.SharedUI/Controls/MultiSelectComboBox.cs
@@ -34,35 +34,6 @@ namespace Tango.SharedUI.Controls
}
}
- interface IMultiSelectComboBoxItem
- {
- string Text { get; set; }
- }
- public class MultiSelectComboBoxItem : IMultiSelectComboBoxItem
- {
- public string Text { get; set; }
- public MultiSelectComboBoxItem(string text)
- {
- Text = text;
- }
- public override string ToString()
- {
- return Text;
- }
- }
- public class MultiSelectComboBoxSearchItem : IMultiSelectComboBoxItem
- {
- public string Text { get; set; }
- public MultiSelectComboBoxSearchItem(string text = "")
- {
- Text = text;
- }
- public override string ToString()
- {
- return Text;
- }
- }
-
[TemplatePart(Name = MultiSelectComboBox.PartEditor, Type = typeof(TextBox))]
[TemplatePart(Name = MultiSelectComboBox.PartPopup, Type = typeof(Popup))]
public class MultiSelectComboBox : Control
@@ -83,9 +54,9 @@ namespace Tango.SharedUI.Controls
public MultiSelectComboBox() : base()
{
SelectedItemsList = new ObservableCollection<object>();
- RemoveAllCommand = new RelayCommand((() => SelectedItemsList.Clear()), () => SelectedItemsList != null && SelectedItemsList.Count > 0);
+ RemoveAllCommand = new RelayCommand(RemoveAllSelectedItems, () => SelectedItemsList != null && SelectedItemsList.Count > 1);
RemoveItemCommand = new RelayCommand<MultiSelectComboBoxItem>((item) => SelectedItemsList.Remove(item), () => SelectedItemsList != null);
- AddItemCommand = new RelayCommand<string>((item) => SelectedItemsList.Add(new MultiSelectComboBoxItem(item)));
+ AddItemCommand = new RelayCommand<string>((item) => SelectedItemsList.Insert(SelectedItemsList.Count-1, new MultiSelectComboBoxItem(item)));
SearchText = new MultiSelectComboBoxSearchItem();
Loaded += MultiSelectComboBox_Loaded;
_isLoaded = false;
@@ -120,14 +91,6 @@ namespace Tango.SharedUI.Controls
set { _fetchTimer = value; }
}
- //private SelectionAdapter _selectionAdapter;
-
- //public SelectionAdapter SelectionAdapter
- //{
- // get { return _selectionAdapter; }
- // set { _selectionAdapter = value; }
- //}
-
public ObservableCollection<object> SelectedItemsList
{
get { return (ObservableCollection<object>)GetValue(SelectedItemsListProperty); }
@@ -175,8 +138,9 @@ namespace Tango.SharedUI.Controls
public MultiSelectComboBoxSearchItem SearchText
{
get { return _searchText; }
- set {_searchText = value;
- RaisePropertyChanged("SearchText");
+ set
+ {
+ _searchText = value;
OnTextChanged();
}
}
@@ -206,9 +170,11 @@ namespace Tango.SharedUI.Controls
Editor.TextChanged += OnEditorTextChanged;
Editor.PreviewKeyDown += OnEditorKeyDown;
Editor.LostFocus += OnEditorLostFocus;
+ Editor.GotFocus += OnEditorGotFocus;
}
}
}
+ this.GotFocus += SelTextBox_GotFocus;
}
}
}
@@ -220,24 +186,10 @@ namespace Tango.SharedUI.Controls
if (String.IsNullOrEmpty(SearchText.Text))
SearchItemsList.Filter = null;
else
- SearchItemsList.Filter = new Predicate<object>(o => ((string)o == SearchText.Text));
+ SearchItemsList.Filter = new Predicate<object>(o => (((string)o).ToLower().Contains(SearchText.Text.ToLower())));
}
}
/// <summary>
- /// Occurs when a property has changed.
- /// </summary>
- public event PropertyChangedEventHandler PropertyChanged;
-
- /// <summary>
- /// Raises the property changed event.
- /// </summary>
- /// <param name="propName">Name of the property.</param>
- protected virtual void RaisePropertyChanged(String propName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
- }
-
- /// <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()
@@ -247,31 +199,9 @@ namespace Tango.SharedUI.Controls
SelectedItemsList = new ObservableCollection<object>();
SelectedItemsList.Add(SearchText);
-
SearchItemsList = new ListCollectionView(this.Items);
-
- //DataTemplate temp = Template.FindName("SearchItem", this) as DataTemplate;
- //Editor = Template.FindName(PartEditor, this) as TextBox;
Popup = Template.FindName(PartPopup, this) as Popup;
- //ItemsSelector = Template.FindName(PartSelector, this) as Selector;
- //_partSelectedContent = Template.FindName("PART_SelectedContent", this) as ContentControl;
- // BindingEvaluator = new BindingEvaluator(new Binding(DisplayMember));
-
- if (Editor != null)
- {
- Editor.TextChanged += OnEditorTextChanged;
- Editor.PreviewKeyDown += OnEditorKeyDown;
- Editor.LostFocus += OnEditorLostFocus;
- Editor.Focus();
-
- //if (SelectedItem != null)
- //{
- // Editor.Text = BindingEvaluator.Evaluate(SelectedItem);
- //}
-
- }
-
- this.GotFocus += SelTextBox_GotFocus;
+
if (Popup != null)
{
@@ -279,25 +209,6 @@ namespace Tango.SharedUI.Controls
Popup.Opened += OnPopupOpened;
Popup.Closed += OnPopupClosed;
}
- //if (ItemsSelector != null)
- //{
- // SelectionAdapter = new SelectionAdapter(ItemsSelector);
- // SelectionAdapter.Commit += OnSelectionAdapterCommit;
- // SelectionAdapter.Cancel += OnSelectionAdapterCancel;
- // SelectionAdapter.SelectionChanged += OnSelectionAdapterSelectionChanged;
- // ItemsSelector.PreviewMouseDown += ItemsSelector_PreviewMouseDown;
- //}
-
- //_isUpdatingText = false;
-
- //ItemsControl iControl = FindName("asd") as ItemsControl;
- //iControl.ItemContainerGenerator.ItemsChanged += ItemContainerGenerator_ItemsChanged;
- //iControl.ItemContainerGenerator.ContainerFromItem(null);
-
- //for (int i = 0; i < iControl.Items.Count; i++)
- //{
- // FrameworkElement a = iControl.ItemContainerGenerator.ContainerFromIndex(i) as FrameworkElement;
- //}
}
private void OnEditorTextChanged(object sender, TextChangedEventArgs e)
@@ -310,38 +221,24 @@ namespace Tango.SharedUI.Controls
}
FetchTimer.IsEnabled = false;
FetchTimer.Stop();
- // SetSelectedItem(null);
- if (Editor.Text.Length > 0)
- {
- // IsLoading = true;
- IsToggleChecked = true;
- // ItemsSelector.ItemsSource = null;
- FetchTimer.IsEnabled = true;
- FetchTimer.Start();
- }
- else
- {
- IsToggleChecked = false;
- }
+ IsToggleChecked = true;
+
+ FetchTimer.IsEnabled = true;
+ FetchTimer.Start();
+
}
private void OnFetchTimerTick(object sender, EventArgs e)
{
FetchTimer.IsEnabled = false;
FetchTimer.Stop();
+ SearchText.Text = Editor.Text;
+ OnTextChanged();
}
private void OnEditorKeyDown(object sender, KeyEventArgs e)
{
- //if (SelectionAdapter != null)
- {
- if (IsToggleChecked)
- {
- // SelectionAdapter.HandleKeyDown(e);
- }
- else
- IsToggleChecked = e.Key == Key.Down || e.Key == Key.Up;
- }
+ IsToggleChecked = true;
}
private void OnEditorLostFocus(object sender, RoutedEventArgs e)
@@ -357,33 +254,20 @@ namespace Tango.SharedUI.Controls
Editor?.Focus();
}
- private void OnPopupOpened(object sender, EventArgs e)
- {
- //ItemsSelector.SelectedItem = SelectedItem;
- }
- private void OnPopupClosed(object sender, EventArgs e)
+ private void OnEditorGotFocus(object sender, RoutedEventArgs e)
{
- OnSelectionAdapterCommit();
-
+ IsToggleChecked = true;
}
- private void ItemContainerGenerator_ItemsChanged(object sender, System.Windows.Controls.Primitives.ItemsChangedEventArgs e)
+
+ private void OnPopupOpened(object sender, EventArgs e)
{
}
- private void OnSelectionAdapterCommit()
+ private void OnPopupClosed(object sender, EventArgs e)
{
IsToggleChecked = false;
- // if (ItemsSelector.SelectedItem != null)
- // {
- // SelectedItem = ItemsSelector.SelectedItem;
- // _isUpdatingText = true;
- // Editor.Text = GetDisplayText(ItemsSelector.SelectedItem);
- // SetSelectedItem(ItemsSelector.SelectedItem);
- // _isUpdatingText = false;
- // IsDropDownOpen = false;
- // }
- }
+ }
#region Commands
/// <summary>
/// The remove all command property for clear SelectedItemsList
@@ -405,15 +289,29 @@ namespace Tango.SharedUI.Controls
private set { SetValue(RemoveItemCommandProperty, value); }
}
-
+ /// <summary>
+ /// The add item to SelectedItemsList command property
+ /// </summary>
public static DependencyProperty AddItemCommandProperty = DependencyProperty.Register("AddItemCommand", typeof(RelayCommand<string>), typeof(MultiSelectComboBox));
public RelayCommand<string> AddItemCommand
{
get { return (RelayCommand<string>)GetValue(AddItemCommandProperty); }
private set { SetValue(AddItemCommandProperty, value); }
}
+
+ /// <summary>
+ /// Removes all selected items.
+ /// </summary>
+ private void RemoveAllSelectedItems()
+ {
+ int index = SelectedItemsList.Count - 2;
+ while (index >= 0)
+ {
+ SelectedItemsList.RemoveAt(index--);
+ }
+ }
#endregion
-
+
}
}