Example #1
0
    /// <summary>
    /// 显示搜索
    /// </summary>
    private void GUISearchInfo()
    {
        if (_searchFieldArray.Length <= 0)
        {
            return;
        }
        GUILayout.BeginHorizontal(EditorGUIStyle.SearchPanelStyle, GUILayout.Height(25));
        GUI.color         = new Color(1, 1, 1, 0);
        _searchFieldIndex = EditorGUI.Popup(new Rect(15, 25, 10, 14), _searchFieldIndex, _searchFieldArray);
        GUI.color         = Color.white;
        GUI.SetNextControlName("SearchText");
        string str = GUILayout.TextField(_searchValue, "ToolbarSeachTextFieldPopup");

        if (string.IsNullOrEmpty(str) && !_isMouseInSearch)
        {
            GUI.color = new Color(0.8f, 0.8f, 0.8f);
            GUI.Label(new Rect(25, 28, 90, 12), _searchFieldArray[_searchFieldIndex], "RL Element");
            GUI.color = Color.white;
        }
        if (str != _searchValue)
        {
            _searchValue = str;
            if (!_isAdvancedSearch)
            {
                _dataList.Clear();
                _isSort = false;
                if (!string.IsNullOrEmpty(str))
                {
                    _dataList = SearchTableData.Search <Test>(_searchFieldArray[_searchFieldIndex], _searchValue, _serializeData.DataList);
                }
                else
                {
                    _dataList.Clear();
                    _dataList.AddRange(_serializeData.DataList);
                }
            }
            else
            {
                if (string.IsNullOrEmpty(_searchValue))
                {
                    SearchTableData.Hide();
                }
                else
                {
                    SearchTableData.Show(_searchValue, (a) =>
                    {
                        _searchValue = a + ":";
                        SearchTableData.Hide();
                        this.Focus();
                        GUI.FocusControl("SearchText");
                        this.Repaint();
                    });
                }
            }
        }
        else if (string.IsNullOrEmpty(str) && !_isSort)
        {
            _searchValue = str;
            _dataList.Clear();
            _dataList.AddRange(_serializeData.DataList);
        }

        if (string.IsNullOrEmpty(_searchValue))
        {
            GUILayout.Button("", "ToolbarSeachCancelButtonEmpty", GUILayout.Width(20));
        }
        else
        {
            if (GUILayout.Button("", "ToolbarSeachCancelButton", GUILayout.Width(20)))
            {
                _searchValue     = "";
                _isMouseInSearch = false;
                SearchTableData.Hide();
                GUI.FocusControl("GUIArea");
            }
        }

        /*Subsequent versions added
         * //_isAdvancedSearch = GUILayout.Toggle(_isAdvancedSearch, "", GUILayout.Height(10), GUILayout.Width(10));
         * //if (GUILayout.Button("高级搜索", EditorGUIStyle.MiddleButtonStyle, GUILayout.Width(60)))
         * //{
         * //    if (_isAdvancedSearch)
         * //    {
         * //        _dataList = SearchTableData.AdvancedSearch<Test>(this, _tableConfig, _searchFieldArray[_searchFieldIndex], _searchValue, _serializeData.DataList);
         * //    }
         * //}
         */
        GUILayout.EndHorizontal();
    }
