aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseLeftLeadingWheelsCommand.cs
blob: b0d8c1dc58e36a39c5aa03fea66afde918b136be (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
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.PMR.Diagnostics;
using Tango.PMR.Hardware;

namespace Tango.PPC.Maintenance.Commands
{
    public class OpenCloseLeftLeadingWheelsCommand : OpenCloseMotorCommand
    {
        public OpenCloseLeftLeadingWheelsCommand() : base(
           HardwareMotorType.MotoLloading,
           MotorDirection.Backward,
           250,
           250,
           MotorState.Closed,
           "Opening left leading wheels...",
           "Closing left leading wheels...",
           "Error opening left leading wheels.",
           "Error closing left leading wheels.",
           "The left leading wheels are now opened.",
           "The left leading wheels are now closed."
           )
        {

        }
    }
}
"nc">AXmlAttributeCollection: FilteredCollection<AXmlAttribute, AXmlObjectCollection<AXmlObject>> { /// <summary> Empty unbound collection </summary> [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "InsertItem prevents modifying the Empty collection")] public static readonly AXmlAttributeCollection Empty = new AXmlAttributeCollection(); /// <summary> Create unbound collection </summary> protected AXmlAttributeCollection() {} /// <summary> Wrap the given collection. Non-attributes are filtered </summary> public AXmlAttributeCollection(AXmlObjectCollection<AXmlObject> source): base(source) {} /// <summary> Wrap the given collection. Non-attributes are filtered. Items not matching the condition are filtered. </summary> public AXmlAttributeCollection(AXmlObjectCollection<AXmlObject> source, Predicate<object> condition): base(source, condition) {} Dictionary<string, List<AXmlAttribute>> hashtable = new Dictionary<string, List<AXmlAttribute>>(); void AddToHashtable(AXmlAttribute attr) { string localName = attr.LocalName; if (!hashtable.ContainsKey(localName)) { hashtable[localName] = new List<AXmlAttribute>(1); } hashtable[localName].Add(attr); } void RemoveFromHashtable(AXmlAttribute attr) { string localName = attr.LocalName; hashtable[localName].Remove(attr); } static List<AXmlAttribute> NoAttributes = new List<AXmlAttribute>(); /// <summary> /// Get all attributes with given local name. /// Hash table is used for lookup so this is cheap. /// </summary> public IEnumerable<AXmlAttribute> GetByLocalName(string localName) { if (hashtable.ContainsKey(localName)) { return hashtable[localName]; } else { return NoAttributes; } } /// <inheritdoc/> protected override void ClearItems() { foreach(AXmlAttribute item in this) { RemoveFromHashtable(item); item.Changing -= item_Changing; item.Changed -= item_Changed; } base.ClearItems(); } /// <inheritdoc/> protected override void InsertItem(int index, AXmlAttribute item) { // prevent insertions into the static 'Empty' instance if (this == Empty) throw new NotSupportedException("Cannot insert into AXmlAttributeCollection.Empty"); AddToHashtable(item); item.Changing += item_Changing; item.Changed += item_Changed; base.InsertItem(index, item); } /// <inheritdoc/> protected override void RemoveItem(int index) { RemoveFromHashtable(this[index]); this[index].Changing -= item_Changing; this[index].Changed -= item_Changed; base.RemoveItem(index); } /// <inheritdoc/> protected override void SetItem(int index, AXmlAttribute item) { RemoveFromHashtable(this[index]); this[index].Changing -= item_Changing; this[index].Changed -= item_Changed; AddToHashtable(item); item.Changing += item_Changing; item.Changed += item_Changed; base.SetItem(index, item); } // Every item in the collection should be registered to these handlers // so that we can handle renames void item_Changing(object sender, AXmlObjectEventArgs e) { RemoveFromHashtable((AXmlAttribute)e.Object); } void item_Changed(object sender, AXmlObjectEventArgs e) { AddToHashtable((AXmlAttribute)e.Object); } } }