Пример #1
0
        private void AddItemsFor(NTreeViewItemCollection items, NXmlElement element)
        {
            int childCount = element.ChildrenCount;

            for (int i = 0; i < childCount; i++)
            {
                NXmlElement child = element.GetChildAt(i) as NXmlElement;
                if (child == null)
                {
                    continue;
                }

                NTreeViewItem item = CreateTreeViewItem(child);
                if (item != null)
                {
                    items.Add(item);
                    if (item.Tag is NXmlElement == false)
                    {
                        // This is a folder item, so add items for its children, too
                        AddItemsFor(item.Items, child);
                    }
                }
                else
                {
                    AddItemsFor(items, child);
                }
            }
        }
        /// <summary>
        /// Event handler for window state events (Opened, Activated, Deactivated, Closing, Closed)
        /// </summary>
        /// <param name="args"></param>
        private void OnWindowStateEvent(NEventArgs args)
        {
            if (args.EventPhase != ENEventPhase.AtTarget)
            {
                return;
            }

            NTopLevelWindow window    = (NTopLevelWindow)args.CurrentTargetNode;
            string          eventName = args.Event.Name;

            m_EventsLog.LogEvent(window.Title + " " + eventName.Substring(eventName.LastIndexOf('.') + 1));

            if (args.Event == NTopLevelWindow.ActivatedEvent)
            {
                // Select the corresponding item from the tree view
                NTreeViewItem item = (NTreeViewItem)window.Tag;
                m_TreeView.SelectedItem = item;
            }
            else if (args.Event == NTopLevelWindow.ClosedEvent)
            {
                // Remove the corresponding item from the tree view
                NTreeViewItem           item  = (NTreeViewItem)window.Tag;
                NTreeViewItemCollection items = (NTreeViewItemCollection)item.ParentNode;
                items.Remove(item);
            }
        }
Пример #3
0
        private void OnTreeViewItemMouseDown(NMouseButtonEventArgs arg)
        {
            if (arg.Cancel || arg.Button != ENMouseButtons.Right)
            {
                return;
            }

            // Mark the event as handled
            arg.Cancel = true;

            // Get the right clicked tree view item
            NTreeViewItem item = (NTreeViewItem)arg.CurrentTargetNode;

            // Create the context menu
            NMenu     contextMenu         = new NMenu();
            NMenuItem copyLinkToClipboard = new NMenuItem("Copy link to clipboard");

            copyLinkToClipboard.Click += OnCopyLinkToClipboardClick;
            copyLinkToClipboard.Tag    = item.Tag;
            contextMenu.Items.Add(copyLinkToClipboard);

            // Show the context menu
            NSplitter splitter = (NSplitter)m_TreeView.ParentNode.ParentNode;
            double    x        = splitter.X + m_TreeView.X + arg.CurrentTargetPosition.X;
            double    y        = splitter.Y + m_TreeView.Y + item.YInRootItems + arg.CurrentTargetPosition.Y;

            NPopupWindow.OpenInContext(new NPopupWindow(contextMenu), m_TreeView, new NPoint(x, y));
        }
Пример #4
0
        private static NTreeViewItem GetDefaultExampleItem(NTreeViewItem item, int maxDepth, int depth)
        {
            NXmlElement xmlElement = item.Tag as NXmlElement;

            if (xmlElement != null && xmlElement.GetAttributeValue("default") == "true")
            {
                return(item);
            }

            if (depth < maxDepth)
            {
                depth++;
                NTreeViewItemCollection items = item.Items;
                for (int i = 0, count = items.Count; i < count; i++)
                {
                    NTreeViewItem defaultItem = GetDefaultExampleItem(items[i], maxDepth, depth);
                    if (defaultItem != null)
                    {
                        return(defaultItem);
                    }
                }
            }

            return(null);
        }
Пример #5
0
        NTreeViewItem CreateTestItem(string formula)
        {
            NTreeViewItem item = new NTreeViewItem(formula);

            item.Tag = formula;
            return(item);
        }
