| Index: chrome/browser/ui/views/options/exceptions_view.cc
|
| diff --git a/chrome/browser/ui/views/options/exceptions_view.cc b/chrome/browser/ui/views/options/exceptions_view.cc
|
| deleted file mode 100644
|
| index 0ab6aaf0996e19045fc047e89891b3789eb3d1c5..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/options/exceptions_view.cc
|
| +++ /dev/null
|
| @@ -1,281 +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 "chrome/browser/ui/views/options/exceptions_view.h"
|
| -
|
| -#include <algorithm>
|
| -#include <vector>
|
| -
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/ui/views/options/content_exceptions_table_view.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/locale_settings.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/gfx/rect.h"
|
| -#include "views/controls/button/native_button.h"
|
| -#include "views/controls/label.h"
|
| -#include "views/controls/table/table_view.h"
|
| -#include "views/layout/grid_layout.h"
|
| -#include "views/layout/layout_constants.h"
|
| -#include "views/window/window.h"
|
| -
|
| -static const int kExceptionsViewInsetSize = 5;
|
| -static ExceptionsView* instances[CONTENT_SETTINGS_NUM_TYPES] = { NULL };
|
| -
|
| -// static
|
| -void ExceptionsView::ShowExceptionsWindow(
|
| - gfx::NativeWindow parent,
|
| - HostContentSettingsMap* map,
|
| - HostContentSettingsMap* off_the_record_map,
|
| - ContentSettingsType content_type) {
|
| - if (!instances[content_type]) {
|
| - instances[content_type] =
|
| - new ExceptionsView(map, off_the_record_map, content_type);
|
| - views::Window::CreateChromeWindow(parent, gfx::Rect(),
|
| - instances[content_type]);
|
| - }
|
| -
|
| - // This will show invisible windows and bring visible windows to the front.
|
| - instances[content_type]->window()->Show();
|
| -}
|
| -
|
| -ExceptionsView::~ExceptionsView() {
|
| - instances[model_.content_type()] = NULL;
|
| - table_->SetModel(NULL);
|
| -}
|
| -
|
| -void ExceptionsView::OnSelectionChanged() {
|
| - UpdateButtonState();
|
| -}
|
| -
|
| -void ExceptionsView::OnDoubleClick() {
|
| - if (table_->SelectedRowCount() == 1)
|
| - Edit();
|
| -}
|
| -
|
| -void ExceptionsView::OnTableViewDelete(views::TableView* table_view) {
|
| - Remove();
|
| -}
|
| -
|
| -void ExceptionsView::ButtonPressed(views::Button* sender,
|
| - const views::Event& event) {
|
| - switch (sender->tag()) {
|
| - case IDS_EXCEPTIONS_ADD_BUTTON:
|
| - Add();
|
| - break;
|
| - case IDS_EXCEPTIONS_EDIT_BUTTON:
|
| - Edit();
|
| - break;
|
| - case IDS_EXCEPTIONS_REMOVEALL_BUTTON:
|
| - RemoveAll();
|
| - break;
|
| - case IDS_EXCEPTIONS_REMOVE_BUTTON:
|
| - Remove();
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -void ExceptionsView::Layout() {
|
| - views::NativeButton* buttons[] = { add_button_, edit_button_,
|
| - remove_button_, remove_all_button_ };
|
| -
|
| - // The buttons are placed in the parent, but we need to lay them out.
|
| - int max_y =
|
| - parent()->GetContentsBounds().bottom() - views::kButtonVEdgeMargin;
|
| - int x = views::kPanelHorizMargin;
|
| -
|
| - for (size_t i = 0; i < arraysize(buttons); ++i) {
|
| - gfx::Size pref = buttons[i]->GetPreferredSize();
|
| - buttons[i]->SetBounds(x, max_y - pref.height(), pref.width(),
|
| - pref.height());
|
| - x += pref.width() + views::kRelatedControlHorizontalSpacing;
|
| - }
|
| -
|
| - // Lay out the rest of this view.
|
| - View::Layout();
|
| -}
|
| -
|
| -gfx::Size ExceptionsView::GetPreferredSize() {
|
| - return gfx::Size(views::Window::GetLocalizedContentsSize(
|
| - IDS_CONTENT_EXCEPTION_DIALOG_WIDTH_CHARS,
|
| - IDS_CONTENT_EXCEPTION_DIALOG_HEIGHT_LINES));
|
| -}
|
| -
|
| -void ExceptionsView::ViewHierarchyChanged(bool is_add,
|
| - views::View* parent,
|
| - views::View* child) {
|
| - if (is_add && child == this)
|
| - Init();
|
| -}
|
| -
|
| -std::wstring ExceptionsView::GetWindowTitle() const {
|
| - switch (model_.content_type()) {
|
| - case CONTENT_SETTINGS_TYPE_COOKIES:
|
| - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIE_EXCEPTION_TITLE));
|
| - case CONTENT_SETTINGS_TYPE_IMAGES:
|
| - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_IMAGES_EXCEPTION_TITLE));
|
| - case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
|
| - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_JS_EXCEPTION_TITLE));
|
| - case CONTENT_SETTINGS_TYPE_PLUGINS:
|
| - return UTF16ToWide(
|
| - l10n_util::GetStringUTF16(IDS_PLUGINS_EXCEPTION_TITLE));
|
| - case CONTENT_SETTINGS_TYPE_POPUPS:
|
| - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_POPUP_EXCEPTION_TITLE));
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| - return std::wstring();
|
| -}
|
| -
|
| -void ExceptionsView::AcceptExceptionEdit(
|
| - const ContentSettingsPattern& pattern,
|
| - ContentSetting setting,
|
| - bool is_off_the_record,
|
| - int index,
|
| - bool is_new) {
|
| - DCHECK(!is_off_the_record || allow_off_the_record_);
|
| -
|
| - if (!is_new)
|
| - model_.RemoveException(index);
|
| - model_.AddException(pattern, setting, is_off_the_record);
|
| -
|
| - int new_index = model_.IndexOfExceptionByPattern(pattern, is_off_the_record);
|
| - DCHECK(new_index != -1);
|
| - table_->Select(new_index);
|
| -}
|
| -
|
| -ExceptionsView::ExceptionsView(HostContentSettingsMap* map,
|
| - HostContentSettingsMap* off_the_record_map,
|
| - ContentSettingsType type)
|
| - : model_(map, off_the_record_map, type),
|
| - allow_off_the_record_(off_the_record_map != NULL),
|
| - table_(NULL),
|
| - add_button_(NULL),
|
| - edit_button_(NULL),
|
| - remove_button_(NULL),
|
| - remove_all_button_(NULL) {
|
| -}
|
| -
|
| -void ExceptionsView::Init() {
|
| - if (table_)
|
| - return; // We've already Init'd.
|
| -
|
| - using views::GridLayout;
|
| -
|
| - std::vector<ui::TableColumn> columns;
|
| - columns.push_back(
|
| - ui::TableColumn(IDS_EXCEPTIONS_PATTERN_HEADER, ui::TableColumn::LEFT, -1,
|
| - .75));
|
| - columns.back().sortable = true;
|
| - columns.push_back(
|
| - ui::TableColumn(IDS_EXCEPTIONS_ACTION_HEADER, ui::TableColumn::LEFT, -1,
|
| - .25));
|
| - columns.back().sortable = true;
|
| - table_ = new ContentExceptionsTableView(&model_, columns);
|
| - views::TableView::SortDescriptors sort;
|
| - sort.push_back(
|
| - views::TableView::SortDescriptor(IDS_EXCEPTIONS_PATTERN_HEADER, true));
|
| - table_->SetSortDescriptors(sort);
|
| - table_->SetObserver(this);
|
| -
|
| - add_button_ = new views::NativeButton(
|
| - this, UTF16ToWide(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ADD_BUTTON)));
|
| - add_button_->set_tag(IDS_EXCEPTIONS_ADD_BUTTON);
|
| - edit_button_ = new views::NativeButton(
|
| - this, UTF16ToWide(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_EDIT_BUTTON)));
|
| - edit_button_->set_tag(IDS_EXCEPTIONS_EDIT_BUTTON);
|
| - remove_button_ = new views::NativeButton(
|
| - this,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_REMOVE_BUTTON)));
|
| - remove_button_->set_tag(IDS_EXCEPTIONS_REMOVE_BUTTON);
|
| - remove_all_button_ = new views::NativeButton(
|
| - this,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_REMOVEALL_BUTTON)));
|
| - remove_all_button_->set_tag(IDS_EXCEPTIONS_REMOVEALL_BUTTON);
|
| -
|
| - parent()->AddChildView(add_button_);
|
| - parent()->AddChildView(edit_button_);
|
| - parent()->AddChildView(remove_button_);
|
| - parent()->AddChildView(remove_all_button_);
|
| -
|
| - GridLayout* layout = new GridLayout(this);
|
| - layout->SetInsets(kExceptionsViewInsetSize, kExceptionsViewInsetSize,
|
| - kExceptionsViewInsetSize, kExceptionsViewInsetSize);
|
| - SetLayoutManager(layout);
|
| -
|
| - const int single_column_layout_id = 0;
|
| - views::ColumnSet* column_set = layout->AddColumnSet(single_column_layout_id);
|
| - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
|
| - column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
|
| - GridLayout::USE_PREF, 0, 0);
|
| - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
| -
|
| - layout->StartRow(1, single_column_layout_id);
|
| - layout->AddView(table_);
|
| - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
| -
|
| - if (allow_off_the_record_) {
|
| - views::Label* label = new views::Label(
|
| - UTF16ToWide(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_OTR_IN_ITALICS)));
|
| - label->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
|
| - layout->StartRow(0, single_column_layout_id);
|
| - layout->AddView(label, 1, 1, GridLayout::LEADING, GridLayout::CENTER);
|
| - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
| - }
|
| -
|
| - UpdateButtonState();
|
| -}
|
| -
|
| -void ExceptionsView::UpdateButtonState() {
|
| - int selected_row_count = table_->SelectedRowCount();
|
| - // TODO: 34177, support editing of more than one entry at a time.
|
| - edit_button_->SetEnabled(selected_row_count == 1);
|
| - remove_button_->SetEnabled(selected_row_count >= 1);
|
| - remove_all_button_->SetEnabled(model_.RowCount() > 0);
|
| -}
|
| -
|
| -void ExceptionsView::Add() {
|
| - ExceptionEditorView* view =
|
| - new ExceptionEditorView(this, &model_, allow_off_the_record_, -1,
|
| - ContentSettingsPattern(),
|
| - CONTENT_SETTING_BLOCK, false);
|
| - view->Show(window()->GetNativeWindow());
|
| -
|
| - UpdateButtonState();
|
| -}
|
| -
|
| -void ExceptionsView::Edit() {
|
| - DCHECK(table_->FirstSelectedRow() != -1);
|
| - int index = table_->FirstSelectedRow();
|
| - const HostContentSettingsMap::PatternSettingPair& entry =
|
| - model_.entry_at(index);
|
| - ExceptionEditorView* view =
|
| - new ExceptionEditorView(this, &model_, allow_off_the_record_, index,
|
| - entry.first, entry.second,
|
| - model_.entry_is_off_the_record(index));
|
| - view->Show(window()->GetNativeWindow());
|
| -}
|
| -
|
| -void ExceptionsView::Remove() {
|
| - std::vector<int> indices;
|
| - for (views::TableView::iterator i = table_->SelectionBegin();
|
| - i != table_->SelectionEnd(); ++i) {
|
| - indices.push_back(*i);
|
| - }
|
| - std::sort(indices.begin(), indices.end());
|
| - for (std::vector<int>::reverse_iterator i = indices.rbegin();
|
| - i != indices.rend(); ++i) {
|
| - model_.RemoveException(*i);
|
| - }
|
| -
|
| - UpdateButtonState();
|
| -}
|
| -
|
| -void ExceptionsView::RemoveAll() {
|
| - model_.RemoveAll();
|
| -
|
| - UpdateButtonState();
|
| -}
|
|
|