コード例 #1
0
        public void AttachBorder(LabelingBorders border)
        {
            if (border == null)
            {
                throw new ArgumentNullException("border", "'border' cannot be null");
            }

            List <int> prevIndices = new List <int>();

            foreach (int prevIndex in this.SelectedIndices)
            {
                prevIndices.Add(prevIndex);
            }
            _border = border;
            Items.Clear();
            int index = 0;

            foreach (var text in _border.GetLabelNames(true))
            {
                Items.Add(text);
                if (prevIndices.Contains(index))
                {
                    SelectedIndices.Add(index);
                }
                index++;
            }
        }
コード例 #2
0
ファイル: ListViewEx.cs プロジェクト: tokihk/Ratatoskr
        private void OnItemSelectTask(object sender, EventArgs e)
        {
            item_select_step_timer_.Restart();

            while (item_select_step_timer_.ElapsedMilliseconds < ITEM_SELECT_STEP)
            {
                if (item_select_index_ >= VirtualListSize)
                {
                    break;
                }
                SelectedIndices.Add(item_select_index_++);
            }

            ItemSelectBusyStatusChanging?.Invoke(this, EventArgs.Empty);

            if (item_select_index_ >= VirtualListSize)
            {
                item_select_task_.Stop();

                ItemSelectBusy = false;
                ItemSelectBusyStatusChanged?.Invoke(this, EventArgs.Empty);

                OnSelectedIndexChanged(EventArgs.Empty);
            }
        }
コード例 #3
0
ファイル: ListViewEx.cs プロジェクト: tokihk/Ratatoskr
        protected override void OnKeyDown(KeyEventArgs e)
        {
            if (e.KeyData == (Keys.Control | Keys.A))
            {
                /* === CTRL + A (全選択) === */
                SelectAllItems();

#if false
                item_select_busy_ = true;

                for (var value = 0; value < items_.Count; value++)
                {
                    SelectedIndices.Add(value);
                }

                item_select_busy_ = false;
                OnSelectedIndexChanged(EventArgs.Empty);
#endif
            }
            else if ((!ReadOnly) && (e.KeyData == (Keys.Delete)))
            {
                /* === Delete (削除) === */
                ItemRemoveAt((IEnumerable <int>)SelectedIndices);
            }

            base.OnKeyDown(e);
        }
コード例 #4
0
        /// <summary>
        /// Select the row that is displaying the given model object. All other rows are deselected.
        /// </summary>
        /// <param name="modelObject">Model object to select</param>
        /// <param name="setFocus">Should the object be focused as well?</param>
        public override void SelectObject(object modelObject, bool setFocus)
        {
            // Without a data source, we can't do this.
            if (VirtualListDataSource == null)
            {
                return;
            }

            // Check that the object is in the list (plus not all data sources can locate objects)
            int index = VirtualListDataSource.GetObjectIndex(modelObject);

            if (index < 0 || index >= VirtualListSize)
            {
                return;
            }

            // If the given model is already selected, don't do anything else (prevents an flicker)
            if (SelectedIndices.Count == 1 && SelectedIndices[0] == index)
            {
                return;
            }

            // Finally, select the row
            SelectedIndices.Clear();
            SelectedIndices.Add(index);
            if (setFocus && SelectedItem != null)
            {
                SelectedItem.Focused = true;
            }
        }
コード例 #5
0
ファイル: DetailsListView.cs プロジェクト: t-ashula/hoehoe2
 public void SelectAllItem()
 {
     //// foreach (ListViewItem lvi in Items) { lvi.Selected = true; }
     for (int i = 0; i < VirtualListSize; i++)
     {
         SelectedIndices.Add(i);
     }
 }
コード例 #6
0
ファイル: ListViewBase.cs プロジェクト: cube-soft/Cube.Note
 /* ----------------------------------------------------------------- */
 ///
 /// Select
 ///
 /// <summary>
 /// 項目を選択します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public void Select(int index)
 {
     if (index < 0 || index >= Count)
     {
         return;
     }
     SelectedIndices.Clear();
     SelectedIndices.Add(index);
 }
コード例 #7
0
 public void SelectItemByDefault()
 {
     if (Items.Count <= 0)
     {
         return;
     }
     SelectedIndices.Clear();
     SelectedIndices.Add(0);
 }
