private bool ShouldFilterNode(CLVBaseNode node, string filter) { bool shouldFilter = false; CLVTagNode tagNode = node as CLVTagNode; CLVComponentNode componentNode = node as CLVComponentNode; if (tagNode != null) { if (FilterBy == FilterType.Component) { tagNode.Children.Filter = ApplyFilter; if (tagNode.Children.IsEmpty) { shouldFilter = true; } } else { shouldFilter = !MatchLabel(tagNode, filter); } } else if (componentNode != null) { if (FilterBy == FilterType.Component) { shouldFilter = !MatchLabel(componentNode, filter); } } return(shouldFilter); }
/// <summary> /// The method checks if node should be filtered based on io spec filter. It is used in ApplyFilter. /// If node does not have matching input/outputs it should be filtered out. /// </summary> /// <param name="node">The node.</param> /// <returns>true, if node should be filtered out, false, otherwise</returns> private bool ShouldFilterNodeBasedOnIoSpecFilter(CLVBaseNode node) { bool shouldFilter = false; //apply only to component nodes (not tag nodes) CLVComponentNode componentNode = node as CLVComponentNode; if (componentNode != null) { //if there are any io spec filters if (IoSpecFilters.Count > 0) { //get component or composite component definition IMetadataWithIOSpecDefinition compDef = componentNode.Component as IMetadataWithIOSpecDefinition; // check each io spec filter foreach (IOSpecFilter filter in IoSpecFilters) { //that is not empty if (filter.IsEmpty == false) { if (compDef != null) { //proceed with filtering if (filter.RequiresInput) { //compare the full type (not friendly name) bool match = compDef.IOSpecDefinition.Input.Any(item => item.Value.Type.Equals(filter.FilterByDataType.Value)); if (match == false) { shouldFilter = true; break; } } if (filter.RequiresOutput) { //compare the full type (not friendly name) bool match = compDef.IOSpecDefinition.Output.Any(item => item.Value.Type.Equals(filter.FilterByDataType.Value)); if (match == false) { shouldFilter = true; break; } } } else { //if it was not component metadefinition automatically filter it out (since it has not any input, output) //we check it at this stage, to not exclude it, when the filters are empty shouldFilter = true; break; //just return } } //filter.IsEmpty } // foreach loop } // count > 0 } // component != null return(shouldFilter); }
private void BuildTagsHierarchy() { foreach (var component in m_componentsLibraryViewModel.ComponentsCollection) { var node = new CLVComponentNode(component, this); m_componentNodeCollection.Add(node); node.AddTag("All Components"); //if (component.Tags != null) //{ // component.Tags.TagAdded += new EventHandler<Core.Components.TagChangedEventArgs>(Tags_TagAdded); // component.Tags.TagRemoved += new EventHandler<Core.Components.TagChangedEventArgs>(Tags_TagRemoved); //} node.PropertyChanged += new PropertyChangedEventHandler(ComponentNodePropertyChanged); } }
private bool FilterComponents(object item) { bool show = false; CLVComponentNode node = item as CLVComponentNode; if (node != null) { show = true; if (!string.IsNullOrWhiteSpace(m_lowercaseComponentFilter)) { show = node.Label.ToLower().Contains(m_lowercaseComponentFilter); } if (show == false) { node.IsSelected = false; } } return(show); }
private void AddNodeTag(MetadataDefinition component) { var node = new CLVComponentNode(component, this); node.AddTag("All Components"); }