internal static bool ListViewKeyboard(ListViewShared.InternalListViewState ilvState, int totalCols) { if (Event.current.type != EventType.KeyDown || ilvState.state.totalRows == 0 || (GUIUtility.keyboardControl != ilvState.state.ID || Event.current.GetTypeForControl(ilvState.state.ID) != EventType.KeyDown)) { return(false); } return(ListViewShared.SendKey(ilvState, Event.current.keyCode, totalCols)); }
internal static void SendKey(ListViewState state, KeyCode keyCode) { ListViewShared.SendKey((ListViewShared.InternalListViewState)state.ilvState, keyCode, 1); }
public void OnGUI(List <ColumnViewElement> elements, ObjectColumnFunction previewColumnFunction, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction, ObjectColumnGetDataFunction getDataForDraggingFunction) { object obj2; InitStyles(); this.m_ScrollPosition = GUILayout.BeginScrollView(this.m_ScrollPosition, new GUILayoutOption[0]); GUILayout.BeginHorizontal(new GUILayoutOption[0]); List <ColumnViewElement> columnViewElements = elements; int columnIndex = 0; do { if (this.m_ListViewStates.Count == columnIndex) { this.m_ListViewStates.Add(new ListViewState()); } if (this.m_CachedSelectedIndices.Count == columnIndex) { this.m_CachedSelectedIndices.Add(-1); } ListViewState listView = this.m_ListViewStates[columnIndex]; listView.totalRows = columnViewElements.Count; if (columnIndex == 0) { GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.MaxWidth(this.columnWidth) }; GUILayout.BeginVertical(options); } int selectedIndex = this.m_CachedSelectedIndices[columnIndex]; selectedIndex = this.DoListColumn(listView, columnViewElements, columnIndex, selectedIndex, (columnIndex != 0) ? null : selectedSearchItemFunction, selectedRegularItemFunction, getDataForDraggingFunction); if ((Event.current.type == EventType.Layout) && (this.m_ColumnToFocusKeyboard == columnIndex)) { this.m_ColumnToFocusKeyboard = -1; GUIUtility.keyboardControl = listView.ID; if ((listView.row == -1) && (columnViewElements.Count != 0)) { selectedIndex = listView.row = 0; } } if (columnIndex == 0) { if (this.isSearching) { KeyCode keyCode = StealImportantListviewKeys(); if (keyCode != KeyCode.None) { ListViewShared.SendKey(this.m_ListViewStates[0], keyCode); } } this.m_SearchText = EditorGUILayout.ToolbarSearchField(this.m_SearchText, new GUILayoutOption[0]); GUILayout.EndVertical(); } if (selectedIndex >= columnViewElements.Count) { selectedIndex = -1; } if (((Event.current.type == EventType.Layout) && (this.m_CachedSelectedIndices[columnIndex] != selectedIndex)) && (this.m_ListViewStates.Count > (columnIndex + 1))) { int index = columnIndex + 1; int count = this.m_ListViewStates.Count - (columnIndex + 1); this.m_ListViewStates.RemoveRange(index, count); this.m_CachedSelectedIndices.RemoveRange(index, count); } this.m_CachedSelectedIndices[columnIndex] = selectedIndex; obj2 = (selectedIndex <= -1) ? null : columnViewElements[selectedIndex].value; columnViewElements = obj2 as List <ColumnViewElement>; columnIndex++; }while (columnViewElements != null); while (columnIndex < this.minimumNumberOfColumns) { this.DoDummyColumn(); columnIndex++; } DoPreviewColumn(obj2, previewColumnFunction); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); }
public void OnGUI(List <ColumnViewElement> elements, ObjectColumnFunction previewColumnFunction, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction, ObjectColumnGetDataFunction getDataForDraggingFunction) { InitStyles(); m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition); GUILayout.BeginHorizontal(); var columnElements = elements; object selectedObject; int listViewIndex = 0; do { if (m_ListViewStates.Count == listViewIndex) { m_ListViewStates.Add(new ListViewState()); } if (m_CachedSelectedIndices.Count == listViewIndex) { m_CachedSelectedIndices.Add(-1); } var listView = m_ListViewStates[listViewIndex]; listView.totalRows = columnElements.Count; if (listViewIndex == 0) { GUILayout.BeginVertical(GUILayout.MaxWidth(columnWidth)); } int selectedIndex = m_CachedSelectedIndices[listViewIndex]; selectedIndex = DoListColumn(listView, columnElements, listViewIndex, selectedIndex, listViewIndex == 0 ? selectedSearchItemFunction : null, selectedRegularItemFunction, getDataForDraggingFunction); if (Event.current.type == EventType.Layout && m_ColumnToFocusKeyboard == listViewIndex) { m_ColumnToFocusKeyboard = -1; GUIUtility.keyboardControl = listView.ID; if (listView.row == -1 && columnElements.Count != 0) { selectedIndex = listView.row = 0; } } if (listViewIndex == 0) { // pass some of the keys to the list view, even if something else is active if (isSearching) { var keyCode = StealImportantListviewKeys(); if (keyCode != KeyCode.None) { ListViewShared.SendKey(m_ListViewStates[0], keyCode); } } m_SearchText = EditorGUILayout.ToolbarSearchField(m_SearchText); GUILayout.EndVertical(); } if (selectedIndex >= columnElements.Count) { selectedIndex = -1; } if (Event.current.type == EventType.Layout && m_CachedSelectedIndices[listViewIndex] != selectedIndex && m_ListViewStates.Count > listViewIndex + 1) { int from = listViewIndex + 1; int range = m_ListViewStates.Count - (listViewIndex + 1); m_ListViewStates.RemoveRange(from, range); m_CachedSelectedIndices.RemoveRange(from, range); } m_CachedSelectedIndices[listViewIndex] = selectedIndex; selectedObject = selectedIndex > -1 ? columnElements[selectedIndex].value : null; columnElements = selectedObject as List <ColumnViewElement>; listViewIndex++; }while (columnElements != null); for (; listViewIndex < minimumNumberOfColumns; listViewIndex++) { DoDummyColumn(); } DoPreviewColumn(selectedObject, previewColumnFunction); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); }
internal static bool ListViewKeyboard(ListViewShared.InternalListViewState ilvState, int totalCols) { int totalRows = ilvState.state.totalRows; return(Event.current.type == EventType.KeyDown && totalRows != 0 && GUIUtility.keyboardControl == ilvState.state.ID && Event.current.GetTypeForControl(ilvState.state.ID) == EventType.KeyDown && ListViewShared.SendKey(ilvState, Event.current.keyCode, totalCols)); }
public void OnGUI(List <ColumnViewElement> elements, ColumnView.ObjectColumnFunction previewColumnFunction, ColumnView.ObjectColumnFunction selectedSearchItemFunction, ColumnView.ObjectColumnFunction selectedRegularItemFunction, ColumnView.ObjectColumnGetDataFunction getDataForDraggingFunction) { ColumnView.InitStyles(); this.m_ScrollPosition = GUILayout.BeginScrollView(this.m_ScrollPosition, new GUILayoutOption[0]); GUILayout.BeginHorizontal(new GUILayoutOption[0]); List <ColumnViewElement> list = elements; int i = 0; object obj; do { if (this.m_ListViewStates.Count == i) { this.m_ListViewStates.Add(new ListViewState()); } if (this.m_CachedSelectedIndices.Count == i) { this.m_CachedSelectedIndices.Add(-1); } ListViewState listViewState = this.m_ListViewStates[i]; listViewState.totalRows = list.Count; if (i == 0) { GUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.MaxWidth(this.columnWidth) }); } int num = this.m_CachedSelectedIndices[i]; num = this.DoListColumn(listViewState, list, i, num, (i != 0) ? null : selectedSearchItemFunction, selectedRegularItemFunction, getDataForDraggingFunction); if (Event.current.type == EventType.Layout && this.m_ColumnToFocusKeyboard == i) { this.m_ColumnToFocusKeyboard = -1; GUIUtility.keyboardControl = listViewState.ID; if (listViewState.row == -1 && list.Count != 0) { num = (listViewState.row = 0); } } if (i == 0) { if (this.isSearching) { KeyCode keyCode = ColumnView.StealImportantListviewKeys(); if (keyCode != KeyCode.None) { ListViewShared.SendKey(this.m_ListViewStates[0], keyCode); } } this.m_SearchText = EditorGUILayout.ToolbarSearchField(this.m_SearchText, new GUILayoutOption[0]); GUILayout.EndVertical(); } if (num >= list.Count) { num = -1; } if (Event.current.type == EventType.Layout && this.m_CachedSelectedIndices[i] != num && this.m_ListViewStates.Count > i + 1) { int index = i + 1; int count = this.m_ListViewStates.Count - (i + 1); this.m_ListViewStates.RemoveRange(index, count); this.m_CachedSelectedIndices.RemoveRange(index, count); } this.m_CachedSelectedIndices[i] = num; obj = ((num <= -1) ? null : list[num].value); list = (obj as List <ColumnViewElement>); i++; }while (list != null); while (i < this.minimumNumberOfColumns) { this.DoDummyColumn(); i++; } ColumnView.DoPreviewColumn(obj, previewColumnFunction); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); }
public void OnGUI(List <ColumnViewElement> elements, ColumnView.ObjectColumnFunction previewColumnFunction, ColumnView.ObjectColumnFunction selectedSearchItemFunction, ColumnView.ObjectColumnFunction selectedRegularItemFunction, ColumnView.ObjectColumnGetDataFunction getDataForDraggingFunction) { ColumnView.InitStyles(); this.m_ScrollPosition = GUILayout.BeginScrollView(this.m_ScrollPosition); GUILayout.BeginHorizontal(); List <ColumnViewElement> columnViewElements = elements; int columnIndex = 0; object selectedObject; do { if (this.m_ListViewStates.Count == columnIndex) { this.m_ListViewStates.Add(new ListViewState()); } if (this.m_CachedSelectedIndices.Count == columnIndex) { this.m_CachedSelectedIndices.Add(-1); } ListViewState listViewState = this.m_ListViewStates[columnIndex]; listViewState.totalRows = columnViewElements.Count; if (columnIndex == 0) { GUILayout.BeginVertical(GUILayout.MaxWidth(this.columnWidth)); } int cachedSelectedIndex = this.m_CachedSelectedIndices[columnIndex]; int index1 = this.DoListColumn(listViewState, columnViewElements, columnIndex, cachedSelectedIndex, columnIndex != 0 ? (ColumnView.ObjectColumnFunction)null : selectedSearchItemFunction, selectedRegularItemFunction, getDataForDraggingFunction); if (Event.current.type == EventType.Layout && this.m_ColumnToFocusKeyboard == columnIndex) { this.m_ColumnToFocusKeyboard = -1; GUIUtility.keyboardControl = listViewState.ID; if (listViewState.row == -1 && columnViewElements.Count != 0) { index1 = listViewState.row = 0; } } if (columnIndex == 0) { if (this.isSearching) { KeyCode keyCode = ColumnView.StealImportantListviewKeys(); if (keyCode != KeyCode.None) { ListViewShared.SendKey(this.m_ListViewStates[0], keyCode); } } this.m_SearchText = EditorGUILayout.ToolbarSearchField(this.m_SearchText); GUILayout.EndVertical(); } if (index1 >= columnViewElements.Count) { index1 = -1; } if (Event.current.type == EventType.Layout && this.m_CachedSelectedIndices[columnIndex] != index1 && this.m_ListViewStates.Count > columnIndex + 1) { int index2 = columnIndex + 1; int count = this.m_ListViewStates.Count - (columnIndex + 1); this.m_ListViewStates.RemoveRange(index2, count); this.m_CachedSelectedIndices.RemoveRange(index2, count); } this.m_CachedSelectedIndices[columnIndex] = index1; selectedObject = index1 <= -1 ? (object)null : columnViewElements[index1].value; columnViewElements = selectedObject as List <ColumnViewElement>; ++columnIndex; }while (columnViewElements != null); for (; columnIndex < this.minimumNumberOfColumns; ++columnIndex) { this.DoDummyColumn(); } ColumnView.DoPreviewColumn(selectedObject, previewColumnFunction); GUILayout.EndHorizontal(); GUILayout.EndScrollView(); }