コード例 #8
0
 private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)
 {
     SelectedIndices.Clear();
     for (int x = 0; x < TotalCount; x++)
     {
         SelectedIndices.Add(x);
     }
     printBox.Refresh();
 }
コード例 #9
0
ファイル: PagedListView.cs プロジェクト: fudge-project/fudge
        private void Display(int selectIndex)
        {
            Display();

            if (selectIndex != -1)
            {
                SelectedIndices.Add(selectIndex % PageSize);
                EnsureVisible(SelectedIndices[0]);
            }
        }
コード例 #10
0
 /// <summary>
 /// Sets the item as selected
 /// </summary>
 /// <param name="itemIndex"></param>
 /// <param name="checkedValue"></param>
 public void SetItemSelected(int itemIndex, bool checkedValue)
 {
     if (checkedValue)
     {
         SelectedIndices.Add(Items[itemIndex]);
     }
     else
     {
         SelectedIndices.Remove(itemIndex);
     }
 }
コード例 #11
0
 // ------------------------------------------------------------------------
 // restore given selection
 // ------------------------------------------------------------------------
 private void RestoreSelection(Dictionary <string, int> selection)
 {
     SelectedIndices.Clear();
     for (int pos = 0; pos < _list.Count; ++pos)
     {
         if (selection.ContainsKey(_list[pos].fullPath))
         {
             SelectedIndices.Add(pos);
         }
     }
 }
コード例 #12
0
 public void SelectVirtualItem(int index)
 {
     SelectedIndices.Clear();
     if (index > -1)
     {
         SelectedIndices.Add(index);
         EnsureVisible(index);
         Items[index].Focused = true;
     }
     Focus();
 }
コード例 #13
0
ファイル: ListViewBase.cs プロジェクト: cube-soft/Cube.Note
 /* ----------------------------------------------------------------- */
 ///
 /// SelectMore
 ///
 /// <summary>
 /// 既に選択されている項目を保持したまま、項目を選択します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public void SelectMore(int index)
 {
     if (index < 0 || index >= Count)
     {
         return;
     }
     if (SelectedIndices.Contains(index))
     {
         return;
     }
     SelectedIndices.Add(index);
 }
コード例 #14
0
ファイル: ListViewBase.cs プロジェクト: cube-soft/Cube.Note
 /* ----------------------------------------------------------------- */
 ///
 /// Select
 ///
 /// <summary>
 /// 項目を選択します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public void Select(IEnumerable <int> indices)
 {
     SelectedIndices.Clear();
     foreach (var index in indices)
     {
         if (index < 0 || index >= Count)
         {
             continue;
         }
         SelectedIndices.Add(index);
     }
 }
コード例 #15
0
        public virtual bool Select(int index)
        {
            if (index < 0 || index >= Items.Count)
            {
                return(false);
            }

            SelectedIndices.Clear();
            SelectedIndices.Add(index);
            Items[index]?.EnsureVisible();
            return(true);
        }
コード例 #16
0
        public bool SelectMatch(String words, UIExtension.SelectTask selectTask, bool caseSensitive, bool wholeWord, bool findReplace)
        {
            if (Items.Count == 0)
            {
                return(false);
            }

            if (SelectedIndices.Count == 0)
            {
                SelectedIndices.Add(0);
            }

            int selIndex   = SelectedIndices[0];
            int matchIndex = -1;

            switch (selectTask)
            {
            case UIExtension.SelectTask.SelectFirstTask:
                matchIndex = FindTask(words, 0, true, caseSensitive, wholeWord, findReplace);
                break;

            case UIExtension.SelectTask.SelectNextTask:
                matchIndex = FindTask(words, (selIndex + 1), true, caseSensitive, wholeWord, findReplace);
                break;

            case UIExtension.SelectTask.SelectNextTaskInclCurrent:
                matchIndex = FindTask(words, selIndex, true, caseSensitive, wholeWord, findReplace);
                break;

            case UIExtension.SelectTask.SelectPrevTask:
                matchIndex = FindTask(words, (selIndex - 1), false, caseSensitive, wholeWord, findReplace);
                break;

            case UIExtension.SelectTask.SelectLastTask:
                matchIndex = FindTask(words, (Items.Count - 1), false, caseSensitive, wholeWord, findReplace);
                break;
            }

            if (matchIndex != -1)
            {
                SelectedIndices.Clear();
                SelectedIndices.Add(matchIndex);

                EnsureSelectionVisible();
                return(true);
            }

            return(false);
        }
