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

Unified Diff: ui/views/controls/table/table_view.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/controls/table/table_utils_unittest.cc ('k') | ui/views/controls/table/table_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/controls/table/table_view.h
diff --git a/ui/views/controls/table/table_view.h b/ui/views/controls/table/table_view.h
deleted file mode 100644
index c1a9162f9af2f6ae543c5b5d09175ddc34436882..0000000000000000000000000000000000000000
--- a/ui/views/controls/table/table_view.h
+++ /dev/null
@@ -1,349 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_VIEWS_CONTROLS_TABLE_TABLE_VIEW_VIEWS_H_
-#define UI_VIEWS_CONTROLS_TABLE_TABLE_VIEW_VIEWS_H_
-
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "ui/base/models/list_selection_model.h"
-#include "ui/base/models/table_model.h"
-#include "ui/base/models/table_model_observer.h"
-#include "ui/gfx/font_list.h"
-#include "ui/views/view.h"
-#include "ui/views/views_export.h"
-
-// A TableView is a view that displays multiple rows with any number of columns.
-// TableView is driven by a TableModel. The model returns the contents
-// to display. TableModel also has an Observer which is used to notify
-// TableView of changes to the model so that the display may be updated
-// appropriately.
-//
-// TableView itself has an observer that is notified when the selection
-// changes.
-//
-// When a table is sorted the model coordinates do not necessarily match the
-// view coordinates. All table methods are in terms of the model. If you need to
-// convert to view coordinates use ModelToView().
-//
-// Sorting is done by a locale sensitive string sort. You can customize the
-// sort by way of overriding TableModel::CompareValues().
-namespace views {
-
-struct GroupRange;
-class TableGrouper;
-class TableHeader;
-class TableViewObserver;
-class TableViewRowBackgroundPainter;
-class TableViewTestHelper;
-
-// The cells in the first column of a table can contain:
-// - only text
-// - a small icon (16x16) and some text
-// - a check box and some text
-enum TableTypes {
- TEXT_ONLY = 0,
- ICON_AND_TEXT,
-};
-
-class VIEWS_EXPORT TableView
- : public views::View,
- public ui::TableModelObserver {
- public:
- // Used to track a visible column. Useful only for the header.
- struct VIEWS_EXPORT VisibleColumn {
- VisibleColumn();
- ~VisibleColumn();
-
- // The column.
- ui::TableColumn column;
-
- // Starting x-coordinate of the column.
- int x;
-
- // Width of the column.
- int width;
- };
-
- // Describes a sorted column.
- struct VIEWS_EXPORT SortDescriptor {
- SortDescriptor() : column_id(-1), ascending(true) {}
- SortDescriptor(int column_id, bool ascending)
- : column_id(column_id),
- ascending(ascending) {}
-
- // ID of the sorted column.
- int column_id;
-
- // Is the sort ascending?
- bool ascending;
- };
-
- typedef std::vector<SortDescriptor> SortDescriptors;
-
- // Creates a new table using the model and columns specified.
- // The table type applies to the content of the first column (text, icon and
- // text, checkbox and text).
- TableView(ui::TableModel* model,
- const std::vector<ui::TableColumn>& columns,
- TableTypes table_type,
- bool single_selection);
- virtual ~TableView();
-
- // Assigns a new model to the table view, detaching the old one if present.
- // If |model| is NULL, the table view cannot be used after this call. This
- // should be called in the containing view's destructor to avoid destruction
- // issues when the model needs to be deleted before the table.
- void SetModel(ui::TableModel* model);
- ui::TableModel* model() const { return model_; }
-
- // Returns a new ScrollView that contains the receiver.
- View* CreateParentIfNecessary();
-
- void SetRowBackgroundPainter(
- scoped_ptr<TableViewRowBackgroundPainter> painter);
-
- // Sets the TableGrouper. TableView does not own |grouper| (common use case is
- // to have TableModel implement TableGrouper).
- void SetGrouper(TableGrouper* grouper);
-
- // Returns the number of rows in the TableView.
- int RowCount() const;
-
- // Returns the number of selected rows.
- // TODO(sky): remove this and force callers to use selection_model().
- int SelectedRowCount();
-
- // Selects the specified item, making sure it's visible.
- void Select(int model_row);
-
- // Returns the first selected row in terms of the model.
- int FirstSelectedRow();
-
- const ui::ListSelectionModel& selection_model() const {
- return selection_model_;
- }
-
- // Changes the visibility of the specified column (by id).
- void SetColumnVisibility(int id, bool is_visible);
- bool IsColumnVisible(int id) const;
-
- // Adds the specified column. |col| is not made visible.
- void AddColumn(const ui::TableColumn& col);
-
- // Returns true if the column with the specified id is known (either visible
- // or not).
- bool HasColumn(int id) const;
-
- // TODO(sky): rename to set_observer().
- void SetObserver(TableViewObserver* observer) {
- table_view_observer_ = observer;
- }
- TableViewObserver* observer() const { return table_view_observer_; }
-
- const std::vector<VisibleColumn>& visible_columns() const {
- return visible_columns_;
- }
-
- // Sets the width of the column. |index| is in terms of |visible_columns_|.
- void SetVisibleColumnWidth(int index, int width);
-
- // Toggles the sort order of the specified visible column index.
- void ToggleSortOrder(int visible_column_index);
-
- const SortDescriptors& sort_descriptors() const { return sort_descriptors_; }
- bool is_sorted() const { return !sort_descriptors_.empty(); }
-
- // Maps from the index in terms of the model to that of the view.
- int ModelToView(int model_index) const;
-
- // Maps from the index in terms of the view to that of the model.
- int ViewToModel(int view_index) const;
-
- int row_height() const { return row_height_; }
-
- // View overrides:
- virtual void Layout() override;
- virtual gfx::Size GetPreferredSize() const override;
- virtual bool OnKeyPressed(const ui::KeyEvent& event) override;
- virtual bool OnMousePressed(const ui::MouseEvent& event) override;
- virtual void OnGestureEvent(ui::GestureEvent* event) override;
- virtual bool GetTooltipText(const gfx::Point& p,
- base::string16* tooltip) const override;
- virtual bool GetTooltipTextOrigin(const gfx::Point& p,
- gfx::Point* loc) const override;
-
- // ui::TableModelObserver overrides:
- virtual void OnModelChanged() override;
- virtual void OnItemsChanged(int start, int length) override;
- virtual void OnItemsAdded(int start, int length) override;
- virtual void OnItemsRemoved(int start, int length) override;
-
- protected:
- // View overrides:
- virtual gfx::Point GetKeyboardContextMenuLocation() override;
- virtual void OnPaint(gfx::Canvas* canvas) override;
- virtual void OnFocus() override;
- virtual void OnBlur() override;
-
- private:
- friend class TableViewTestHelper;
- struct GroupSortHelper;
- struct SortHelper;
-
- // Used during painting to determine the range of cells that need to be
- // painted.
- // NOTE: the row indices returned by this are in terms of the view and column
- // indices in terms of |visible_columns_|.
- struct VIEWS_EXPORT PaintRegion {
- PaintRegion();
- ~PaintRegion();
-
- int min_row;
- int max_row;
- int min_column;
- int max_column;
- };
-
- // Used by AdvanceSelection() to determine the direction to change the
- // selection.
- enum AdvanceDirection {
- ADVANCE_DECREMENT,
- ADVANCE_INCREMENT,
- };
-
- // Invoked when the number of rows changes in some way.
- void NumRowsChanged();
-
- // Resets the sort descriptions.
- void SetSortDescriptors(const SortDescriptors& sort_descriptors);
-
- // Does the actual sort and updates the mappings (|view_to_model_| and
- // |model_to_view_|) appropriately.
- void SortItemsAndUpdateMapping();
-
- // Used to sort the two rows. Returns a value < 0, == 0 or > 0 indicating
- // whether the row2 comes before row1, row2 is the same as row1 or row1 comes
- // after row2. This invokes CompareValues on the model with the sorted column.
- int CompareRows(int model_row1, int model_row2);
-
- // Returns the bounds of the specified row.
- gfx::Rect GetRowBounds(int row) const;
-
- // Returns the bounds of the specified cell. |visible_column_index| indexes
- // into |visible_columns_|.
- gfx::Rect GetCellBounds(int row, int visible_column_index) const;
-
- // Adjusts |bounds| based on where the text should be painted. |bounds| comes
- // from GetCellBounds() and |visible_column_index| is the corresponding column
- // (in terms of |visible_columns_|).
- void AdjustCellBoundsForText(int visible_column_index,
- gfx::Rect* bounds) const;
-
- // Creates |header_| if necessary.
- void CreateHeaderIfNecessary();
-
- // Updates the |x| and |width| of each of the columns in |visible_columns_|.
- void UpdateVisibleColumnSizes();
-
- // Returns the cells that need to be painted for the specified region.
- // |bounds| is in terms of |this|.
- PaintRegion GetPaintRegion(const gfx::Rect& bounds) const;
-
- // Returns the bounds that need to be painted based on the clip set on
- // |canvas|.
- gfx::Rect GetPaintBounds(gfx::Canvas* canvas) const;
-
- // Invokes SchedulePaint() for the selected rows.
- void SchedulePaintForSelection();
-
- // Returns the TableColumn matching the specified id.
- ui::TableColumn FindColumnByID(int id) const;
-
- // Sets the selection to the specified index (in terms of the view).
- void SelectByViewIndex(int view_index);
-
- // Sets the selection model to |new_selection|.
- void SetSelectionModel(const ui::ListSelectionModel& new_selection);
-
- // Advances the selection (from the active index) in the specified direction.
- void AdvanceSelection(AdvanceDirection direction);
-
- // Sets |model| appropriately based on a event.
- void ConfigureSelectionModelForEvent(const ui::LocatedEvent& event,
- ui::ListSelectionModel* model) const;
-
- // Set the selection state of row at |view_index| to |select|, additionally
- // any other rows in the GroupRange containing |view_index| are updated as
- // well. This does not change the anchor or active index of |model|.
- void SelectRowsInRangeFrom(int view_index,
- bool select,
- ui::ListSelectionModel* model) const;
-
- // Returns the range of the specified model index. If a TableGrouper has not
- // been set this returns a group with a start of |model_index| and length of
- // 1.
- GroupRange GetGroupRange(int model_index) const;
-
- // Used by both GetTooltipText methods. Returns true if there is a tooltip and
- // sets |tooltip| and/or |tooltip_origin| as appropriate, each of which may be
- // NULL.
- bool GetTooltipImpl(const gfx::Point& location,
- base::string16* tooltip,
- gfx::Point* tooltip_origin) const;
-
- ui::TableModel* model_;
-
- std::vector<ui::TableColumn> columns_;
-
- // The set of visible columns. The values of these point to |columns_|. This
- // may contain a subset of |columns_|.
- std::vector<VisibleColumn> visible_columns_;
-
- // The header. This is only created if more than one column is specified or
- // the first column has a non-empty title.
- TableHeader* header_;
-
- const TableTypes table_type_;
-
- const bool single_selection_;
-
- // TODO(sky): rename to observer_.
- TableViewObserver* table_view_observer_;
-
- // The selection, in terms of the model.
- ui::ListSelectionModel selection_model_;
-
- gfx::FontList font_list_;
-
- int row_height_;
-
- // Width of the ScrollView last time Layout() was invoked. Used to determine
- // when we should invoke UpdateVisibleColumnSizes().
- int last_parent_width_;
-
- // The width we layout to. This may differ from |last_parent_width_|.
- int layout_width_;
-
- // Current sort.
- SortDescriptors sort_descriptors_;
-
- // Mappings used when sorted.
- std::vector<int> view_to_model_;
- std::vector<int> model_to_view_;
-
- scoped_ptr<TableViewRowBackgroundPainter> row_background_painter_;
-
- TableGrouper* grouper_;
-
- // True if in SetVisibleColumnWidth().
- bool in_set_visible_column_width_;
-
- DISALLOW_COPY_AND_ASSIGN(TableView);
-};
-
-} // namespace views
-
-#endif // UI_VIEWS_CONTROLS_TABLE_TABLE_VIEW_VIEWS_H_
« no previous file with comments | « ui/views/controls/table/table_utils_unittest.cc ('k') | ui/views/controls/table/table_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698