Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: ui/base/models/list_selection_model.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/base/models/list_model_unittest.cc ('k') | ui/base/models/list_selection_model.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_BASE_MODELS_LIST_SELECTION_MODEL_H_
6 #define UI_BASE_MODELS_LIST_SELECTION_MODEL_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "ui/base/ui_base_export.h"
12
13 namespace ui {
14
15 // Selection model represented as a list of ints. Used by the TabStrip. In
16 // addition to the set of selected indices ListSelectionModel maintains the
17 // following:
18 // active: the index of the currently visible tab in the tab strip.
19 // anchor: the index of the last tab the user clicked on. Extending the
20 // selection extends it from this index.
21 //
22 // Typically there is only one selected item, in which case the anchor and
23 // active index correspond to the same thing.
24 class UI_BASE_EXPORT ListSelectionModel {
25 public:
26 typedef std::vector<int> SelectedIndices;
27
28 // Used to identify no selection.
29 static const int kUnselectedIndex;
30
31 ListSelectionModel();
32 ~ListSelectionModel();
33
34 // See class description for details of the anchor.
35 void set_anchor(int anchor) { anchor_ = anchor; }
36 int anchor() const { return anchor_; }
37
38 // See class description for details of active.
39 void set_active(int active) { active_ = active; }
40 int active() const { return active_; }
41
42 // True if nothing is selected.
43 bool empty() const { return selected_indices_.empty(); }
44
45 // Number of selected indices.
46 size_t size() const { return selected_indices_.size(); }
47
48 // Increments all indices >= |index|. For example, if the selection consists
49 // of [0, 1, 5] and this is invoked with 1, it results in [0, 2, 6]. This also
50 // updates the anchor and active indices.
51 // This is used when a new tab is inserted into the tabstrip.
52 void IncrementFrom(int index);
53
54 // Shifts all indices > |index| down by 1. If |index| is selected, it is
55 // removed. For example, if the selection consists of [0, 1, 5] and this is
56 // invoked with 1, it results in [0, 4]. This is used when a tab is removed
57 // from the tabstrip.
58 void DecrementFrom(int index);
59
60 // Sets the anchor, active and selection to |index|.
61 void SetSelectedIndex(int index);
62
63 // Returns true if |index| is selected.
64 bool IsSelected(int index) const;
65
66 // Adds |index| to the selection. This does not change the active or anchor
67 // indices.
68 void AddIndexToSelection(int index);
69
70 // Removes |index| from the selection. This does not change the active or
71 // anchor indices.
72 void RemoveIndexFromSelection(int index);
73
74 // Extends the selection from the anchor to |index|. If the anchor is empty,
75 // this sets the anchor, selection and active indices to |index|.
76 void SetSelectionFromAnchorTo(int index);
77
78 // Makes sure the indices from the anchor to |index| are selected. This only
79 // adds to the selection.
80 void AddSelectionFromAnchorTo(int index);
81
82 // Invoked when an item moves. |from| is the original index, and |to| the
83 // target index.
84 // NOTE: this matches the TabStripModel API. If moving to a greater index,
85 // |to| should be the index *after* removing |from|. For example, consider
86 // three tabs 'A B C', to move A to the end of the list, this should be
87 // invoked with '0, 2'.
88 void Move(int from, int to);
89
90 // Sets the anchor and active to kUnselectedIndex, and removes all the
91 // selected indices.
92 void Clear();
93
94 // Returns the selected indices. The selection is always ordered in acending
95 // order.
96 const SelectedIndices& selected_indices() const { return selected_indices_; }
97
98 // Copies the selection from |source| to this.
99 void Copy(const ListSelectionModel& source);
100
101 // Compares this selection with |rhs|.
102 bool Equals(const ListSelectionModel& rhs) const;
103
104 private:
105 SelectedIndices selected_indices_;
106
107 int active_;
108
109 int anchor_;
110
111 DISALLOW_COPY_AND_ASSIGN(ListSelectionModel);
112 };
113
114 } // namespace ui
115
116 #endif // UI_BASE_MODELS_LIST_SELECTION_MODEL_H_
OLDNEW
« no previous file with comments | « ui/base/models/list_model_unittest.cc ('k') | ui/base/models/list_selection_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698