aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Rendering/ITextViewConnect.cs
blob: 55a5c000c956c274f2bc06966497599218b1046a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)

using System;

namespace Tango.Scripting.Editors.Rendering
{
	/// <summary>
	/// Allows <see cref="VisualLineElementGenerator"/>s, <see cref="IVisualLineTransformer"/>s and
	/// <see cref="IBackgroundRenderer"/>s to be notified when they are added or removed from a text view.
	/// </summary>
	public interface ITextViewConnect
	{
		/// <summary>
		/// Called when added to a text view.
		/// </summary>
		void AddToTextView(TextView textView);
		
		/// <summary>
		/// Called when removed from a text view.
		/// </summary>
		void RemoveFromTextView(TextView textView);
	}
}
"nn">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; } } }