Example #2
0
    private void GUIShowTableHead()
    {
        _areaWidht = 0;
        for (int i = 0; i < _divisionSlider.Count; i++)
        {
            _areaWidht += _excelConfig.ColumnsWidth[i];
        }
        Rect areaRect = new Rect(55, 55, _areaWidht, 30);

        _rectList = new List <Rect>(_divisionSlider.HorizontalLayoutRects(areaRect));
        GUILayout.BeginArea(new Rect(3, 50, position.width - 20, 50));
        GUILayout.BeginScrollView(new Vector2(_tableScrollView.x, 0), GUIStyle.none, GUIStyle.none);
        GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(_areaWidht), GUILayout.Height(30));
        int index = 0;

        GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(50), GUILayout.MaxHeight(30));
        GUILayout.Space(2);
        GUILayout.BeginVertical();
        GUILayout.Space(5);
        if (GUILayout.Button("R", EditorGUIStyle.TitleButtonStyle, GUILayout.Height(20), GUILayout.ExpandWidth(true)))
        {
            _searchValue = "";
            SearchTableData.Hide();
            GUI.FocusControl("GUIArea");
            _isSort = false;
            List <string> tempList = _sortFieldDic.Keys.ToList();
            foreach (string item in tempList)
            {
                _sortFieldDic[item] = 0;
            }
        }
        GUILayout.EndVertical();
        GUILayout.Space(2);
        GUILayout.EndHorizontal();

        for (index = 0; index < _tableConfig.FieldList.Count; index++)
        {
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(_rectList[index].width), GUILayout.MaxHeight(30));
            string fieldName = _tableConfig.FieldList[index].FieldName;
            if (!string.IsNullOrEmpty(_tableConfig.FieldList[index].Description))
            {
                fieldName += "\r\n" + _tableConfig.FieldList[index].Description;
            }
            GUILayout.Space(5);
            GUILayout.BeginVertical();
            GUILayout.Space(2);
            if (GUILayout.Button(fieldName, EditorGUIStyle.TitleButtonStyle, GUILayout.Height(25)))
            {
                _isSort = true;
                _dataList.Clear();
                _dataList.AddRange(_serializeData.DataList);
                if (_isMouseInSearch)
                {
                    GUI.FocusControl("GUIArea");
                    _isMouseInSearch = false;
                    _searchValue     = "";
                }
                switch (fieldName)
                {
                case "Id":
                    if (_sortFieldDic[fieldName] == -1)
                    {
                        _sortFieldDic[fieldName] = 1;
                        _dataList = _dataList.OrderBy(a => a.Id).ToList();
                    }
                    else
                    {
                        _sortFieldDic[fieldName] = -1;
                        _dataList = _dataList.OrderByDescending(a => a.Id).ToList();
                    }
                    break;

                case "Str":
                    if (_sortFieldDic[fieldName] == -1)
                    {
                        _sortFieldDic[fieldName] = 1;
                        _dataList = _dataList.OrderBy(a => a.Str).ToList();
                    }
                    else
                    {
                        _sortFieldDic[fieldName] = -1;
                        _dataList = _dataList.OrderByDescending(a => a.Str).ToList();
                    }
                    break;

                case "Vec2":
                    if (_sortFieldDic[fieldName] == -1)
                    {
                        _sortFieldDic[fieldName] = 1;
                        _dataList = _dataList.OrderBy(a => a.Vec2).ToList();
                    }
                    else
                    {
                        _sortFieldDic[fieldName] = -1;
                        _dataList = _dataList.OrderByDescending(a => a.Vec2).ToList();
                    }
                    break;

                case "Quat":
                    if (_sortFieldDic[fieldName] == -1)
                    {
                        _sortFieldDic[fieldName] = 1;
                        _dataList = _dataList.OrderBy(a => a.Quat).ToList();
                    }
                    else
                    {
                        _sortFieldDic[fieldName] = -1;
                        _dataList = _dataList.OrderByDescending(a => a.Quat).ToList();
                    }
                    break;

                case "Obj":
                    if (_sortFieldDic[fieldName] == -1)
                    {
                        _sortFieldDic[fieldName] = 1;
                        _dataList = _dataList.OrderBy(a => a.Obj).ToList();
                    }
                    else
                    {
                        _sortFieldDic[fieldName] = -1;
                        _dataList = _dataList.OrderByDescending(a => a.Obj).ToList();
                    }
                    break;

                default:
                    break;
                }
                List <string> tempList = _sortFieldDic.Keys.ToList();
                foreach (string item in tempList)
                {
                    if (item != fieldName)
                    {
                        _sortFieldDic[item] = 0;
                    }
                }
            }
            _excelConfig.ColumnsWidth[index] = _rectList[index].width;
            GUILayout.EndVertical();
            GUILayout.Space(5);
            GUILayout.EndHorizontal();
        }
        for (; index < _excelConfig.ColumnsWidth.Count; index++)
        {
            GUILayout.BeginHorizontal(EditorGUIStyle.GroupBoxStyle, GUILayout.Width(_rectList[index].width), GUILayout.MaxHeight(30));
            GUILayout.Space(5);
            GUILayout.BeginVertical();
            GUILayout.Space(2);
            GUILayout.Label("", GUILayout.Height(25));
            _excelConfig.ColumnsWidth[index] = _rectList[index].width;
            GUILayout.EndVertical();
            GUILayout.Space(5);
            GUILayout.EndHorizontal();
        }
        GUILayout.Space(30);
        GUILayout.EndHorizontal();
        GUILayout.EndScrollView();
        GUILayout.EndArea();
        float f = 0;

        if (_areaWidht > position.width)
        {
            float diff = _areaWidht - position.width + 20;
            f = diff * Mathf.Clamp(_tableScrollView.x / diff, 0f, 1f);
        }
        _divisionSlider.DoHorizontalSliders(areaRect, _tableConfig.FieldList.Count, f);
        _divisionSlider.Resize(areaRect.width, DivisionSlider.ResizeMode.PrioritizeOuter);
    }
    private void GUIShowTableHead()
    {
        _areaWidht = 0;
        for (int i = 0; i < _divisionSlider.Count; i++)
        {
            _areaWidht += _excelConfig.ColumnsWidth[i];
        }
        Rect areaRect = new Rect(35, 55, _areaWidht, 30);

        rectList = new List <Rect>(_divisionSlider.HorizontalLayoutRects(areaRect));
        GUILayout.BeginArea(new Rect(3, 50, position.width - 20, 50));
        GUILayout.BeginScrollView(new Vector2(_tableScrollView.x, 0), GUIStyle.none, GUIStyle.none);
        GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(_areaWidht), GUILayout.Height(30));
        int index = 0;

        GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(30), GUILayout.MaxHeight(30));
        GUILayout.Space(2);
        GUILayout.BeginVertical();
        GUILayout.Space(5);
        if (GUILayout.Button("R", EditorGUIStyle.GetTitleButton, GUILayout.Height(20), GUILayout.ExpandWidth(true)))
        {
            _searchValue = "";
            SearchTableData.Hide();
            GUI.FocusControl("GUIArea");
            _isSort = false;
        }
        GUILayout.EndVertical();
        GUILayout.Space(2);
        GUILayout.EndHorizontal();

        for (index = 0; index < _tableConfig.FieldList.Count; index++)
        {
            GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(rectList[index].width), GUILayout.MaxHeight(30));
            string fieldName = _tableConfig.FieldList[index].Name;
            if (!string.IsNullOrEmpty(_tableConfig.FieldList[index].ShowName))
            {
                fieldName += "\r\n" + _tableConfig.FieldList[index].ShowName;
            }
            GUILayout.Space(5);
            GUILayout.BeginVertical();
            GUILayout.Space(2);
            if (GUILayout.Button(fieldName, EditorGUIStyle.GetTitleButton, GUILayout.Height(25)))
            {
                //_dataList.Clear();
                //_dataList.AddRange(_serializeData.DataList.OrderBy(a => a.T));
                //_isSort = true;
            }
            _excelConfig.ColumnsWidth[index] = rectList[index].width;
            GUILayout.EndVertical();
            GUILayout.Space(5);
            GUILayout.EndHorizontal();
        }
        GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(rectList[index].width), GUILayout.MaxHeight(30));
        GUILayout.Space(5);
        GUILayout.BeginVertical();
        GUILayout.Space(5);
        GUILayout.Button("", EditorGUIStyle.GetTitleButton, GUILayout.Height(20));
        GUILayout.Space(5);
        GUILayout.EndVertical();
        GUILayout.Space(5);
        GUILayout.EndHorizontal();
        GUILayout.Space(5);
        GUILayout.EndHorizontal();
        GUILayout.EndScrollView();
        GUILayout.EndArea();
        float f = 0;

        if (_areaWidht > position.width)
        {
            float diff = _areaWidht - position.width + 20;
            f = diff * Mathf.Clamp(_tableScrollView.x / diff, 0f, 1f);
        }

        _divisionSlider.DoHorizontalSliders(areaRect, f);
        _divisionSlider.Resize(areaRect.width, DivisionSlider.ResizeMode.PrioritizeOuter);
    }