Ejemplo n.º 1
0
        private void UpdateProvider(string name, DataBindPair value, int layer)
        {
            var me = new BindingTreeElement(name, value)
            {
                depth = layer, id = datas.Count
            };

            datas.Add(me);

            var keys = new List <string>(value.children.Keys);

            keys.Sort();

            foreach (var key in keys)
            {
                var data = value.children[key];
                UpdateProvider($"{name}.{key}", data, layer + 1);
            }
        }
Ejemplo n.º 2
0
        private void UpdateList()
        {
            datas.Clear();
            datas.Add(new BindingTreeElement("root")
            {
                depth = -1, id = -1
            });
            if (!UnityEditor.EditorApplication.isPlaying)
            {
                if (_saveData == null)
                {
                    string[] path = AssetDatabase.FindAssets("t:StaticDataBindingKeysSO");
                    if (path.Length == 0)
                    {
                        return;
                    }
                    _saveData = AssetDatabase.LoadAssetAtPath <StaticDataBindingKeysSO>(AssetDatabase.GUIDToAssetPath(path[0]));
                }
                if (_saveData == null)
                {
                    return;
                }

                var newList = new List <string>(_saveData.staticKeys);
                newList.Sort();
                int i = 0;
                foreach (var item in newList)
                {
                    var newItem = new BindingTreeElement(item);
                    newItem.id    = i++;
                    newItem.depth = item.Split('.').Length - 1;
                    datas.Add(newItem);
                }
            }
            else
            {
                if (DataBindingManager.Instance == null)
                {
                    return;
                }

                var bindMgr = DataBindingManager.Instance;
                var keys    = new List <string>(bindMgr.root.children.Keys);
                keys.Sort();
                foreach (var key in keys)
                {
                    var provider = bindMgr.root.children[key];
                    UpdateProvider(key, provider, 0);
                }
            }


            if (m_TreeView == null)
            {
                var headerState = BindingTreeView.CreateiColumnHeaderState(multiColumnTreeViewRect.width);
                if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState))
                {
                    MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState);
                }
                m_MultiColumnHeaderState = headerState;

                var multiColumnHeader = new MultiColumnHeader(headerState);
                multiColumnHeader.ResizeToFit();
                var treeModel = new TreeModel <BindingTreeElement>(datas);
                m_TreeView = new BindingTreeView(m_TreeViewState, multiColumnHeader, treeModel);
                m_TreeView.ExpandAll();
            }
            else
            {
                m_TreeView.treeModel.SetData(datas);
                m_TreeView.Reload();
            }
        }