public ControlsTree() { _controls = new LinkedList <TvControlMetadata>(); _focused = null; _componentTree = null; _indexedControls = new Dictionary <Guid, TvControlMetadata>(); }
public void InsertAfter(TvControlMetadata cdata, int position) { if (position < 0) { throw new ArgumentException("position must be >=0", nameof(position)); } var current = _controls.NodeAt(position); _controls.AddAfter(current, cdata); _indexedControls.Add(cdata.ControlId, cdata); }
public TvControl(ISkin skin, IViewport viewport, TState initialState, string name = null) { _component = new TvComponent <TState>(initialState, name ?? $"TvControl_<$>"); Metadata = new TvControlMetadata(this, _component.ComponentId); var typename = GetType().Name.ToLowerInvariant(); var genericIdx = typename.IndexOf('`'); ControlType = genericIdx != -1 ? typename.Substring(0, genericIdx) : typename; CurrentStyle = skin.GetControlStyle(this); State = initialState; _component.AddViewport(viewport); AddElements(); }
public bool Focus(TvControlMetadata controlToFocus) { if (_focused != controlToFocus) { if (_focused != null) { _focused.Unfocus(); } controlToFocus.Focus(); _focused = controlToFocus; return(true); } return(false); }
public TvControlMetadata PreviousControl(TvControlMetadata current) { return(_controls.Find(current)?.Previous?.Value); }
public TvControlMetadata NextControl(TvControlMetadata current) { var next = _controls.Find(current)?.Next; return(next != null ? next.Value : _controls.First.Value); }
public void Remove(TvControlMetadata cdata) { _controls.Remove(cdata); _indexedControls.Remove(cdata.ControlId); }
public void Add(TvControlMetadata cdata) { _controls.AddLast(cdata); _indexedControls.Add(cdata.ControlId, cdata); }