コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        private static void OnSelectedBrushChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            TagCloudVisualNode source = d as TagCloudVisualNode;

            source.rectangleSelected.Fill = source.SelectedBrush;
        }