< Summary

Class:DCL.Builder.ProjectContextMenuView
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/Projects/ProjectContextMenuView.cs
Covered lines:0
Uncovered lines:29
Coverable lines:29
Total lines:111
Line coverage:0% (0 of 29)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%2100%
Dispose()0%2100%
RefreshControl()0%2100%
ShowOnCard(...)0%2100%
Hide()0%2100%
Update()0%2100%
HideIfClickedOutside()0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/Projects/ProjectContextMenuView.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using System.Collections.Generic;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7namespace DCL.Builder
 8{
 9    public interface IProjectContextMenuView
 10    {
 11        /// <summary>
 12        /// Event released if the duplicate button has been pressed
 13        /// </summary>
 14        event Action<IProjectCardView> OnDuplicatePressed;
 15
 16        /// <summary>
 17        /// Event released if the delete button has been pressed
 18        /// </summary>
 19        event Action<IProjectCardView> OnDeletePressed;
 20
 21        /// <summary>
 22        /// Event released if the publish button has been pressed
 23        /// </summary>
 24        event Action<IProjectCardView> OnPublishPressed;
 25
 26        /// <summary>
 27        /// Shows the context menu at the right of the view
 28        /// </summary>
 29        /// <param name="view"></param>
 30        void ShowOnCard(IProjectCardView view);
 31
 32        /// <summary>
 33        /// Hides the view
 34        /// </summary>
 35        void Hide();
 36    }
 37
 38    public class ProjectContextMenuView : BaseComponentView, IProjectContextMenuView
 39    {
 40        public event Action<IProjectCardView> OnDuplicatePressed;
 41        public event Action<IProjectCardView> OnDeletePressed;
 42        public event Action<IProjectCardView> OnPublishPressed;
 43
 44        [Header("Buttons")]
 45        [SerializeField] internal Button publishButton;
 46        [SerializeField] internal Button duplicateButton;
 47        [SerializeField] internal Button deleteButton;
 48
 49        // Note: this buttons will be implemented in the future
 50        [SerializeField] internal Button settingsButton;
 51        [SerializeField] internal Button downloadButton;
 52        [SerializeField] internal Button shareButton;
 53
 54        private IProjectCardView lastViewShowed;
 55
 56        public override void Awake()
 57        {
 058            base.Awake();
 59
 060            duplicateButton.onClick.AddListener( () =>
 61            {
 062                Hide();
 063                OnDuplicatePressed?.Invoke(lastViewShowed);
 064            });
 65
 066            deleteButton.onClick.AddListener( () =>
 67            {
 068                Hide();
 069                OnDeletePressed?.Invoke(lastViewShowed);
 070            });
 71
 072            publishButton.onClick.AddListener( () =>
 73            {
 074                Hide();
 075                OnPublishPressed?.Invoke(lastViewShowed);
 076            });
 077        }
 78
 79        public override void Dispose()
 80        {
 081            base.Dispose();
 82
 083            duplicateButton.onClick.RemoveAllListeners();
 084            deleteButton.onClick.RemoveAllListeners();
 085            publishButton.onClick.RemoveAllListeners();
 086        }
 87
 088        public override void RefreshControl() { }
 89
 90        public void ShowOnCard(IProjectCardView view)
 91        {
 092            lastViewShowed = view;
 93
 094            transform.position = view.contextMenuButtonPosition;
 095            gameObject.SetActive(true);
 096        }
 97
 098        public void Hide() { gameObject.SetActive(false); }
 99
 0100        private void Update() { HideIfClickedOutside(); }
 101
 102        private void HideIfClickedOutside()
 103        {
 0104            if (Input.GetMouseButtonDown(0) &&
 105                !RectTransformUtility.RectangleContainsScreenPoint((RectTransform) transform, Input.mousePosition))
 106            {
 0107                Hide();
 108            }
 0109        }
 110    }
 111}