Beispiel #1
0
            protected override void AddColumnHeaderContextMenuItems(GenericMenu menu)
            {
                var activeColumn  = currentColumnIndex;
                var mousePosition = GUIClip.UnclipToWindow(Event.current.mousePosition);

                if (state.columns.Length > 1)
                {
                    for (int i = 0; i < state.columns.Length; ++i)
                    {
                        var column      = state.columns[i];
                        var menuContent = new GUIContent("Show Columns/" + GetDisplayLabel(column.headerContent));
                        if (state.visibleColumns.Length == 1 && state.visibleColumns.Contains(i))
                        {
                            menu.AddDisabledItem(menuContent, state.visibleColumns.Contains(i));
                        }
                        else
                        {
                            menu.AddItem(menuContent, state.visibleColumns.Contains(i), index => ToggleColumnVisibility((int)index), i);
                        }
                    }
                }


                if (activeColumn != -1)
                {
                    if (state.columns[activeColumn].userDataObj is SearchColumn sourceColumn)
                    {
                        m_TableView.AddColumnHeaderContextMenuItems(menu, sourceColumn);
                    }
                }

                // If the table view is readonly, we can't change the columns
                if (m_TableView.IsReadOnly())
                {
                    return;
                }

                menu.AddSeparator("");
                menu.AddItem(EditorGUIUtility.TrTextContent("Add Column..."), false, () => m_TableView.AddColumn(mousePosition, activeColumn));

                if (activeColumn != -1)
                {
                    var colName = state.columns[activeColumn].headerContent.text;
                    menu.AddItem(EditorGUIUtility.TrTextContent($"Edit {colName}..."), false, EditColumn, activeColumn);
                    menu.AddItem(EditorGUIUtility.TrTextContent($"Remove {colName}"), false, () =>
                    {
                        if (state.columns.Length == 1)
                        {
                            ResetColumnLayout();
                        }
                        else
                        {
                            m_TableView.RemoveColumn(activeColumn);
                        }
                    });
                }

                menu.AddSeparator("");
                menu.AddItem(EditorGUIUtility.TrTextContent("Reset Columns"), false, ResetColumnLayout);
            }