Пример #6
0
        private static NXmlNode SerializeTreeViewItem(NTreeViewItem item)
        {
            NElementInfo elementInfo = (NElementInfo)item.Tag;

            if (elementInfo == null)
            {
                string text = ((NLabel)item.Header.Content).Text;
                return(new NXmlTextNode(ENXmlNodeType.Text, text));
            }

            // Create an XML element for the current tree view item
            NXmlElement element = new NXmlElement(elementInfo.Name);

            if (elementInfo.Attributes.Count > 0)
            {
                // Set the element's attributes
                INIterator <NKeyValuePair <string, string> > iter = elementInfo.Attributes.GetIterator();
                while (iter.MoveNext())
                {
                    element.SetAttribute(iter.Current.Key, iter.Current.Value);
                }
            }

            // Loop through the item's children
            for (int i = 0, childCount = item.Items.Count; i < childCount; i++)
            {
                element.AddChild(SerializeTreeViewItem(item.Items[i]));
            }

            return(element);
        }
Пример #7
0
        private static void UpdateTreeViewItemText(NTreeViewItem item)
        {
            NElementInfo elementInfo = item.Tag as NElementInfo;

            if (elementInfo == null)
            {
                return;
            }

            string text = elementInfo.Name;

            if (elementInfo.Attributes.Count > 0)
            {
                // Iterate through the attributes and append them to the text
                StringBuilder sb = new StringBuilder(text);
                INIterator <NKeyValuePair <string, string> > iter = elementInfo.Attributes.GetIterator();
                while (iter.MoveNext())
                {
                    sb.Append(" ");
                    sb.Append(iter.Current.Key);
                    sb.Append("=\"");
                    sb.Append(iter.Current.Value);
                    sb.Append("\"");
                }

                text = sb.ToString();
            }

            // Update the text of the given tree view item
            ((NLabel)item.Header.Content).Text = text;
        }
Пример #8
0
 void CreateTestItems(NTreeViewItem parentItem, string[] formulas)
 {
     for (int i = 0; i < formulas.Length; i++)
     {
         parentItem.Items.Add(CreateTestItem(formulas[i]));
     }
 }
Пример #9
0
        private static NTreeViewItem CreateTreeViewItem(NXmlNode node)
        {
            // Create a tree view item for the current XML node
            NTreeViewItem item;

            switch (node.NodeType)
            {
            case ENXmlNodeType.CDATA:
            case ENXmlNodeType.Comment:
            case ENXmlNodeType.Document:
                item = new NTreeViewItem(node.Name);
                break;

            case ENXmlNodeType.Declaration:
            case ENXmlNodeType.Element:
                string      text    = node.Name;
                NXmlElement element = (NXmlElement)node;
                INIterator <NKeyValuePair <string, string> > attributesIter = element.GetAttributesIterator();
                if (attributesIter != null)
                {
                    // Append the element attributes
                    StringBuilder sb = new StringBuilder(text);
                    while (attributesIter.MoveNext())
                    {
                        sb.Append(" ");
                        sb.Append(attributesIter.Current.Key);
                        sb.Append("=\"");
                        sb.Append(attributesIter.Current.Value);
                        sb.Append("\"");
                    }

                    text = sb.ToString();
                }

                item = new NTreeViewItem(text);
                break;

            case ENXmlNodeType.Text:
                item = new NTreeViewItem("Text: \"" + ((NXmlTextNode)node).Text + "\"");
                break;

            default:
                throw new Exception("New ENXmlNodeType?");
            }

            // Traverse the node's children and create a child item for each of them
            INIterator <NXmlNode> iter = node.GetChildNodesIterator();

            if (iter != null)
            {
                while (iter.MoveNext())
                {
                    NTreeViewItem childItem = CreateTreeViewItem(iter.Current);
                    item.Items.Add(childItem);
                }
            }

            // Return the created tree view item
            return(item);
        }
