Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / extensions / media_galleries_scan_result_dialog_views.cc
index 6ec7293..46d2af6 100644 (file)
@@ -4,13 +4,13 @@
 
 #include "chrome/browser/ui/views/extensions/media_galleries_scan_result_dialog_views.h"
 
-#include "chrome/browser/ui/views/constrained_window_views.h"
 #include "components/web_modal/web_contents_modal_dialog_host.h"
 #include "components/web_modal/web_contents_modal_dialog_manager.h"
 #include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
 #include "content/public/browser/web_contents.h"
 #include "grit/generated_resources.h"
 #include "grit/locale_settings.h"
+#include "grit/theme_resources.h"
 #include "grit/ui_resources.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -19,6 +19,7 @@
 #include "ui/views/controls/button/checkbox.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/controls/label.h"
+#include "ui/views/controls/menu/menu_runner.h"
 #include "ui/views/controls/scroll_view.h"
 #include "ui/views/layout/box_layout.h"
 #include "ui/views/layout/grid_layout.h"
@@ -183,18 +184,23 @@ bool MediaGalleriesScanResultDialogViews::AddOrUpdateScanResult(
 
   views::Checkbox* checkbox = new views::Checkbox(label);
   checkbox->set_listener(this);
+  checkbox->set_context_menu_controller(this);
   checkbox->SetTooltipText(tooltip_text);
 
   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
   views::ImageButton* folder_viewer_button = new views::ImageButton(this);
+  folder_viewer_button->set_context_menu_controller(this);
   folder_viewer_button->SetImage(views::ImageButton::STATE_NORMAL,
-                                 rb.GetImageSkiaNamed(IDR_OAK));
+                                 rb.GetImageSkiaNamed(IDR_FILE_FOLDER));
+  folder_viewer_button->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+                                          views::ImageButton::ALIGN_MIDDLE);
   folder_viewer_button->SetAccessibleName(l10n_util::GetStringUTF16(
       IDS_MEDIA_GALLERIES_SCAN_RESULT_OPEN_FOLDER_VIEW_ACCESSIBILITY_NAME));
   folder_viewer_button->SetFocusable(true);
   folder_viewer_button->SetVisible(is_attached);
 
   views::Label* secondary_text = new views::Label(details);
+  secondary_text->set_context_menu_controller(this);
   secondary_text->SetTooltipText(tooltip_text);
   secondary_text->SetEnabledColor(kDeemphasizedTextColor);
   secondary_text->SetTooltipText(tooltip_text);
@@ -207,6 +213,7 @@ bool MediaGalleriesScanResultDialogViews::AddOrUpdateScanResult(
   views::View* checkbox_view = new views::View();
   checkbox_view->SetBorder(views::Border::CreateEmptyBorder(
       0, views::kPanelHorizMargin, trailing_vertical_space, 0));
+  checkbox_view->set_context_menu_controller(this);
   checkbox_view->SetLayoutManager(
       new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
   checkbox_view->AddChildView(checkbox);
@@ -269,16 +276,6 @@ bool MediaGalleriesScanResultDialogViews::Accept() {
   return true;
 }
 
-// TODO(wittman): Remove this override once we move to the new style frame view
-// on all dialogs.
-views::NonClientFrameView*
-MediaGalleriesScanResultDialogViews::CreateNonClientFrameView(
-    views::Widget* widget) {
-  return CreateConstrainedStyleNonClientFrameView(
-      widget,
-      controller_->web_contents()->GetBrowserContext());
-}
-
 void MediaGalleriesScanResultDialogViews::ButtonPressed(
     views::Button* sender,
     const ui::Event& event) {
@@ -298,6 +295,36 @@ void MediaGalleriesScanResultDialogViews::ButtonPressed(
   }
 }
 
+void MediaGalleriesScanResultDialogViews::ShowContextMenuForView(
+    views::View* source,
+    const gfx::Point& point,
+    ui::MenuSourceType source_type) {
+  for (GalleryViewMap::const_iterator it = gallery_view_map_.begin();
+       it != gallery_view_map_.end(); ++it) {
+    if (it->second.checkbox->parent()->Contains(source)) {
+      ShowContextMenu(point, source_type, it->first);
+      return;
+    }
+  }
+  NOTREACHED();
+}
+
+void MediaGalleriesScanResultDialogViews::ShowContextMenu(
+    const gfx::Point& point,
+    ui::MenuSourceType source_type,
+    MediaGalleryPrefId id) {
+  context_menu_runner_.reset(new views::MenuRunner(
+      controller_->GetContextMenu(id)));
+
+  if (context_menu_runner_->RunMenuAt(
+          GetWidget(), NULL, gfx::Rect(point.x(), point.y(), 0, 0),
+          views::MenuItemView::TOPLEFT, source_type,
+          views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) ==
+      views::MenuRunner::MENU_DELETED) {
+    return;
+  }
+}
+
 // MediaGalleriesScanResultDialogViewsController -------------------------------
 
 // static