public PanelFillerResult RetrievePanelItems(PanelItemBase parent, RetrieveMode mode) { if (parent == null) { throw new ArgumentNullException("parent"); } var result = new PanelFillerResult(); foreach (var pair in m_Fillers) { if (pair.Value.IsParentAccepted(parent)) { if (result.ItemsType == null) { result.ItemsType = pair.Key; } try { if (mode == RetrieveMode.Sync) { pair.Value.SyncFill(parent, result.Items); } else { pair.Value.AsyncFill(parent, result.Items); } } catch (Exception ex) { Debug.Print(ex.Message); } } } return(result); }
private void UpdateThreadInvoked(IPanelModel model, PanelFillerResult fillerResult) { if (model != null) { model.SetFillerResult(fillerResult, m_ClearFilter); } }
public void SetFillerResult(PanelFillerResult fillerResult, bool clearFilter) { lock (m_Data) { m_Data.Clear(); // add ".." item if (!m_CurrentPath.IsEmptyOrRoot) { m_Data.Add(new PanelItemDoubleDot(m_CurrentPath.Peek())); } // add items from filler m_Data.AddRange(fillerResult.Items); // set current items DataType and filter if (fillerResult.ItemsType != null) { DataType = fillerResult.ItemsType.Name; } // add custom items created by user foreach (var panelItem in Items) { if (panelItem.GetType().Name == DataType) { m_Data.Add(panelItem); } } // sort m_Data.Sort(m_Comparer); if (clearFilter) { FilterText = string.Empty; } ApplyFilter(); } OnChanged(); }
private void RetrieveTwoComps() { var domain = new DomainPanelItem(new DomainRoot(), "TEST"); m_Objects.CurrentPath.Push(new DomainRoot()); m_Objects.CurrentPath.Push(domain); var filler = new Mock <IPanelFillerManager>(); var result = new PanelFillerResult(); m_Comp01 = new ComputerPanelItem(domain, "COMP01"); m_Comp02 = new ComputerPanelItem(domain, "COMP02"); result.Items.Add(m_Comp01); result.Items.Add(m_Comp02); result.ItemsType = typeof(ComputerPanelItem); filler.Setup(f => f.RetrievePanelItems(domain, RetrieveMode.Sync)).Returns(result); App.PanelFillers = filler.Object; PanelFillerResult fillerResult = m_Objects.RetrieveData(RetrieveMode.Sync, true); m_Objects.SetFillerResult(fillerResult, true); Assert.AreEqual(3, m_Objects.Count); }