Beispiel #1
0
        private void OnCellClicked(object sender, DataViewPair pair)
        {
            if (CellClicked == null)
            {
                return;
            }

            CellClicked(this, new OnCellClickedEventArgs(pair.Data, pair.IsSelected));
        }
Beispiel #2
0
        /// <summary>
        /// Use to update the data of the ListView, selected items will preserve their state.
        /// </summary>
        /// <param name="items">The new data set to be presented by the ListView.</param>
        public void UpdateData(List <T> items)
        {
            IEnumerable <T> onlyInOld = this.items.Except <T>(items);
            IEnumerable <T> onlyInNew = items.Except <T>(this.items);
            int             dif       = 0;

            foreach (var old in onlyInOld)
            {
                dif++;
                for (int i = 0; i < dataViewPairs.Count; i++)
                {
                    if (dataViewPairs[i].Data == old)
                    {
                        DataViewPair p = dataViewPairs[i];
                        pairsPool.Add(p);
                        dataViewPairs.RemoveAt(i);
                        break;
                    }
                }
            }
            //add new elements
            foreach (var item in onlyInNew)
            {
                dif--;
                bool exists = false;
                for (int i = 0; i < pairsPool.Count; i++)
                {
                    if (pairsPool[i].Data == item)
                    {
                        exists = true;
                        DataViewPair p = pairsPool[i];
                        dataViewPairs.Add(p);
                        pairsPool.RemoveAt(i);
                        break;
                    }
                }
                if (!exists)
                {
                    //does not exist create a new one
                    dataViewPairs.Add(new DataViewPair(item, cellView.Clone(), comparer));
                }
            }

            this.items.Clear();
            this.items.AddRange(items);

            //Adjust position of scroll view
            yPosition -= dif * (cellView.GetDimensions.y + verticalCellPadding);
            yPosition  = Mathf.Clamp(yPosition, 0, yPosition);

            dataViewPairs.Sort();

            EditorWindow.focusedWindow.Repaint();
        }