using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Input; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.DataContracts.ClientPartials; namespace BeWo.View.Controls { /// /// Interaktionslogik für ComboBoxTreeViewControl.xaml /// public partial class ComboBoxTreeViewControl { public double ParentWindowHeight { get { return (double) GetValue(ParentWindowHeightProperty); } set { SetValue(ParentWindowHeightProperty, value); } } public static readonly DependencyProperty ParentWindowHeightProperty = DependencyProperty.Register("ParentWindowHeight", typeof (double), typeof (ComboBoxTreeViewControl), new FrameworkPropertyMetadata(500.0)); public List TreeViewSourceList { get { return (List)GetValue(ListProperty); } set { SetValue(ListProperty, value); ShowCheckedValues(); } } public static readonly DependencyProperty ListProperty = DependencyProperty.Register("TreeViewSourceList", typeof (List), typeof (ComboBoxTreeViewControl), new FrameworkPropertyMetadata(new List())); public ComboBoxTreeViewControl() { InitializeComponent(); DataContext = this; } private void ShowCheckedValues() { string ToolTipString; GoalCount = 0; var selectedGoals = GetSelectedGoals(); bool allSelected = selectedGoals.Count == GoalCount && GoalCount > 0; ToolTipString = selectedGoals.Aggregate(string.Empty, (s, dc) => s + (dc.TypeDescription + "; ")); DeSelectAllCheckBox.IsChecked = allSelected; Imitationheader.Text = ToolTipString; if (string.IsNullOrWhiteSpace(ToolTipString)) { Imitationheader.ToolTip = null; return; } string[] splittedToolTip = ToolTipString.Split(';'); ToolTipString = string.Empty; foreach (var item in splittedToolTip.Where(x => x != " ")) { ToolTipString += item.Trim(' '); if (splittedToolTip.Where(x => x != " ").ToList().IndexOf(item) < (splittedToolTip.Count(x => x != " ") - 1)) ToolTipString += "\n"; } Imitationheader.ToolTip = ToolTipString; } private List GetSelectedGoals() { var goals = new List(); AddCheckedGoals(TreeViewSourceList, goals); return goals; } private int GoalCount; private void AddCheckedGoals(List goals, List selectedGoals) { foreach (SupportConceptGoalDC item in goals) { if (item.Children == null || item.Children.Count == 0) { //if (item.GoalEntryDC.Type.Equals(ValueListEntryType.SupportConceptGoalType) || item.GoalEntryDC.Type.Equals(ValueListEntryType.SupportConceptIndividualGoalType)) //{ GoalCount++; if (item.IsChecked) { selectedGoals.Add(item.GoalEntryDC); } //} } else { AddCheckedGoals(item.Children, selectedGoals); } } } private void OpenPopUpBtnClick(object sender, EventArgs e) { openPopup(); } private void openPopup() { TreeViewPopup.Placement = PlacementMode.RelativePoint; TreeViewPopup.PlacementTarget = Imitationheader; TreeViewPopup.VerticalOffset = Imitationheader.Height; TreeViewPopup.HorizontalOffset = 0; TreeViewPopup.MinWidth = Imitationheader.Width; TreeViewPopup.IsOpen = true; if (ParentWindowHeight == 0) ParentWindowHeight = 500; OpenPopUpBtn.IsEnabled = false; } private void PopUpClosedEvent(object sender, EventArgs eventArgs) { ShowCheckedValues(); cbtv_search.Text = string.Empty; OpenPopUpBtn.IsEnabled = true; } private void ApplyBtnClose(object sender, EventArgs e) { TreeViewPopup.IsOpen = false; } public void ResetControl() { TreeViewSourceList = new List(); Imitationheader.Text = string.Empty; Imitationheader.ToolTip = null; DeSelectAllCheckBox.IsChecked = false; } private void Tree1_OnLoaded(object sender, RoutedEventArgs e) { if (ParentWindowHeight >= TreeViewPopup.VerticalOffset) TreeViewPopup.MaxHeight = ParentWindowHeight - TreeViewPopup.VerticalOffset - ParentWindowHeight/4; } private void Bd_OnClick(object sender, RoutedEventArgs e) { ShowCheckedValues(); } private void DeSelectAllOnClick(object sender, RoutedEventArgs e) { var cb = (CheckBox)sender; if (!cb.IsChecked.HasValue) return; foreach (var item in TreeViewSourceList) { item.IsChecked = cb.IsChecked.Value; foreach (var item2 in item.Children) item2.IsChecked = cb.IsChecked.Value; } ShowCheckedValues(); } private void BdText_OnMouseDown(object sender, MouseButtonEventArgs e) { var SupportConceptGoal = ((TextBlock)sender).Tag as SupportConceptGoalDC; SupportConceptGoal.IsChecked = !SupportConceptGoal.IsChecked; ShowCheckedValues(); } } }