示例#1
0
        /// <inheritdoc/>
        protected override void UpdateViewsHolder(FileSystemEntryViewsHolder newOrRecycled)
        {
            // Initialize the views from the associated model
            IHierarchyNodeModel model = _Params.FlattenedVisibleHierarchy[newOrRecycled.ItemIndex];

            newOrRecycled.UpdateViews(model);
        }
示例#2
0
        void UpdateHeaderViews(IHierarchyNodeViewsHolder header, IHierarchyNodeModel model)
        {
            int prevDepth = model.Depth;

            if (_HeaderFixedPadding)
            {
                model.Depth = 1;
            }

            header.UpdateViews(model);

            if (_HeaderFixedPadding)
            {
                model.Depth = prevDepth;
            }
        }
示例#3
0
        public void UpdateViews(IHierarchyNodeModel model)
        {
            FileSystemEntryModel modelCasted = model as FileSystemEntryModel;

            titleText.text = modelCasted.Title;
            bool isDir = modelCasted.IsDirectory();

            _FoldoutButton.interactable = isDir;
            _DirectoryIconImage.gameObject.SetActive(isDir);
            _FileIconImage.gameObject.SetActive(!isDir);
            foldoutArrowImage.gameObject.SetActive(isDir);
            if (isDir)
            {
                foldoutArrowImage.rectTransform.localRotation = Quaternion.Euler(0, 0, modelCasted.Expanded ? -90 : 0);
            }

            _RootLayoutGroup.padding.left = 25 * modelCasted.Depth;             // the higher the depth, the higher the padding
        }
示例#4
0
        void ManageHeader(IHierarchyNodeViewsHolder header, IHierarchyNodeViewsHolder firstVH, IHierarchyNodeViewsHolder secondVH)
        {
            var firstAsAbstractVH           = firstVH as AbstractViewsHolder;
            int itemIndex                   = firstVH.ItemIndex;
            var firstVisibleItemModel       = _Params.FlattenedVisibleHierarchy[itemIndex];
            var parentDirOfFirstVisibleItem = firstVisibleItemModel.Parent;

            if (firstVisibleItemModel.IsDirectory() && firstVisibleItemModel.Expanded)
            {
                if (_CurrentHeaderDirModel == null || _CurrentHeaderDirModel != firstVisibleItemModel)
                {
                    _CurrentHeaderDirModel = firstVisibleItemModel;
                    UpdateHeaderViews(header, _CurrentHeaderDirModel);
                }

                float amountBeforeViewport = -_HierarchyOSA.GetItemRealInsetFromParentStart(firstAsAbstractVH.root);
                //Debug.Log(amountBeforeViewport);
                bool beforeViewport = amountBeforeViewport > 0;
                if (beforeViewport)
                {
                    ActivateVH(header);
                    UpdateHeaderViews(header, _CurrentHeaderDirModel);
                    SetHeaderInset(header, 0f);
                }
                else
                {
                    DeactivateVH(header);
                }
            }
            else
            {
                //Debug.Log(firstVisibleItemModel.title + ", " + firstVisibleItemModel.IsDirectory + ", " + firstVisibleItemModel.depth + ", parent= " + (parentDirOfFirstVisibleItem == null ? "null" : parentDirOfFirstVisibleItem.title + ", d " + parentDirOfFirstVisibleItem.depth));
                if (parentDirOfFirstVisibleItem == null || parentDirOfFirstVisibleItem.Depth == 0)
                {
                    DeactivateVH(header);
                    return;
                }

                ActivateVH(header);

                if (_CurrentHeaderDirModel != parentDirOfFirstVisibleItem)
                {
                    _CurrentHeaderDirModel = parentDirOfFirstVisibleItem;
                    UpdateHeaderViews(header, parentDirOfFirstVisibleItem);
                }

                SetHeaderInset(header, 0f);
            }

            var secondAsAbstractVH     = secondVH as AbstractViewsHolder;
            int secondItemIndex        = secondVH.ItemIndex;
            var secondVisibleItemModel = _Params.FlattenedVisibleHierarchy[secondItemIndex];

            if (secondVisibleItemModel.IsDirectory())
            {
                bool secondIsSameDepth = secondVisibleItemModel.Depth == _CurrentHeaderDirModel.Depth;

                if (!secondIsSameDepth)
                {
                    if (!secondVisibleItemModel.Expanded)
                    {
                        return;
                    }

                    if (secondVisibleItemModel.Parent != _CurrentHeaderDirModel)
                    {
                        bool secondIsSmallerDepth = secondVisibleItemModel.Depth < _CurrentHeaderDirModel.Depth;
                        if (!secondIsSmallerDepth)
                        {
                            return;
                        }
                    }
                }

                float secondItemInset = _HierarchyOSA.GetItemRealInsetFromParentStart(secondAsAbstractVH.root);
                if (secondItemInset < 0)                 // wait for positions to be fixed
                {
                    return;
                }

                var layoutInfo         = _HierarchyOSA.GetLayoutInfoReadonly();
                var headerAsAbstractVH = header as AbstractViewsHolder;
                var size      = headerAsAbstractVH.root.rect.size[layoutInfo.hor0_vert1];
                var insetMax0 = Mathf.Min(0f, (float)(secondItemInset /*- layoutInfo.spacing*/ - size));
                SetHeaderInset(header, insetMax0);
            }
        }