123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- namespace Paroxe.PdfRenderer.Internal.Viewer
- {
- public class PDFViewerLeftPanel : UIBehaviour
- {
- public RectTransform m_Bookmarks;
- public Image m_BookmarksTab;
- public Text m_BookmarksTabTitle;
- public Sprite m_ClosedTabSprite;
- public Sprite m_CloseSprite;
- public float m_MaxWidth = 500.0f;
- public float m_MinWidth = 250.0f;
- public Sprite m_OpenedTabSprite;
- public Sprite m_OpenSprite;
- public Texture2D m_ResizeCursor;
- public Image m_SideBarImage;
- public RectTransform m_Thumbnails;
- public Scrollbar m_ThumbnailsScrollbar;
- public Image m_ThumbnailsTab;
- public Text m_ThumbnailsTabTitle;
- public PDFThumbnailsViewer m_ThumbnailsViewer;
- private RectTransform m_HorizontalScrollBar;
- private float m_LastPanelWidth;
- private bool m_Opened = true;
- private RectTransform m_RectTransform;
- private Vector2 m_StartDragPointerPosition;
- private RectTransform m_ViewerViewport;
- private bool m_Drag = false;
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- private bool m_PointerIn = false;
- #endif
- public void OnBeginDrag()
- {
- if (!m_Opened)
- return;
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- Cursor.SetCursor(m_ResizeCursor, new Vector2(16.0f, 16.0f), CursorMode.Auto);
- m_Drag = true;
- #endif
- }
- public void OnBookmarksTabClicked()
- {
- m_BookmarksTab.sprite = m_OpenedTabSprite;
- m_BookmarksTabTitle.color = Color.black;
- m_ThumbnailsTab.sprite = m_ClosedTabSprite;
- m_ThumbnailsTabTitle.color = new Color(0.50f, 0.50f, 0.50f);
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().alpha = 1.0f;
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().interactable = true;
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = true;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().alpha = 0.0f;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().interactable = false;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = false;
- }
- public void OnDrag(BaseEventData eventData)
- {
- if (!m_Drag)
- return;
- var pointerData = eventData as PointerEventData;
- if (pointerData == null)
- return;
- m_RectTransform.sizeDelta += new Vector2(pointerData.delta.x, 0.0f);
- m_RectTransform.sizeDelta = new Vector2(Mathf.Clamp(m_RectTransform.sizeDelta.x, m_MinWidth, m_MaxWidth),
- m_RectTransform.sizeDelta.y);
- m_LastPanelWidth = m_RectTransform.sizeDelta.x;
- UpdateViewport();
- }
- public void OnEndDrag()
- {
- if (!m_Drag)
- return;
- if (!m_Opened)
- return;
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- if (!m_PointerIn)
- {
- Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
- }
- m_Drag = false;
- #endif
- }
- public void OnPointerEnter()
- {
- if (!m_Opened)
- {
- return;
- }
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- Cursor.SetCursor(m_ResizeCursor, new Vector2(16.0f, 16.0f), CursorMode.Auto);
- m_PointerIn = true;
- #endif
- }
- public void OnPointerExit()
- {
- if (!m_Opened)
- {
- return;
- }
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- if (!m_Drag)
- {
- Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
- }
- m_PointerIn = false;
- #endif
- }
- public void OnThumbnailsTabClicked()
- {
- m_BookmarksTab.sprite = m_ClosedTabSprite;
- m_BookmarksTabTitle.color = new Color(0.50f, 0.50f, 0.50f);
- m_ThumbnailsTab.sprite = m_OpenedTabSprite;
- m_ThumbnailsTabTitle.color = Color.black;
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().alpha = 0.0f;
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().interactable = false;
- m_Bookmarks.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = false;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().alpha = 1.0f;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().interactable = true;
- m_Thumbnails.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = true;
- }
- public void SetActive(bool active)
- {
- if (m_RectTransform == null)
- {
- m_RectTransform = transform as RectTransform;
- }
- if (m_ViewerViewport == null)
- {
- m_ViewerViewport = GetComponentsInParent<PDFViewer>(true)[0].m_Internal.Viewport;
- }
- if (m_HorizontalScrollBar == null)
- {
- m_HorizontalScrollBar = GetComponentsInParent<PDFViewer>(true)[0].m_Internal.HorizontalScrollBar;
- }
- gameObject.SetActive(active);
- if (!active)
- {
- m_ViewerViewport.offsetMin = new Vector2(0.0f, m_ViewerViewport.offsetMin.y);
- m_HorizontalScrollBar.offsetMin = new Vector2(0.0f, m_HorizontalScrollBar.offsetMin.y);
- }
- else
- {
- UpdateViewport();
- }
- }
- public bool IsOpened
- {
- get { return m_Opened; }
- }
- public void SetOpened(bool opened)
- {
- m_Opened = opened;
- UpdateGraphics();
- UpdateViewport();
- }
- public void Toggle()
- {
- m_Opened = !m_Opened;
- UpdateGraphics();
- UpdateViewport();
- }
- protected override void OnEnable()
- {
- m_RectTransform = transform as RectTransform;
- m_ViewerViewport = GetComponentInParent<PDFViewer>().m_Internal.Viewport;
- m_HorizontalScrollBar = GetComponentInParent<PDFViewer>().m_Internal.HorizontalScrollBar;
- m_LastPanelWidth = 350.0f;
- UpdateViewport();
- }
- private void UpdateGraphics()
- {
- m_SideBarImage.sprite = m_Opened ? m_CloseSprite : m_OpenSprite;
- if (m_RectTransform == null)
- {
- m_RectTransform = transform as RectTransform;
- }
- if (m_ViewerViewport == null)
- {
- m_ViewerViewport = GetComponentInParent<PDFViewer>().m_Internal.Viewport;
- }
- if (m_HorizontalScrollBar == null)
- {
- m_HorizontalScrollBar = GetComponentInParent<PDFViewer>().m_Internal.HorizontalScrollBar;
- }
- if (m_Opened)
- {
- m_RectTransform.sizeDelta = new Vector2(m_LastPanelWidth, m_RectTransform.sizeDelta.y);
- }
- else
- {
- m_RectTransform.sizeDelta = new Vector2(24.0f, m_RectTransform.sizeDelta.y);
- }
- #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
- if (m_Opened)
- {
- Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
- }
- #endif
- }
- private void UpdateViewport()
- {
- if (m_ViewerViewport.offsetMin.x != m_RectTransform.sizeDelta.x)
- {
- m_ViewerViewport.offsetMin = new Vector2(m_RectTransform.sizeDelta.x, m_ViewerViewport.offsetMin.y);
- m_HorizontalScrollBar.offsetMin = new Vector2(m_RectTransform.sizeDelta.x,
- m_HorizontalScrollBar.offsetMin.y);
- }
- }
- }
- }
|