using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
using System.Linq;
namespace UIWidgets
{
///
/// IResizableItem.
///
public interface IResizableItem {
///
/// Gets the objects to resize.
///
/// The objects to resize.
GameObject[] ObjectsToResize {
get;
}
}
///
/// ResizableHeader.
///
[AddComponentMenu("UI/UIWidgets/ResizableHeader")]
[RequireComponent(typeof(LayoutGroup))]
public class ResizableHeader : MonoBehaviour, IDropSupport, IPointerEnterHandler, IPointerExitHandler
{
///
/// ListView instance.
///
[SerializeField]
public ListViewBase List;
///
/// Allow resize.
///
[SerializeField]
public bool AllowResize = true;
///
/// Allow reorder.
///
[SerializeField]
public bool AllowReorder = true;
///
/// Is now processed cell reorder?
///
[System.NonSerialized]
[HideInInspector]
public bool ProcessCellReorder = false;
///
/// Update ListView columns width on drag.
///
[SerializeField]
public bool OnDragUpdate = true;
///
/// The active region in points from left or right border where resize allowed.
///
[SerializeField]
public float ActiveRegion = 5;
///
/// The current camera. For Screen Space - Overlay let it empty.
///
[SerializeField]
public Camera CurrentCamera;
///
/// The cursor texture.
///
[SerializeField]
public Texture2D CursorTexture;
///
/// The cursor hot spot.
///
[SerializeField]
public Vector2 CursorHotSpot = new Vector2(16, 16);
///
/// The cursor texture.
///
[SerializeField]
public Texture2D AllowDropCursor;
///
/// The cursor hot spot.
///
[SerializeField]
public Vector2 AllowDropCursorHotSpot = new Vector2(4, 2);
///
/// The cursor texture.
///
[SerializeField]
public Texture2D DeniedDropCursor;
///
/// The cursor hot spot.
///
[SerializeField]
public Vector2 DeniedDropCursorHotSpot = new Vector2(4, 2);
///
/// The default cursor texture.
///
[SerializeField]
public Texture2D DefaultCursorTexture;
///
/// The default cursor hot spot.
///
[SerializeField]
public Vector2 DefaultCursorHotSpot;
RectTransform rectTransform;
///
/// Gets the rect transform.
///
/// The rect transform.
public RectTransform RectTransform {
get {
if (rectTransform==null)
{
rectTransform = transform as RectTransform;
}
return rectTransform;
}
}
Canvas canvas;
RectTransform canvasRect;
List childrenLayouts = new List();
List children = new List();
List positions;
LayoutElement leftTarget;
LayoutElement rightTarget;
bool processDrag;
List widths;
LayoutGroup layout;
void Start()
{
layout = GetComponent();
if (layout!=null)
{
Utilites.UpdateLayout(layout);
}
Init();
}
///
/// Raises the initialize potential drag event.
///
/// Event data.
public void OnInitializePotentialDrag(PointerEventData eventData)
{
//Init();
}
///
/// Init this instance.
///
public void Init()
{
canvasRect = Utilites.FindTopmostCanvas(transform) as RectTransform;
canvas = canvasRect.GetComponent