Пример #10
0
        /// <summary>
        /// Creates a tree view item.
        /// </summary>
        /// <param name="text"></param>
        /// <param name="icon"></param>
        /// <returns></returns>
        private NTreeViewItem CreateTreeViewItem(string text, NImage icon)
        {
            NStackPanel stack = new NStackPanel();

            stack.Direction         = ENHVDirection.LeftToRight;
            stack.HorizontalSpacing = 3;

            if (icon != null)
            {
                NImageBox imageBox = new NImageBox(icon);
                imageBox.HorizontalPlacement = ENHorizontalPlacement.Center;
                imageBox.VerticalPlacement   = ENVerticalPlacement.Center;

                stack.Add(imageBox);
            }

            if (!string.IsNullOrEmpty(text))
            {
                NLabel label = new NLabel(text);
                label.VerticalPlacement = ENVerticalPlacement.Center;
                stack.Add(label);
            }

            NTreeViewItem item = new NTreeViewItem(stack);

            item.Margins = new NMargins(0, 5);

            return(item);
        }
        private void OnTreeViewSelectedPathChanged(NValueChangeEventArgs arg)
        {
            m_DataTable.RemoveAllRows();
            m_GridView.Grid.Update();

            NTreeView     treeView     = (NTreeView)arg.CurrentTargetNode;
            NTreeViewItem selectedItem = treeView.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            // Get the resource container and the images for the selected item
            NEmbeddedResourceContainer resourceContainer = GetResourceContainer(selectedItem);
            NList <string>             images            = GetImageNames(selectedItem);

            // Populate the stack with the images in the selected resources folder
            string containerType = resourceContainer.GetType().FullName;

            for (int i = 0; i < images.Count; i++)
            {
                string resourceName = images[i];

                string imageName = resourceName.Replace("RIMG", "Image");
                NImage image     = NImage.FromResource(resourceContainer.GetResource(resourceName));
                string imageSize = image.Width.ToString(
                    CultureInfo.InvariantCulture) +
                                   " x " +
                                   image.Height.ToString(CultureInfo.InvariantCulture);
                string code = containerType + "." + imageName;

                m_DataTable.AddRow(image, imageName, imageSize, code);
            }
        }
Пример #12
0
        private static NTreeView CreateTreeView()
        {
            NTreeView treeView = new NTreeView();

            NTreeViewItem root = CreateTreeViewItem("Document");

            root.Expanded = true;
            treeView.Items.Add(root);

            NTreeViewItem book1 = CreateTreeViewItem("book");

            book1.Expanded = true;
            book1.Items.Add(CreateTreeViewItem("Author", "Gambardella, Matthew"));
            book1.Items.Add(CreateTreeViewItem("Title", "XML Developer's Guide"));
            root.Items.Add(book1);

            NTreeViewItem book2 = CreateTreeViewItem("book");

            book2.Expanded = true;
            book2.Items.Add(CreateTreeViewItem("Author", "O'Brien, Tim"));
            book2.Items.Add(CreateTreeViewItem("Title", "MSXML3: A Comprehensive Guide"));
            root.Items.Add(book2);

            return(treeView);
        }
Пример #13
0
            private static NTreeViewItem AddFile(NTreeViewItemCollection items, string name)
            {
                NTreeViewItem item = CreateItem(NResources.Image__16x16_Contacts_png, name);

                items.Add(item);
                return(item);
            }
        protected override NWidget CreateExampleContent()
        {
            // Create the tree view
            m_TreeView = new NTreeView();
            m_TreeView.HorizontalPlacement = ENHorizontalPlacement.Left;
            // Check whether the application is in touch mode and set the width of the tree view.
            bool touchMode = NApplication.Desktop.TouchMode;

            m_TreeView.PreferredWidth = touchMode ? 300 : 200;

            // Add some items
            for (int i = 0; i < 32; i++)
            {
                NTreeViewItem l1Item = CreateTreeViewItem(String.Format("Item {0}", i));
                m_TreeView.Items.Add(l1Item);

                for (int j = 0; j < 8; j++)
                {
                    NTreeViewItem l2Item = CreateTreeViewItem(String.Format("Item {0}.{1}", i, j));
                    l1Item.Items.Add(l2Item);

                    for (int k = 0; k < 2; k++)
                    {
                        NTreeViewItem l3Item = CreateTreeViewItem(String.Format("Item {0}.{1}.{2}", i, j, k));
                        l2Item.Items.Add(l3Item);
                    }
                }
            }

            // Hook to tree view events
            m_TreeView.SelectedPathChanged += new Function <NValueChangeEventArgs>(OnTreeViewSelectedPathChanged);
            return(m_TreeView);
        }
