void tagCloudVisualNode_NodeActivated(TagCloudVisualNode node) { int childCount = 0; ICollection collection = node.ContentObject as ICollection; if (collection != null) { childCount = collection.Count; } if (childCount > 0) { _selectedNode = null; if (!_parents.ContainsKey(node.ContentObject)) { _parents.Add(node.ContentObject, _currentRoot); } PopulateItems(node.ContentObject); } else { if (ItemActivated != null) { ItemActivated(node.ContentObject); } } }
void tagCloudVisualNode_NodeSelected(TagCloudVisualNode node) { if (_selectedNode != null) { _selectedNode.IsSelected = false; } _selectedNode = node; if (_selectedNode != null) { _selectedNode.IsSelected = true; } if (ItemSelected != null) { ItemSelected(node == null ? null : node.ContentObject); } }
private void PopulateItems(object root) { _currentRoot = root; _panelItems.Children.Clear(); double minValue = 1; double maxValue = 0; double minPixel = 20; double maxPixel = 40; IEnumerable enumerable = _currentRoot as IEnumerable; if (enumerable != null) { IEnumerator iEnum = enumerable.GetEnumerator(); iEnum.Reset(); while (iEnum.MoveNext()) { IRelevance relevance = iEnum.Current as IRelevance; if (relevance != null) { if (relevance.Relevance != -1) { if (relevance.Relevance < minValue) { minValue = relevance.Relevance; } if (relevance.Relevance > maxValue) { maxValue = relevance.Relevance; } } } } double weightRange = maxValue - minValue; if (weightRange == 0) { weightRange = 1; } double pixelWeightScale = (maxPixel - minPixel) / weightRange; iEnum.Reset(); while (iEnum.MoveNext()) { TagCloudVisualNode tagCloudVisualNode = new TagCloudVisualNode(); tagCloudVisualNode.NodeActivated += new TagCloudVisualNode.NodeActivatedEventHandler(tagCloudVisualNode_NodeActivated); tagCloudVisualNode.NodeSelected += new TagCloudVisualNode.NodeSelectedEventHandler(tagCloudVisualNode_NodeSelected); tagCloudVisualNode.ContentObject = iEnum.Current; double relval = 1; IRelevance relevance = iEnum.Current as IRelevance; if (relevance != null) { relval = relevance.Relevance; } tagCloudVisualNode.LabelFontSize = minPixel + (((relval == -1 ? minValue : relval) - minValue) * pixelWeightScale); _panelItems.Children.Add(tagCloudVisualNode); } } buttonUpOneLevel.Visibility = _currentRoot == _originalRoot ? Visibility.Collapsed : Visibility.Visible; }
private static void OnSelectedBrushChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TagCloudVisualNode source = d as TagCloudVisualNode; source.rectangleSelected.Fill = source.SelectedBrush; }