Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public UListViewItem Add(string text)
        {
            UListViewItemImp child = new UListViewItemImp(text);

            _children.Add(child);

            return(child);
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        public void Remove(UListViewItem item)
        {
            UListViewItemImp imp = item as UListViewItemImp;

            if (_children.Contains(imp))
            {
                _children.Remove(imp);
            }
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        private void ProcessLeftMouseButton()
        {
            bool    selectionChanged = false;
            Vector2 mousePt          = Event.current.mousePosition - new Vector2(_rect.x, _rect.y) + _scrollPos;

            foreach (UListViewItemImp child in _children)
            {
                if (child.Hit(mousePt))
                {
                    if (Event.current.control)
                    {
                        child.selected = !child.selected;
                        if (child.selected)
                        {
                            _selections.Add(child);
                        }
                        else
                        {
                            _selections.Remove(child);
                        }
                        selectionChanged = true;
                    }
                    else if (Event.current.shift)
                    {
                        int selectionCount = _selections.Count;

                        if (_selections.Count == 0)
                        {
                            child.selected = true;
                            _selections.Add(child);
                        }
                        else
                        {
                            UListViewItemImp first = _selections[0];

                            int firstIdx = _children.IndexOf(first);
                            int childIdx = _children.IndexOf(child);

                            ClearSelectedList();

                            int index = Mathf.Min(firstIdx, childIdx);
                            int count = Mathf.Abs(firstIdx - childIdx) + 1;
                            for (int i = 0; i < count; i++)
                            {
                                UListViewItemImp item = _children[index + i];
                                item.selected = true;
                                _selections.Add(item);
                            }
                        }

                        if (_selections.Count != selectionCount)
                        {
                            selectionChanged = true;
                        }
                    }
                    else
                    {
                        ClearSelectedList();

                        child.selected = !child.selected;
                        if (child.selected)
                        {
                            _selections.Add(child);
                        }
                        selectionChanged = true;
                    }

                    if (selectionChanged)
                    {
                        //Debug.Log("listview selection changed");
                        if (OnSelectionChanged != null)
                        {
                            OnSelectionChanged(new UEventArgs(this));
                        }
                    }
                    //Event.current.Use();
                    return;
                }
            }

            ClearSelectedList();
        }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        private void ProcessKeyboardEvent()
        {
            if (_children.Count == 0)
            {
                return;
            }

            if (Event.current.type == EventType.KeyDown)
            {
                if (Event.current.keyCode == KeyCode.DownArrow)
                {
                    if (_selections.Count == 0)
                    {
                        UListViewItemImp child = _children[0];
                        child.selected = true;
                        _selections.Add(child);
                    }
                    else
                    {
                        UListViewItemImp lastItem = _selections[_selections.Count - 1];
                        int index = _children.IndexOf(lastItem);

                        if (index < _children.Count - 1)
                        {
                            ClearSelectedList();

                            UListViewItemImp item = _children[index + 1];
                            item.selected = true;
                            _selections.Add(item);
                        }
                    }
                }
                else if (Event.current.keyCode == KeyCode.UpArrow)
                {
                    if (_selections.Count == 0)
                    {
                        UListViewItemImp child = _children[0];
                        child.selected = true;
                        _selections.Add(child);
                    }
                    else
                    {
                        UListViewItemImp firstItem = _selections[0];
                        int index = _children.IndexOf(firstItem);

                        if (index > 0)
                        {
                            ClearSelectedList();

                            UListViewItemImp item = _children[index - 1];
                            item.selected = true;
                            _selections.Add(item);
                        }
                    }
                }
                else
                {
                    //
                }

                Event.current.Use();
            }
        }