Пример #15
0
        private NTreeViewItem CreateTreeViewItem(string text)
        {
            NTreeViewItem item = new NTreeViewItem(text);

            item.Tag              = text;
            item.ExpandedChanged += new Function <NValueChangeEventArgs>(OnTreeViewItemExpandedChanged);
            return(item);
        }
Пример #16
0
        private static NTreeViewItem GetFirstExampleItem(NTreeViewItem item)
        {
            while (item.Tag is NXmlElement == false)
            {
                item = item.Items[0];
            }

            return(item);
        }
Пример #17
0
        private NTreeViewItem CreateTreeViewItem(NXmlElement element)
        {
            if (IsSingleExampleTile(element))
            {
                // This is a tile with a single example, so create only the example tree view item
                return(CreateTreeViewItem((NXmlElement)element.GetChildAt(0)));
            }

            NImage icon;
            string name = element.GetAttributeValue("name");

            if (String.IsNullOrEmpty(name))
            {
                return(null);
            }

            switch (element.Name)
            {
            case "tile":
            case "group":
            case "folder":
                icon = NResources.Image__16x16_Folders_png;
                break;

            case "example":
                icon = NResources.Image__16x16_Contacts_png;
                break;

            default:
                return(null);
            }

            NExampleTile tile = new NExampleTile(icon, name);

            tile.Status = element.GetAttributeValue("status");
            tile.Box2.VerticalPlacement = ENVerticalPlacement.Center;
            tile.Spacing = NDesign.HorizontalSpacing;

            NTreeViewItem item = new NTreeViewItem(tile);

            if (element.Name == "example")
            {
                // This is an example element
                item.Tag = element;

                if (NApplication.Platform == ENPlatform.Silverlight)
                {
                    // Handle the right click event in Silverlight to show a context menu
                    // for copying a link to the example
                    item.MouseDown += OnTreeViewItemMouseDown;
                }
            }

            return(item);
        }
        private NEmbeddedResourceContainer GetResourceContainer(NTreeViewItem item)
        {
            // Find the root item of the given item
            while (item.ParentItem != null)
            {
                item = item.ParentItem;
            }

            // Return the resource container represented by this root item
            return(m_ResourcesMap[item]);
        }
Пример #19
0
        private void OnTreeViewSelectedPathChanged(NValueChangeEventArgs args)
        {
            UpdateButtonsState();

            NTreeViewItem selectedItem = m_TreeView.SelectedItem;

            if (selectedItem != null)
            {
                m_EventsLog.LogEvent("Selected: " + selectedItem.Tag.ToString());
            }
        }
Пример #20
0
        private void OnRemoveSelectedButtonClicked(NEventArgs args)
        {
            NTreeViewItem selectedItem = m_TreeView.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            selectedItem.ParentNode.RemoveChild(selectedItem);
        }
Пример #21
0
            private static NTreeViewItem CreateItem(NImage image, string name)
            {
                NPairBox pairBox = new NPairBox(image, name);

                pairBox.Box2.VerticalPlacement = ENVerticalPlacement.Center;
                pairBox.Spacing = NDesign.HorizontalSpacing;

                NTreeViewItem item = new NTreeViewItem(pairBox);

                item.Tag = name;
                return(item);
            }
Пример #22
0
        private void OnRemoveChildrenButtonClicked(NEventArgs arg1)
        {
            NTreeViewItem selectedItem = m_TreeView.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            selectedItem.Items.RemoveAllChildren();
            m_RemoveChildrenButton.Enabled = false;
        }
Пример #23
0
        void OnTestsTreeViewSelectedPathChanged(NValueChangeEventArgs arg)
        {
            NTreeViewItem item = m_TestsTreeView.SelectedItem;

            if (item == null || item.Tag == null)
            {
                return;
            }

            m_InputTextBox.Text = item.Tag.ToString();
            EvaluateFormula();
        }
Пример #24
0
        private static NTreeViewItem CreateTreeViewItem(string name, string value)
        {
            NTreeViewItem item = new NTreeViewItem(name);

            item.Tag = new NElementInfo(name);
            if (value != null)
            {
                item.Items.Add(new NTreeViewItem(value));
            }

            return(item);
        }
