private static void DoItemSelectedEvent(ObjectColumnFunction selectedRegularItemFunction, object value) { if (selectedRegularItemFunction != null) { selectedRegularItemFunction(value); } Event.current.Use(); }
private static void DoPreviewColumn(object selectedObject, ObjectColumnFunction previewColumnFunction) { GUILayout.BeginVertical(s_Styles.background, new GUILayoutOption[0]); if (previewColumnFunction != null) { previewColumnFunction(selectedObject); } GUILayout.EndVertical(); }
private void DoDoubleClick(ListViewElement element, ColumnViewElement columnViewElement, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction) { if (((Event.current.type == EventType.MouseDown) && element.position.Contains(Event.current.mousePosition)) && ((Event.current.button == 0) && (Event.current.clickCount == 2))) { if (this.isSearching) { this.DoSearchItemSelectedEvent(selectedSearchItemFunction, columnViewElement.value); } else { DoItemSelectedEvent(selectedRegularItemFunction, columnViewElement.value); } } }
private int DoListColumn(ListViewState listView, List <ColumnViewElement> columnViewElements, int columnIndex, int selectedIndex, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction, ObjectColumnGetDataFunction getDataForDraggingFunction) { if (((Event.current.type == EventType.KeyDown) && (Event.current.keyCode == KeyCode.Return)) && (listView.row > -1)) { if (this.isSearching && (selectedSearchItemFunction != null)) { this.DoSearchItemSelectedEvent(selectedSearchItemFunction, columnViewElements[selectedIndex].value); } if ((!this.isSearching && (GUIUtility.keyboardControl == listView.ID)) && (selectedRegularItemFunction != null)) { DoItemSelectedEvent(selectedRegularItemFunction, columnViewElements[selectedIndex].value); } } if (((GUIUtility.keyboardControl == listView.ID) && (Event.current.type == EventType.KeyDown)) && !this.isSearching) { switch (Event.current.keyCode) { case KeyCode.LeftArrow: this.m_ColumnToFocusKeyboard = columnIndex - 1; Event.current.Use(); break; case KeyCode.RightArrow: this.m_ColumnToFocusKeyboard = columnIndex + 1; Event.current.Use(); break; } } GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Width(this.columnWidth) }; IEnumerator enumerator = ListViewGUILayout.ListView(listView, s_Styles.background, options).GetEnumerator(); try { while (enumerator.MoveNext()) { ListViewElement current = (ListViewElement)enumerator.Current; ColumnViewElement columnViewElement = columnViewElements[current.row]; if ((current.row == listView.row) && (Event.current.type == EventType.Repaint)) { Rect position = current.position; position.x++; position.y++; s_Styles.selected.Draw(position, false, true, true, GUIUtility.keyboardControl == listView.ID); } GUILayout.Label(columnViewElement.name, new GUILayoutOption[0]); if (columnViewElement.value is List <ColumnViewElement> ) { Rect rect2 = current.position; rect2.x = (rect2.xMax - s_Styles.categoryArrowIcon.width) - 5f; rect2.y += 2f; GUI.Label(rect2, s_Styles.categoryArrowIcon); } this.DoDoubleClick(current, columnViewElement, selectedSearchItemFunction, selectedRegularItemFunction); DoDragAndDrop(listView, current, columnViewElements, getDataForDraggingFunction); } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } if (Event.current.type == EventType.Layout) { selectedIndex = listView.row; } return(selectedIndex); }
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) { this.OnGUI(elements, previewColumnFunction, null, null, null); }
private void DoSearchItemSelectedEvent(ObjectColumnFunction selectedSearchItemFunction, object value) { this.m_SearchText = string.Empty; DoItemSelectedEvent(selectedSearchItemFunction, value); }
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(); }
private int DoListColumn(ListViewState listView, List <ColumnViewElement> columnViewElements, int columnIndex, int selectedIndex, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction, ObjectColumnGetDataFunction getDataForDraggingFunction) { if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return && listView.row > -1) { if (isSearching && selectedSearchItemFunction != null) { DoSearchItemSelectedEvent(selectedSearchItemFunction, columnViewElements[selectedIndex].value); } if (!isSearching && GUIUtility.keyboardControl == listView.ID && selectedRegularItemFunction != null) { DoItemSelectedEvent(selectedRegularItemFunction, columnViewElements[selectedIndex].value); } } if (GUIUtility.keyboardControl == listView.ID && Event.current.type == EventType.KeyDown && !isSearching) { switch (Event.current.keyCode) { case KeyCode.LeftArrow: m_ColumnToFocusKeyboard = columnIndex - 1; Event.current.Use(); break; case KeyCode.RightArrow: m_ColumnToFocusKeyboard = columnIndex + 1; Event.current.Use(); break; } } foreach (ListViewElement element in ListViewGUILayout.ListView(listView, s_Styles.background, GUILayout.Width(columnWidth))) { var columnViewElement = columnViewElements[element.row]; if (element.row == listView.row) { if (Event.current.type == EventType.Repaint) { // FIXME: One Pixel offset is required when using OL Box style. Use a different style. var rect = element.position; rect.x++; rect.y++; s_Styles.selected.Draw(rect, false, true, true, GUIUtility.keyboardControl == listView.ID); } } GUILayout.Label(columnViewElement.name); if (columnViewElement.value is List <ColumnViewElement> ) { // TODO: Make a proper style. var arrowRect = element.position; arrowRect.x = arrowRect.xMax - s_Styles.categoryArrowIcon.width - 5; arrowRect.y += 2; GUI.Label(arrowRect, s_Styles.categoryArrowIcon); } DoDoubleClick(element, columnViewElement, selectedSearchItemFunction, selectedRegularItemFunction); DoDragAndDrop(listView, element, columnViewElements, getDataForDraggingFunction); } if (Event.current.type == EventType.Layout) { selectedIndex = listView.row; } return(selectedIndex); }
private int DoListColumn(ListViewState listView, List<ColumnViewElement> columnViewElements, int columnIndex, int selectedIndex, ObjectColumnFunction selectedSearchItemFunction, ObjectColumnFunction selectedRegularItemFunction, ObjectColumnGetDataFunction getDataForDraggingFunction) { if (((Event.current.type == EventType.KeyDown) && (Event.current.keyCode == KeyCode.Return)) && (listView.row > -1)) { if (this.isSearching && (selectedSearchItemFunction != null)) { this.DoSearchItemSelectedEvent(selectedSearchItemFunction, columnViewElements[selectedIndex].value); } if ((!this.isSearching && (GUIUtility.keyboardControl == listView.ID)) && (selectedRegularItemFunction != null)) { DoItemSelectedEvent(selectedRegularItemFunction, columnViewElements[selectedIndex].value); } } if (((GUIUtility.keyboardControl == listView.ID) && (Event.current.type == EventType.KeyDown)) && !this.isSearching) { switch (Event.current.keyCode) { case KeyCode.LeftArrow: this.m_ColumnToFocusKeyboard = columnIndex - 1; Event.current.Use(); break; case KeyCode.RightArrow: this.m_ColumnToFocusKeyboard = columnIndex + 1; Event.current.Use(); break; } } GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Width(this.columnWidth) }; IEnumerator enumerator = ListViewGUILayout.ListView(listView, s_Styles.background, options).GetEnumerator(); try { while (enumerator.MoveNext()) { ListViewElement current = (ListViewElement) enumerator.Current; ColumnViewElement columnViewElement = columnViewElements[current.row]; if ((current.row == listView.row) && (Event.current.type == EventType.Repaint)) { Rect position = current.position; position.x++; position.y++; s_Styles.selected.Draw(position, false, true, true, GUIUtility.keyboardControl == listView.ID); } GUILayout.Label(columnViewElement.name, new GUILayoutOption[0]); if (columnViewElement.value is List<ColumnViewElement>) { Rect rect2 = current.position; rect2.x = (rect2.xMax - s_Styles.categoryArrowIcon.width) - 5f; rect2.y += 2f; GUI.Label(rect2, s_Styles.categoryArrowIcon); } this.DoDoubleClick(current, columnViewElement, selectedSearchItemFunction, selectedRegularItemFunction); DoDragAndDrop(listView, current, columnViewElements, getDataForDraggingFunction); } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } if (Event.current.type == EventType.Layout) { selectedIndex = listView.row; } return selectedIndex; }
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) { this.OnGUI(elements, previewColumnFunction, null, null, null); }