/// <summary> /// Draw list control with absolute positioning. /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="drawEmpty">Delegate for drawing empty list.</param> public void Draw(Rect position, IReorderableListAdaptor adaptor, DrawEmptyAbsolute drawEmpty) { int controlID = GUIUtility.GetControlID(FocusType.Passive); Draw(position, controlID, adaptor, drawEmpty); }
/// <summary> /// Generate and draw control from state object. /// </summary> /// <param name="position">Position of control.</param> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="drawEmpty">Delegate for drawing empty list.</param> /// <param name="flags">Optional flags to pass into list field.</param> public static void DrawControlFromState(Rect position, IReorderableListAdaptor adaptor, DrawEmptyAbsolute drawEmpty, ReorderableListFlags flags) { int controlID = GUIUtility.GetControlID(FocusType.Passive); var control = GUIUtility.GetStateObject(typeof(ReorderableListControl), controlID) as ReorderableListControl; control.Flags = flags; control.Draw(position, controlID, adaptor, drawEmpty); }
/// <summary> /// Draw list control with absolute positioning. /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="controlID">Unique ID of list control.</param> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="drawEmpty">Delegate for drawing empty list.</param> private void Draw(Rect position, int controlID, IReorderableListAdaptor adaptor, DrawEmptyAbsolute drawEmpty) { FixStyles(); PrepareState(controlID, adaptor); // Allow for footer area. if (HasFooterButtons) position.height -= FooterButtonStyle.fixedHeight; if (adaptor.Count > 0) { DrawListContainerAndItems(position, controlID, adaptor); CheckForAutoFocusControl(controlID); } else { DrawEmptyListControl(position, drawEmpty); } DrawFooterControls(position, controlID, adaptor); }
/// <summary> /// Draw content for empty list (layout version). /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="drawEmpty">Callback to draw empty content.</param> private void DrawEmptyListControl(Rect position, DrawEmptyAbsolute drawEmpty) { if (Event.current.type == EventType.Repaint) ContainerStyle.Draw(position, GUIContent.none, false, false, false, false); // Take padding into consideration when drawing empty content. position.x += ContainerStyle.padding.left; position.y += ContainerStyle.padding.top; position.width -= ContainerStyle.padding.horizontal; position.height -= ContainerStyle.padding.vertical; if (drawEmpty != null) drawEmpty(position); }
/// <summary> /// Draw list control with absolute positioning. /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="drawEmpty">Delegate for drawing empty list.</param> public void Draw(Rect position, IReorderableListAdaptor adaptor, DrawEmptyAbsolute drawEmpty) { int controlID = GetReorderableListControlID(); Draw(position, controlID, adaptor, drawEmpty); }
/// <summary> /// Draw list control with absolute positioning. /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="controlID">Unique ID of list control.</param> /// <param name="adaptor">Reorderable list adaptor.</param> /// <param name="drawEmpty">Delegate for drawing empty list.</param> private void Draw(Rect position, int controlID, IReorderableListAdaptor adaptor, DrawEmptyAbsolute drawEmpty) { FixStyles(); PrepareState(controlID, adaptor); // Allow for footer area. if (HasFooterButtons) position.height -= FooterButtonStyle.fixedHeight; s_CurrentListStack.Push(new ListInfo(_controlID, position)); try { adaptor.BeginGUI(); DrawListContainerAndItems(position, adaptor); HandleDropInsertion(position, adaptor); CheckForAutoFocusControl(); if (adaptor.Count == 0) { ReorderableListGUI.IndexOfChangedItem = -1; DrawEmptyListControl(position, drawEmpty); } adaptor.EndGUI(); } finally { s_CurrentListStack.Pop(); } DrawFooterControls(position, adaptor); }
/// <summary> /// Draw content for empty list (layout version). /// </summary> /// <param name="position">Position of list control in GUI.</param> /// <param name="drawEmpty">Callback to draw empty content.</param> private void DrawEmptyListControl(Rect position, DrawEmptyAbsolute drawEmpty) { if (Event.current.type == EventType.Repaint) ContainerStyle.Draw(position, GUIContent.none, false, false, false, false); // Take padding into consideration when drawing empty content. position = ContainerStyle.padding.Remove(position); if (drawEmpty != null) drawEmpty(position); }