Пример #25
0
        private void OnTreeViewItemExpandedChanged(NValueChangeEventArgs args)
        {
            NTreeViewItem item = (NTreeViewItem)args.TargetNode;

            if (item.Expanded)
            {
                m_EventsLog.LogEvent("Expanded: " + item.Tag.ToString());
            }
            else
            {
                m_EventsLog.LogEvent("Collapsed: " + item.Tag.ToString());
            }
        }
Пример #26
0
            private static NTreeViewItem GetItemByName(NTreeViewItemCollection items, string name)
            {
                for (int i = 0, count = items.Count; i < count; i++)
                {
                    NTreeViewItem item     = items[i];
                    string        itemName = (string)item.Tag;
                    if (itemName == name)
                    {
                        return(item);
                    }
                }

                return(null);
            }
Пример #27
0
        private NTreeViewItem CreateTreeViewItem(string text, bool hasCheckBox, bool image)
        {
            if (hasCheckBox == false && image == false)
            {
                NTreeViewItem item = new NTreeViewItem(text);
                item.Tag = text;
                return(item);
            }

            NStackPanel stack = new NStackPanel();

            stack.Direction         = ENHVDirection.LeftToRight;
            stack.HorizontalSpacing = 3;

            if (hasCheckBox)
            {
                NCheckBox checkBox = new NCheckBox();
                checkBox.VerticalPlacement = ENVerticalPlacement.Center;
                stack.Add(checkBox);
            }

            if (image)
            {
                string[] imageNames = new string[] { "Calendar", "Contacts", "Folders", "Journal", "Mail", "Notes", "Shortcuts", "Tasks" };
                int      index      = m_Random.Next(imageNames.Length);
                string   imageName  = imageNames[index];

                NImage icon = new NImage(new NEmbeddedResourceRef(NResources.Instance, "RIMG__16x16_" + imageName + "_png"));

                NImageBox imageBox = new NImageBox(icon);
                imageBox.HorizontalPlacement = ENHorizontalPlacement.Center;
                imageBox.VerticalPlacement   = ENVerticalPlacement.Center;

                stack.Add(imageBox);
            }

            NLabel label = new NLabel(text);

            label.VerticalPlacement = ENVerticalPlacement.Center;
            stack.Add(label);

            NTreeViewItem treeViewItem = new NTreeViewItem(stack);

            treeViewItem.Tag              = text;
            treeViewItem.ExpandedChanged += new Function <NValueChangeEventArgs>(OnTreeViewItemExpandedChanged);

            return(treeViewItem);
        }
        private NTreeViewItem GetOrCreateItem(NTreeViewItemCollection items, string name)
        {
            for (int i = 0, count = items.Count; i < count; i++)
            {
                NLabel label = (NLabel)items[i].Header.GetFirstDescendant(NLabel.NLabelSchema);
                if (label.Text == name)
                {
                    return(items[i]);
                }
            }

            NTreeViewItem item = new NTreeViewItem(NPairBox.Create(NResources.Image__16x16_Folders_png, name));

            items.Add(item);
            return(item);
        }
Пример #29
0
        private void OnTreeViewSelectedPathChanged(NValueChangeEventArgs arg)
        {
            // Close the old example
            CloseExample();

            // Load the new example
            NTreeViewItem selectedItem = ((NTreeView)arg.TargetNode).SelectedItem;

            if (selectedItem != null)
            {
                NXmlElement element = selectedItem.Tag as NXmlElement;
                if (element != null)
                {
                    LoadExample(element);
                }
            }
        }
Пример #30
0
        private NTreeViewItem GetDefaultOrFirstExampleItem()
        {
            // Find the default tree view item
            NTreeViewItemCollection items = m_TreeView.Items;

            for (int i = 0, count = items.Count; i < count; i++)
            {
                NTreeViewItem defaultItem = GetDefaultExampleItem(items[i], 1, 0);
                if (defaultItem != null)
                {
                    return(defaultItem);
                }
            }

            // There isn't a default example, so return the first one
            return(GetFirstExampleItem(items[0]));
        }