private IProjectTree CreateProjectItemTreeNode(
            IDependencyViewModel viewModel,
            IRule rule,
            ProjectTreeFlags?additionalFlags = null,
            ProjectTreeFlags?excludedFlags   = null)
        {
            ProjectTreeFlags flags    = FilterFlags(viewModel.Flags, additionalFlags, excludedFlags);
            string           filePath = (viewModel.OriginalModel != null && viewModel.OriginalModel.TopLevel &&
                                         viewModel.OriginalModel.Resolved)
                ? viewModel.OriginalModel.GetTopLevelId()
                : viewModel.FilePath;

            var itemContext = ProjectPropertiesContext.GetContext(
                CommonServices.Project,
                file: filePath,
                itemType: viewModel.SchemaItemType,
                itemName: filePath);

            return(TreeServices.CreateTree(
                       caption: viewModel.Caption,
                       itemContext: itemContext,
                       propertySheet: null,
                       browseObjectProperties: rule,
                       icon: viewModel.Icon.ToProjectSystemType(),
                       expandedIcon: viewModel.ExpandedIcon.ToProjectSystemType(),
                       visible: true,
                       flags: flags));
        }
Пример #2
0
        /// <summary>
        /// Updates or creates new IProjectItemTree node
        /// </summary>
        private IProjectTree CreateOrUpdateProjectItemTreeNode(
            IProjectTree node,
            IDependencyViewModel viewModel,
            IRule rule,
            ProjectTreeFlags?additionalFlags = null,
            ProjectTreeFlags?excludedFlags   = null)
        {
            if (node == null)
            {
                var flags = FilterFlags(viewModel.Flags, additionalFlags, excludedFlags);

                var itemContext = ProjectPropertiesContext.GetContext(
                    CommonServices.Project,
                    file: viewModel.FilePath,
                    itemType: viewModel.SchemaItemType,
                    itemName: viewModel.FilePath);

                node = TreeServices.CreateTree(
                    caption: viewModel.Caption,
                    itemContext: itemContext,
                    propertySheet: null,
                    visible: true,
                    browseObjectProperties: rule,
                    flags: viewModel.Flags,
                    icon: viewModel.Icon.ToProjectSystemType(),
                    expandedIcon: viewModel.ExpandedIcon.ToProjectSystemType());
            }
            else
            {
                node = UpdateTreeNode(node, viewModel, rule);
            }

            return(node);
        }
        private IProjectTree CreateProjectTreeNode(
            IDependencyViewModel viewModel,
            IRule rule,
            ProjectTreeFlags?additionalFlags = null,
            ProjectTreeFlags?excludedFlags   = null)
        {
            // For IProjectTree remove ProjectTreeFlags.Common.Reference flag, otherwise CPS would fail to
            // map this node to graph node and GraphProvider would be never called.
            // Only IProjectItemTree can have this flag
            ProjectTreeFlags flags = FilterFlags(viewModel.Flags.Except(DependencyTreeFlags.BaseReferenceFlags),
                                                 additionalFlags,
                                                 excludedFlags);
            string filePath = (viewModel.OriginalModel != null && viewModel.OriginalModel.TopLevel &&
                               viewModel.OriginalModel.Resolved)
                ? viewModel.OriginalModel.GetTopLevelId()
                : viewModel.FilePath;

            return(TreeServices.CreateTree(
                       caption: viewModel.Caption,
                       filePath: filePath,
                       visible: true,
                       browseObjectProperties: rule,
                       flags: flags,
                       icon: viewModel.Icon.ToProjectSystemType(),
                       expandedIcon: viewModel.ExpandedIcon.ToProjectSystemType()));
        }
Пример #4
0
        /// <summary>
        /// Updates or creates new IProjectTree node
        /// </summary>
        private IProjectTree CreateOrUpdateProjectTreeNode(
            IProjectTree node,
            IDependencyViewModel viewModel,
            IRule rule,
            ProjectTreeFlags?additionalFlags = null,
            ProjectTreeFlags?excludedFlags   = null)
        {
            if (node == null)
            {
                // For IProjectTree remove ProjectTreeFlags.Common.Reference flag, otherwise CPS would fail to
                // map this node to graph node and GraphProvider would be never called.
                // Only IProjectItemTree can have this flag
                var flags = FilterFlags(viewModel.Flags.Except(DependencyTreeFlags.BaseReferenceFlags),
                                        additionalFlags,
                                        excludedFlags);

                node = TreeServices.CreateTree(
                    caption: viewModel.Caption,
                    filePath: viewModel.FilePath,
                    visible: true,
                    browseObjectProperties: rule,
                    flags: flags,
                    icon: viewModel.Icon.ToProjectSystemType(),
                    expandedIcon: viewModel.ExpandedIcon.ToProjectSystemType());
            }
            else
            {
                node = UpdateTreeNode(node, viewModel, rule);
            }

            return(node);
        }