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();
}
}
}