コード例 #17
0
ファイル: ListViewBase.cs プロジェクト: cube-soft/Cube.Note
 /* ----------------------------------------------------------------- */
 ///
 /// SelectMore
 ///
 /// <summary>
 /// 既に選択されている項目を保持したまま、項目を選択します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 public void SelectMore(IEnumerable <int> indices)
 {
     foreach (var index in indices)
     {
         if (index < 0 || index >= Count)
         {
             return;
         }
         if (SelectedIndices.Contains(index))
         {
             return;
         }
         SelectedIndices.Add(index);
     }
 }
コード例 #18
0
        public void AddCircleDiagramNode(CircleDiagramNode node)
        {
            var lvItem = new ListViewItem {
                Text = node.Text.Trim().Replace("\r\n", " "), Name = node.Name
            };
            var targetGroup = Groups[node.StartCircleNumber.ToString()]
                              ?? Groups[Consts.NoneGroup];

            if (targetGroup != null)
            {
                lvItem.Group = targetGroup;
            }
            var newListItem = Items.Add(lvItem);

            SelectedIndices.Clear();
            SelectedIndices.Add(newListItem.Index);
        }
コード例 #19
0
ファイル: ListViewEx.cs プロジェクト: tokihk/Ratatoskr
        protected override void OnVirtualItemsSelectionRangeChanged(ListViewVirtualItemsSelectionRangeChangedEventArgs e)
        {
            base.OnVirtualItemsSelectionRangeChanged(e);

            if (e.IsSelected)
            {
                ItemSelectBusy = true;
                SelectedIndices.Clear();
                for (var index = e.StartIndex; index <= e.EndIndex; index++)
                {
                    SelectedIndices.Add(index);
                }
                ItemSelectBusy = false;

                OnSelectedIndexChanged(EventArgs.Empty);
            }
        }
コード例 #20
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Fill the feature grid (i.e. list) from the DB.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public void Load()
        {
            _ignoreCheckChanges = true;
            BeginUpdate();
            Items.Clear();
            LoadFeatures();
            CurrentMask = _emptyMask;
            AdjustColumnWidth();

            if (Items.Count > 0)
            {
                SelectedIndices.Add(0);
            }

            EndUpdate();
            _ignoreCheckChanges = false;
        }
コード例 #21
0
        public UIActionState TrySelectAllText(bool perform)
        {
            if (Items.Count == 0)
            {
                return(UIActionVisibility.Disabled);
            }

            if (perform)
            {
                SelectedIndices.Clear();
                for (int i = 0; i < Items.Count; i++)
                {
                    SelectedIndices.Add(i);
                }
            }

            return(UIActionVisibility.Enabled);
        }
コード例 #22
0
        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedIndices == null || SelectedIndices.Count <= 0)
            {
                return;
            }

            int s = SelectedIndices[0];

            List <SearchListViewItem> items = new List <SearchListViewItem>();

            foreach (int x in SelectedIndices)
            {
                items.Add(GetItemAtIndex(x));
            }

            foreach (SearchListViewItem item in items)
            {
                RemoveItem(item);
            }

            vertSBar.Maximum = a.Count - MaxItemsPerPage;
            if (vertSBar.Maximum <= 0)
            {
                vertSBar.Maximum  = 0;
                isVertSBarVisible = false;
            }
            else if (vertSBar.Value >= vertSBar.Maximum)
            {
                vertSBar.Value = vertSBar.Maximum - 1;
            }

            parentControl.SetProgBarText("Results: " + a.Count.ToString("N0"));

            SelectedIndices.Clear();

            if (s >= TotalCount)
            {
                s = TotalCount - 1;
            }

            SelectedIndices.Add(s);
            //vertSBar.Value = s;
        }
コード例 #23
0
        internal void SelectItems(int highItem)
        {
            if (HighestItemSelected <= highItem)
            {
                for (int i = HighestItemSelected; i <= highItem; ++i)
                {
                    SelectedIndices.Add(i);
                }
            }
            else
            {
                for (int i = HighestItemSelected; i > highItem; --i)
                {
                    SelectedIndices.Remove(i);
                }
            }

            HighestItemSelected = highItem;
        }
