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

Side by Side Diff: frontend/client/src/autotest/common/spreadsheet/SpreadsheetSelectionManager.java

Issue 1595019: Merge remote branch 'origin/upstream' into tempbranch (Closed)
Patch Set: Created 10 years, 8 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
OLDNEW
(Empty)
1 package autotest.common.spreadsheet;
2
3 import autotest.common.Utils;
4 import autotest.common.spreadsheet.Spreadsheet.CellInfo;
5
6 import java.util.ArrayList;
7 import java.util.Collection;
8 import java.util.HashSet;
9 import java.util.List;
10
11 // TODO: hopefully some of this could be combined with autotest.common.table.Sel ectionManager using
12 // generics
13 // TODO: get rid of header selection
14 public class SpreadsheetSelectionManager {
15 private Spreadsheet spreadsheet;
16 private Collection<CellInfo> selectedCells = new HashSet<CellInfo>();
17 private SpreadsheetSelectionListener listener;
18
19 public static interface SpreadsheetSelectionListener {
20 public void onCellsSelected(List<CellInfo> cells);
21 public void onCellsDeselected(List<CellInfo> cells);
22 }
23
24 public SpreadsheetSelectionManager(Spreadsheet spreadsheet,
25 SpreadsheetSelectionListener listener) {
26 this.spreadsheet = spreadsheet;
27 this.listener = listener;
28 }
29
30 public void toggleSelected(CellInfo cell) {
31 if (selectedCells.contains(cell)) {
32 deselectCell(cell);
33 notifyDeselected(Utils.wrapObjectWithList(cell));
34 } else {
35 selectCell(cell);
36 notifySelected(Utils.wrapObjectWithList(cell));
37 }
38 }
39
40 private void selectCell(CellInfo cell) {
41 selectedCells.add(cell);
42 spreadsheet.setHighlighted(cell, true);
43 }
44
45 private void deselectCell(CellInfo cell) {
46 selectedCells.remove(cell);
47 spreadsheet.setHighlighted(cell, false);
48 }
49
50 public List<CellInfo> getSelectedCells() {
51 return new ArrayList<CellInfo>(selectedCells);
52 }
53
54 public boolean isEmpty() {
55 return selectedCells.isEmpty();
56 }
57
58 public void clearSelection() {
59 List<CellInfo> cells = getSelectedCells();
60 for (CellInfo cell : cells) {
61 deselectCell(cell);
62 }
63 notifyDeselected(cells);
64 }
65
66 public void selectAll() {
67 List<CellInfo> selectedCells = new ArrayList<CellInfo>();
68 for (CellInfo[] row : spreadsheet.dataCells) {
69 for (CellInfo cell : row) {
70 if (cell == null || cell.isEmpty()) {
71 continue;
72 }
73 selectCell(cell);
74 selectedCells.add(cell);
75 }
76 }
77 notifySelected(selectedCells);
78 }
79
80 private void notifyDeselected(List<CellInfo> cells) {
81 if (listener != null) {
82 listener.onCellsDeselected(cells);
83 }
84 }
85
86 private void notifySelected(List<CellInfo> selectedCells) {
87 if (listener != null) {
88 listener.onCellsSelected(selectedCells);
89 }
90 }
91 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698