Index: views/controls/table/table_view2.cc |
diff --git a/views/controls/table/table_view2.cc b/views/controls/table/table_view2.cc |
deleted file mode 100644 |
index d3e28e58ab93dac313981cfb792208d72a19fed1..0000000000000000000000000000000000000000 |
--- a/views/controls/table/table_view2.cc |
+++ /dev/null |
@@ -1,334 +0,0 @@ |
-// Copyright (c) 2011 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. |
- |
-#include "views/controls/table/table_view2.h" |
- |
-#include "base/logging.h" |
-#include "ui/base/models/table_model.h" |
-#include "views/controls/native/native_view_host.h" |
-#include "views/controls/table/table_view_observer.h" |
- |
-namespace views { |
- |
-TableView2::TableView2(ui::TableModel* model, |
- const std::vector<ui::TableColumn>& columns, |
- TableTypes table_type, |
- int options) |
- : model_(model), |
- table_type_(table_type), |
- table_view_observer_(NULL), |
- visible_columns_(), |
- all_columns_(), |
- column_count_(static_cast<int>(columns.size())), |
- single_selection_((options & SINGLE_SELECTION) != 0), |
- resizable_columns_((options & RESIZABLE_COLUMNS) != 0), |
- autosize_columns_((options & AUTOSIZE_COLUMNS) != 0), |
- horizontal_lines_((options & HORIZONTAL_LINES) != 0), |
- vertical_lines_((options & VERTICAL_LINES) != 0), |
- native_wrapper_(NULL) { |
- Init(columns); |
-} |
- |
-TableView2::~TableView2() { |
- if (model_) |
- model_->SetObserver(NULL); |
-} |
- |
-void TableView2::SetModel(ui::TableModel* model) { |
- if (model == model_) |
- return; |
- |
- if (model_) |
- model_->SetObserver(NULL); |
- model_ = model; |
- if (model_) |
- model_->SetObserver(this); |
- if (native_wrapper_) |
- OnModelChanged(); |
-} |
- |
-int TableView2::GetRowCount() { |
- if (!native_wrapper_) |
- return 0; |
- return native_wrapper_->GetRowCount(); |
-} |
- |
-int TableView2::SelectedRowCount() { |
- if (!native_wrapper_) |
- return 0; |
- return native_wrapper_->GetSelectedRowCount(); |
-} |
- |
-void TableView2::ClearSelection() { |
- if (native_wrapper_) |
- native_wrapper_->ClearSelection(); |
-} |
- |
-void TableView2::ClearRowFocus() { |
- if (native_wrapper_) |
- native_wrapper_->ClearRowFocus(); |
-} |
- |
-int TableView2::GetFirstSelectedRow() { |
- if (!native_wrapper_) |
- return -1; |
- return native_wrapper_->GetFirstSelectedRow(); |
-} |
- |
-int TableView2::GetFirstFocusedRow() { |
- if (!native_wrapper_) |
- return -1; |
- return native_wrapper_->GetFirstFocusedRow(); |
-} |
- |
-void TableView2::SelectRow(int model_row) { |
- if (!native_wrapper_) |
- return; |
- |
- native_wrapper_->ClearSelection(); |
- native_wrapper_->SetSelectedState(model_row, true); |
- if (table_view_observer_) |
- table_view_observer_->OnSelectionChanged(); |
-} |
- |
-void TableView2::FocusRow(int model_row) { |
- if (!native_wrapper_) |
- return; |
- |
- native_wrapper_->SetFocusState(model_row, true); |
-} |
- |
-bool TableView2::IsRowSelected(int model_row) { |
- if (!native_wrapper_) |
- return false; |
- |
- return native_wrapper_->IsRowSelected(model_row); |
-} |
- |
-bool TableView2::IsRowFocused(int model_row) { |
- if (!native_wrapper_) |
- return false; |
- |
- return native_wrapper_->IsRowFocused(model_row); |
-} |
- |
-void TableView2::OnModelChanged() { |
- if (!native_wrapper_) |
- return; |
- |
- int current_row_count = native_wrapper_->GetRowCount(); |
- if (current_row_count > 0) |
- OnItemsRemoved(0, current_row_count); |
- if (model_ && model_->RowCount()) |
- OnItemsAdded(0, model_->RowCount()); |
-} |
- |
-void TableView2::OnItemsChanged(int start, int length) { |
- if (!native_wrapper_) |
- return; |
- |
- if (length == -1) { |
- DCHECK_GE(start, 0); |
- length = model_->RowCount() - start; |
- } |
- native_wrapper_->OnRowsChanged(start, length); |
-} |
- |
-void TableView2::OnItemsAdded(int start, int length) { |
- if (!native_wrapper_) |
- return; |
- |
- DCHECK(start >= 0 && length >= 0 && start <= native_wrapper_->GetRowCount()); |
- |
- native_wrapper_->OnRowsAdded(start, length); |
-} |
- |
-void TableView2::OnItemsRemoved(int start, int length) { |
- if (!native_wrapper_) |
- return; |
- |
- DCHECK(start >= 0 && length >= 0 && |
- start + length <= native_wrapper_->GetRowCount()); |
- |
- native_wrapper_->OnRowsRemoved(start, length); |
-} |
- |
-void TableView2::AddColumn(const ui::TableColumn& col) { |
- DCHECK_EQ(0U, all_columns_.count(col.id)); |
- all_columns_[col.id] = col; |
-} |
- |
-void TableView2::SetColumns(const std::vector<ui::TableColumn>& columns) { |
- // Remove the currently visible columns. |
- while (!visible_columns_.empty()) |
- SetColumnVisibility(visible_columns_.front(), false); |
- |
- all_columns_.clear(); |
- for (std::vector<ui::TableColumn>::const_iterator i = columns.begin(); |
- i != columns.end(); ++i) { |
- AddColumn(*i); |
- } |
-} |
- |
-void TableView2::OnColumnsChanged() { |
- column_count_ = static_cast<int>(visible_columns_.size()); |
- ResetColumnSizes(); |
-} |
- |
-bool TableView2::HasColumn(int id) { |
- return all_columns_.count(id) > 0; |
-} |
- |
-void TableView2::SetColumnVisibility(int id, bool is_visible) { |
- bool changed = false; |
- for (std::vector<int>::iterator i = visible_columns_.begin(); |
- i != visible_columns_.end(); ++i) { |
- if (*i == id) { |
- if (is_visible) { |
- // It's already visible, bail out early. |
- return; |
- } else { |
- int index = static_cast<int>(i - visible_columns_.begin()); |
- // This could be called before the native list view has been created |
- // (in CreateNativeControl, called when the view is added to a |
- // Widget). In that case since the column is not in |
- // visible_columns_ it will not be added later on when it is created. |
- if (native_wrapper_) |
- native_wrapper_->RemoveColumn(index); |
- visible_columns_.erase(i); |
- changed = true; |
- break; |
- } |
- } |
- } |
- if (is_visible) { |
- DCHECK(native_wrapper_); |
- visible_columns_.push_back(id); |
- ui::TableColumn& column = all_columns_[id]; |
- native_wrapper_->InsertColumn(column, column_count_); |
- changed = true; |
- } |
- if (changed) |
- OnColumnsChanged(); |
- |
-} |
- |
-bool TableView2::IsColumnVisible(int id) const { |
- for (std::vector<int>::const_iterator i = visible_columns_.begin(); |
- i != visible_columns_.end(); ++i) |
- if (*i == id) { |
- return true; |
- } |
- return false; |
-} |
- |
-void TableView2::ResetColumnSizes() { |
- if (!native_wrapper_) |
- return; |
- |
- // See comment in TableColumn for what this does. |
- int width = this->width(); |
- gfx::Rect native_bounds = native_wrapper_->GetBounds(); |
- if (!native_bounds.IsEmpty()) { |
- if (native_bounds.width() > 0) { |
- // Prefer the bounds of the window over our bounds, which may be |
- // different. |
- width = native_bounds.width(); |
- } |
- } |
- |
- float percent = 0; |
- int fixed_width = 0; |
- int autosize_width = 0; |
- |
- for (std::vector<int>::const_iterator i = visible_columns_.begin(); |
- i != visible_columns_.end(); ++i) { |
- ui::TableColumn& col = all_columns_[*i]; |
- int col_index = static_cast<int>(i - visible_columns_.begin()); |
- if (col.width == -1) { |
- if (col.percent > 0) { |
- percent += col.percent; |
- } else { |
- autosize_width += col.min_visible_width; |
- } |
- } else { |
- fixed_width += native_wrapper_->GetColumnWidth(col_index); |
- } |
- } |
- |
- // Now do a pass to set the actual sizes of auto-sized and |
- // percent-sized columns. |
- int available_width = width - fixed_width - autosize_width; |
- for (std::vector<int>::const_iterator i = visible_columns_.begin(); |
- i != visible_columns_.end(); ++i) { |
- ui::TableColumn& col = all_columns_[*i]; |
- if (col.width == -1) { |
- int col_index = static_cast<int>(i - visible_columns_.begin()); |
- if (col.percent > 0) { |
- if (available_width > 0) { |
- int col_width = |
- static_cast<int>(available_width * (col.percent / percent)); |
- available_width -= col_width; |
- percent -= col.percent; |
- native_wrapper_->SetColumnWidth(col_index, col_width); |
- } |
- } else { |
- int col_width = col.min_visible_width; |
- // If no "percent" columns, the last column acts as one, if auto-sized. |
- if (percent == 0.f && available_width > 0 && |
- col_index == column_count_ - 1) { |
- col_width += available_width; |
- } |
- native_wrapper_->SetColumnWidth(col_index, col_width); |
- } |
- } |
- } |
-} |
- |
-void TableView2::Layout() { |
- if (native_wrapper_) { |
- native_wrapper_->GetView()->SetBounds(0, 0, width(), height()); |
- native_wrapper_->GetView()->Layout(); |
- } |
-} |
- |
-void TableView2::OnPaintFocusBorder(gfx::Canvas* canvas) { |
- if (NativeViewHost::kRenderNativeControlFocus) |
- View::OnPaintFocusBorder(canvas); |
-} |
- |
-size_t TableView2::GetVisibleColumnCount() { |
- return visible_columns_.size(); |
-} |
- |
-void TableView2::ViewHierarchyChanged(bool is_add, View* parent, View* child) { |
- if (is_add && !native_wrapper_ && GetWidget()) { |
- // The native wrapper's lifetime will be managed by the view hierarchy after |
- // we call AddChildView. |
- native_wrapper_ = NativeTableWrapper::CreateNativeWrapper(this); |
- AddChildView(native_wrapper_->GetView()); |
- } |
-} |
- |
-void TableView2::Init(const std::vector<ui::TableColumn>& columns) { |
- for (std::vector<ui::TableColumn>::const_iterator i = columns.begin(); |
- i != columns.end(); ++i) { |
- AddColumn(*i); |
- visible_columns_.push_back(i->id); |
- } |
-} |
- |
-gfx::NativeView TableView2::GetTestingHandle() { |
- return native_wrapper_->GetTestingHandle(); |
-} |
- |
-ui::TableColumn TableView2::GetVisibleColumnAt(int index) { |
- DCHECK(index < static_cast<int>(visible_columns_.size())); |
- std::map<int, ui::TableColumn>::iterator iter = |
- all_columns_.find(index); |
- DCHECK(iter != all_columns_.end()); |
- return iter->second; |
-} |
- |
-} // namespace views |