コード例 #24
0
        public void newItem_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            ListViewItemViewModel item = ((ListViewItemViewModel)sender);

            if (item.Selected || item.Focused)
            {
                int index = Items.IndexOf(item);
                if (index > -1)
                {
                    SelectedIndices.Add(index);
                }
            }
            if (item.Checked)
            {
                int index = Items.IndexOf(item);
                if (index > -1)
                {
                    CheckedIndices.Add(index);
                }
            }
        }
コード例 #25
0
        /*
         * public ObjectCollection Items
         * {
         *      get{return _dataSource.dataArray;}
         *      set{_dataSource.dataArray = value;}
         * }
         */

        public void SetSelected(int index, bool value)
        {
            if (index < 0 || index >= Items.Count)
            {
                throw new ArgumentOutOfRangeException("Index of out range");
            }

            if (SelectionMode == SelectionMode.None)
            {
                throw new InvalidOperationException();
            }

            if (value)
            {
                SelectedIndices.Add(index);
                tableView.SelectRows(new NSIndexSet((uint)index), true);
            }
            else
            {
                SelectedIndices.Remove(index);
                tableView.DeselectRow(index);
            }
        }
コード例 #26
0
        // ********************************************************************************
        /// <summary>
        ///
        /// </summary>
        /// <param name="bNext"></param>
        /// <returns></returns>
        /// <created>UPh,25.10.2015</created>
        /// <changed>UPh,25.10.2015</changed>
        // ********************************************************************************
        internal void SelectNextItem(bool bNext)
        {
            if (VirtualListSize == 0)
            {
                return;
            }

            if (SelectedIndices.Count == 0)
            {
                SelectedIndices.Add(0);
                return;
            }

            int sel = SelectedIndices[0];

            if (bNext)
            {
                if (sel >= VirtualListSize - 1)
                {
                    return;
                }
                sel++;
            }
            else
            {
                if (sel <= 0)
                {
                    return;
                }
                sel--;
            }

            SelectedIndices.Clear();
            SelectedIndices.Add(sel);
            EnsureVisible(sel);
        }
コード例 #27
0
        /// <summary>
        /// Select the rows that is displaying any of the given model object. All other rows are deselected.
        /// </summary>
        /// <param name="modelObjects">A collection of model objects</param>
        /// <remarks>This method has O(n) performance where n is the number of model objects passed.
        /// Do not use this to select all the rows in the list -- use SelectAll() for that.</remarks>
        public override void SelectObjects(IList <object> modelObjects)
        {
            // Without a data source, we can't do this.
            if (VirtualListDataSource == null)
            {
                return;
            }

            SelectedIndices.Clear();

            if (modelObjects == null)
            {
                return;
            }

            foreach (object modelObject in modelObjects)
            {
                int index = VirtualListDataSource.GetObjectIndex(modelObject);
                if (index >= 0 && index < VirtualListSize)
                {
                    SelectedIndices.Add(index);
                }
            }
        }
コード例 #28
0
        /// <summary>
        /// Adds a new element to the combo
        /// </summary>
        /// <param name="item">item to add</param>
        /// <param name="index">position to adding</param>
        public int AddItem(object item, int index = -1)
        {
            var newItem = CreateItem(item);

            if (index == -1 || index == ListViewItemViewModels.Count)
            {
                ListViewItemViewModels.Add(newItem);
                SortElements();
                ListViewItemViewModels_CollectionChanged();
                if (newItem.Selected)
                {
                    SelectedIndices.Add(newItem.Index);
                }
                if (newItem.Checked)
                {
                    CheckedIndices.Add(newItem.Index);
                }

                return(newItem.Index);
            }
            ListViewItemViewModels.Insert(index, newItem);
            SortElements();
            return(index);
        }
