aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/AutoComplete/MachinesProvider.cs
blob: 93ce382f0d1d6f47485988c5962f2ce643cf4c04 (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
25
26
27
28
29
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.AutoComplete.Editors;
using Tango.BL;
using Tango.BL.Entities;

namespace Tango.MachineStudio.Synchronization.AutoComplete
{
    /// <summary>
    /// Represents an auto-complete machines suggestions provider.
    /// </summary>
    /// <seealso cref="Tango.AutoComplete.Editors.ISuggestionProvider" />
    public class MachinesProvider : ISuggestionProvider
    {
        /// <summary>
        /// Gets the suggestions.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns></returns>
        public IEnumerable GetSuggestions(string filter)
        {
            return ObservablesEntitiesAdapter.Instance.Machines.Where(x => x.SerialNumber.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase)).ToList();
        }
    }
}
"w"> /// </summary> public static readonly DependencyProperty TextViewProperty = DependencyProperty.Register("TextView", typeof(TextView), typeof(AbstractMargin), new FrameworkPropertyMetadata(OnTextViewChanged)); /// <summary> /// Gets/sets the text view for which line numbers are displayed. /// </summary> /// <remarks>Adding a margin to <see cref="TextArea.LeftMargins"/> will automatically set this property to the text area's TextView.</remarks> public TextView TextView { get { return (TextView)GetValue(TextViewProperty); } set { SetValue(TextViewProperty, value); } } static void OnTextViewChanged(DependencyObject dp, DependencyPropertyChangedEventArgs e) { AbstractMargin margin = (AbstractMargin)dp; margin.wasAutoAddedToTextView = false; margin.OnTextViewChanged((TextView)e.OldValue, (TextView)e.NewValue); } // automatically set/unset TextView property using ITextViewConnect bool wasAutoAddedToTextView; void ITextViewConnect.AddToTextView(TextView textView) { if (this.TextView == null) { this.TextView = textView; wasAutoAddedToTextView = true; } else if (this.TextView != textView) { throw new InvalidOperationException("This margin belongs to a different TextView."); } } void ITextViewConnect.RemoveFromTextView(TextView textView) { if (wasAutoAddedToTextView && this.TextView == textView) { this.TextView = null; Debug.Assert(!wasAutoAddedToTextView); // setting this.TextView should have unset this flag } } TextDocument document; /// <summary> /// Gets the document associated with the margin. /// </summary> public TextDocument Document { get { return document; } } /// <summary> /// Called when the <see cref="TextView"/> is changing. /// </summary> protected virtual void OnTextViewChanged(TextView oldTextView, TextView newTextView) { if (oldTextView != null) { oldTextView.DocumentChanged -= TextViewDocumentChanged; } if (newTextView != null) { newTextView.DocumentChanged += TextViewDocumentChanged; } TextViewDocumentChanged(null, null); } void TextViewDocumentChanged(object sender, EventArgs e) { OnDocumentChanged(document, TextView != null ? TextView.Document : null); } /// <summary> /// Called when the <see cref="Document"/> is changing. /// </summary> protected virtual void OnDocumentChanged(TextDocument oldDocument, TextDocument newDocument) { document = newDocument; } } }