aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Navigation/UsersAndRolesNavigationView.cs
blob: 1e266926ec42fa0ecab8707b5bbcc92706cc9535 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tango.MachineStudio.UsersAndRoles.Navigation
{
    public enum UsersAndRolesNavigationView
    {
        OrganizationSelectionView,
        OrganizationManagementView,
        UserManagementView,
    }
}
>System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.SharedUI.Helpers; namespace Tango.Touch.Controls { [TemplatePart(Name = PART_Rectangle, Type = typeof(Rectangle))] public class TouchNavigationLinks : ListBox { private const string PART_Rectangle = "PART_Rectangle"; private Line _line; private Object _lastSelectedItem; static TouchNavigationLinks() { DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchNavigationLinks), new FrameworkPropertyMetadata(typeof(TouchNavigationLinks))); } public TouchNavigationLinks() { SelectionChanged += NavigationLinks_SelectionChanged; Loaded += (_, __) => MoveLineToSelectedItem(); } public override void OnApplyTemplate() { _line = GetTemplateChild(PART_Rectangle) as Line; } private void NavigationLinks_SelectionChanged(object sender, SelectionChangedEventArgs e) { MoveLineToSelectedItem(); } private void MoveLineToSelectedItem() { if (SelectedItem != null) { var container = ItemContainerGenerator.ContainerFromItem(SelectedItem) as FrameworkElement; ContentPresenter presenter = container.FindChild<ContentPresenter>().FindChild<ContentPresenter>(); if (presenter != null) { Point relativePoint = presenter.TransformToAncestor(this).Transform(new Point(0, 0)); double width = presenter.ActualWidth; if (_lastSelectedItem != null && Items.IndexOf(SelectedItem) > Items.IndexOf(_lastSelectedItem)) { DoubleAnimation aniX2 = new DoubleAnimation(); aniX2.To = relativePoint.X + width; aniX2.Duration = TimeSpan.FromSeconds(0.2); _line.BeginAnimation(Line.X2Property, aniX2); DoubleAnimation aniX1 = new DoubleAnimation(); aniX1.To = relativePoint.X; aniX1.BeginTime = TimeSpan.FromSeconds(0.2); aniX1.Duration = TimeSpan.FromSeconds(0.1); _line.BeginAnimation(Line.X1Property, aniX1); } else { DoubleAnimation aniX1 = new DoubleAnimation(); aniX1.To = relativePoint.X; aniX1.Duration = TimeSpan.FromSeconds(0.2); _line.BeginAnimation(Line.X1Property, aniX1); DoubleAnimation aniX2 = new DoubleAnimation(); aniX2.To = relativePoint.X + width; aniX2.BeginTime = TimeSpan.FromSeconds(0.2); aniX2.Duration = TimeSpan.FromSeconds(0.1); _line.BeginAnimation(Line.X2Property, aniX2); } } } _lastSelectedItem = SelectedItem; } } }