コード例 #29
0
ファイル: MeshList.cs プロジェクト: Ploaj/HSDLib
        public MeshList() : base()
        {
            //Activate double buffering
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

            //Enable the OnNotifyMessage event so we get a chance to filter out
            // Windows messages before they get to the form's WndProc
            this.SetStyle(ControlStyles.EnableNotifyMessage, true);

            this.DrawMode  = DrawMode.OwnerDrawFixed;
            this.DrawItem += Ditem;


            HashSet <int> _selIndex = new HashSet <int>();
            HashSet <int> _newSet   = new HashSet <int>();
            bool          updating  = false;

            SelectedIndexChanged += (sender, args) =>
            {
                if (updating)
                {
                    return;
                }

                var mpos  = PointToClient(Cursor.Position);
                var index = IndexFromPoint(mpos);

                if (index != -1 &&
                    Items[index] is MeshListItem checkable &&
                    mpos.X < ItemHeight)
                {
                    // undo selection
                    _newSet.Clear();
                    foreach (int i in SelectedIndices)
                    {
                        _newSet.Add(i);
                    }

                    if (!_newSet.SetEquals(_selIndex))
                    {
                        updating = true;
                        BeginUpdate();
                        SelectedIndices.Clear();
                        SelectedIndex = -1;
                        foreach (var v in _selIndex)
                        {
                            SelectedIndices.Add(v);
                        }
                        EndUpdate();
                        updating = false;
                    }

                    // toggle visibility
                    {
                        if (SelectedIndices.Contains(index))
                        {
                            bool state = !checkable.Visible;
                            foreach (var s in SelectedItems)
                            {
                                if (s is MeshListItem mesh)
                                {
                                    mesh.Visible = state;
                                }
                            }
                        }
                        else
                        {
                            checkable.Visible = !checkable.Visible;
                        }
                        ItemVisiblilityChanged?.Invoke(this, new EventArgs());
                        Invalidate();
                    }
                    return;
                }

                _selIndex.Clear();
                foreach (int v in SelectedIndices)
                {
                    _selIndex.Add(v);
                }
            };
        }
コード例 #30
0
ファイル: MultiSelect.cs プロジェクト: hossein-abdn/Infra.Wpf
        private void OnSelectedItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            if (e.Action == NotifyCollectionChangedAction.Add && ChangeSource != ChangeSourceEnum.FromSelectedIndices)
            {
                int index = Items.IndexOf(e.NewItems[0]);
                if (index == -1)
                {
                    if (SelectedItems.IndexOf(e.NewItems[0]) != -1)
                    {
                        ChangeSource = ChangeSourceEnum.FromSelectedIndices;
                        SelectedItems.Remove(e.NewItems[0]);
                        ChangeSource = ChangeSourceEnum.None;
                    }
                    return;
                }

                if (SelectedItems.Cast <object>().Where(x => x == e.NewItems[0]).Count() > 1)
                {
                    ChangeSource = ChangeSourceEnum.FromSelectedIndices;
                    SelectedItems.Remove(e.NewItems[0]);
                    ChangeSource = ChangeSourceEnum.None;
                    return;
                }

                ((MultiSelectItem)itemContainers[index]).IsSelected = true;
                contentPresenter.Children.Add(GeneratePanelItem(e.NewItems[0]));
                ChangeSource = ChangeSourceEnum.FromSelectedItems;
                SelectedIndices.Add(index);
                if (!(SelectedIndices is INotifyCollectionChanged))
                {
                    OnSelectedIndices_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, index));
                }
                RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, new object[0], e.NewItems));
            }
            else if (e.Action == NotifyCollectionChangedAction.Remove && ChangeSource != ChangeSourceEnum.FromSelectedIndices)
            {
                int index = Items.IndexOf(e.OldItems[0]);
                if (index == -1)
                {
                    return;
                }

                ((MultiSelectItem)itemContainers[index]).IsSelected = false;
                contentPresenter.Children.RemoveAt(e.OldStartingIndex);
                ChangeSource = ChangeSourceEnum.FromSelectedItems;
                int indexSelectedIndex = SelectedIndices.IndexOf(index);
                SelectedIndices.Remove(index);
                if (!(SelectedIndices is INotifyCollectionChanged))
                {
                    OnSelectedIndices_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, index, indexSelectedIndex));
                }
                RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, e.OldItems, new object[0]));
            }
            else if (e.Action == NotifyCollectionChangedAction.Reset && ChangeSource != ChangeSourceEnum.FromSelectedIndices)
            {
                foreach (var item in itemContainers)
                {
                    ((MultiSelectItem)item).IsSelected = false;
                }
                contentPresenter.Children.Clear();
                ChangeSource = ChangeSourceEnum.FromSelectedItems;
                SelectedIndices.Clear();
                if (!(SelectedIndices is INotifyCollectionChanged))
                {
                    OnSelectedIndices_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
                }
                RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, new object[0], new object[0]));
            }

            ChangeSource = ChangeSourceEnum.None;
        }