// TODO: handle skipping non-focused components and circular changes private List <FocusableComponentDescriptor> GetFocusableComponents() { List <FocusableComponentDescriptor> list = new List <FocusableComponentDescriptor>(); ITabManagerClient fmc = _component as ITabManagerClient; if (null == fmc) { return(list); } _components = TabChildren ?? fmc.GetTabChildren(); int index = 0; _components.ForEach(delegate(DisplayListMember child) { InteractiveComponent comp = child as InteractiveComponent; // form item if (FocusManager.IsFocusCandidate(comp)) // visible & enabled & focus enabled? { list.Add(new FocusableComponentDescriptor(index, comp)); } index++; }); return(list); }
/// <summary> /// Initializes the plugin /// </summary> /// <param name="component"></param> public void Initialize(InvalidationManagerClient component) { if (_initialized) { return; } _initialized = true; //Debug.Log("TabManager init"); _component = (Component)component; ITabManagerClient tabManagerClient = component as ITabManagerClient; if (null == tabManagerClient) { return; } _components = TabChildren ?? tabManagerClient.GetTabChildren(); // gets all focusable children if (null == _circularTabs) // if not set on plugin { _circularTabs = tabManagerClient.CircularTabs; } if (null == _circularArrows) // if not set on plugin { _circularArrows = tabManagerClient.CircularArrows; } if (_components.Count > 0) { _component.AddEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler, Phases); // subscribe to keys } }