| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/render_view_context_menu.h" | 5 #include "chrome/browser/render_view_context_menu.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chrome/app/chrome_dll_resource.h" | 8 #include "chrome/app/chrome_dll_resource.h" |
| 9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
| 11 #include "chrome/browser/search_engines/template_url_model.h" | 11 #include "chrome/browser/search_engines/template_url_model.h" |
| 12 #include "chrome/browser/spellchecker.h" | 12 #include "chrome/browser/spellchecker.h" |
| 13 #include "chrome/common/l10n_util.h" | 13 #include "chrome/common/l10n_util.h" |
| 14 #include "webkit/glue/context_node_types.h" | 14 #include "webkit/glue/context_node_types.h" |
| 15 | 15 |
| 16 #include "generated_resources.h" | 16 #include "generated_resources.h" |
| 17 | 17 |
| 18 RenderViewContextMenu::RenderViewContextMenu( | 18 RenderViewContextMenu::RenderViewContextMenu( |
| 19 Menu::Delegate* delegate, | 19 Menu::Delegate* delegate, |
| 20 HWND owner, | 20 HWND owner, |
| 21 ContextNode::Type type, | 21 ContextNode node, |
| 22 const std::wstring& misspelled_word, | 22 const std::wstring& misspelled_word, |
| 23 const std::vector<std::wstring>& misspelled_word_suggestions, | 23 const std::vector<std::wstring>& misspelled_word_suggestions, |
| 24 Profile* profile) | 24 Profile* profile) |
| 25 : Menu(delegate, Menu::TOPLEFT, owner), | 25 : Menu(delegate, Menu::TOPLEFT, owner), |
| 26 misspelled_word_(misspelled_word), | 26 misspelled_word_(misspelled_word), |
| 27 misspelled_word_suggestions_(misspelled_word_suggestions), | 27 misspelled_word_suggestions_(misspelled_word_suggestions), |
| 28 profile_(profile) { | 28 profile_(profile) { |
| 29 InitMenu(type); | 29 InitMenu(node); |
| 30 } | 30 } |
| 31 | 31 |
| 32 RenderViewContextMenu::~RenderViewContextMenu() { | 32 RenderViewContextMenu::~RenderViewContextMenu() { |
| 33 } | 33 } |
| 34 | 34 |
| 35 void RenderViewContextMenu::InitMenu(ContextNode::Type type) { | 35 void RenderViewContextMenu::InitMenu(ContextNode node) { |
| 36 switch (type) { | 36 if (node.type & ContextNode::PAGE) |
| 37 case ContextNode::PAGE: | |
| 38 AppendPageItems(); | 37 AppendPageItems(); |
| 39 break; | 38 if (node.type & ContextNode::FRAME) |
| 40 case ContextNode::FRAME: | |
| 41 AppendFrameItems(); | 39 AppendFrameItems(); |
| 42 break; | 40 if (node.type & ContextNode::LINK) |
| 43 case ContextNode::LINK: | |
| 44 AppendLinkItems(); | 41 AppendLinkItems(); |
| 45 break; | 42 |
| 46 case ContextNode::IMAGE: | 43 if (node.type & ContextNode::IMAGE) { |
| 44 if (node.type & ContextNode::LINK) |
| 45 AppendSeparator(); |
| 47 AppendImageItems(); | 46 AppendImageItems(); |
| 48 break; | 47 } |
| 49 case ContextNode::IMAGE_LINK: | 48 |
| 50 AppendLinkItems(); | 49 if (node.type & ContextNode::EDITABLE) |
| 51 AppendSeparator(); | |
| 52 AppendImageItems(); | |
| 53 break; | |
| 54 case ContextNode::SELECTION: | |
| 55 AppendSelectionItems(); | |
| 56 break; | |
| 57 case ContextNode::EDITABLE: | |
| 58 AppendEditableItems(); | 50 AppendEditableItems(); |
| 59 break; | 51 else if (node.type & ContextNode::SELECTION || |
| 60 default: | 52 node.type & ContextNode::LINK) |
| 61 NOTREACHED() << "Unknown ContextNode::Type"; | 53 AppendCopyItem(); |
| 62 } | 54 |
| 55 if (node.type & ContextNode::SELECTION) |
| 56 AppendSearchProvider(); |
| 63 AppendSeparator(); | 57 AppendSeparator(); |
| 64 AppendDeveloperItems(); | 58 AppendDeveloperItems(); |
| 65 } | 59 } |
| 66 | 60 |
| 67 void RenderViewContextMenu::AppendDeveloperItems() { | 61 void RenderViewContextMenu::AppendDeveloperItems() { |
| 68 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_INSPECTELEMENT); | 62 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_INSPECTELEMENT); |
| 69 } | 63 } |
| 70 | 64 |
| 71 void RenderViewContextMenu::AppendLinkItems() { | 65 void RenderViewContextMenu::AppendLinkItems() { |
| 72 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWTAB); | 66 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 73 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW); | 67 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW); |
| 74 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD); | 68 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD); |
| 75 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVELINKAS); | 69 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVELINKAS); |
| 76 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYLINKLOCATION); | 70 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYLINKLOCATION); |
| 77 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY); | |
| 78 } | 71 } |
| 79 | 72 |
| 80 void RenderViewContextMenu::AppendImageItems() { | 73 void RenderViewContextMenu::AppendImageItems() { |
| 81 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEIMAGEAS); | 74 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEIMAGEAS); |
| 82 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); | 75 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); |
| 83 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGE); | 76 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGE); |
| 84 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); | 77 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); |
| 85 } | 78 } |
| 86 | 79 |
| 87 void RenderViewContextMenu::AppendPageItems() { | 80 void RenderViewContextMenu::AppendPageItems() { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 102 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWTAB); | 95 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWTAB); |
| 103 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWWINDOW); | 96 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWWINDOW); |
| 104 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD); | 97 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD); |
| 105 AppendSeparator(); | 98 AppendSeparator(); |
| 106 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEFRAMEAS); | 99 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEFRAMEAS); |
| 107 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_PRINTFRAME); | 100 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_PRINTFRAME); |
| 108 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE); | 101 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE); |
| 109 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMEINFO); | 102 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMEINFO); |
| 110 } | 103 } |
| 111 | 104 |
| 112 void RenderViewContextMenu::AppendSelectionItems() { | 105 void RenderViewContextMenu::AppendCopyItem() { |
| 113 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY); | 106 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY); |
| 107 } |
| 108 |
| 109 void RenderViewContextMenu::AppendSearchProvider() { |
| 114 DCHECK(profile_); | 110 DCHECK(profile_); |
| 115 if (profile_->GetTemplateURLModel()->GetDefaultSearchProvider() != NULL) | 111 if (profile_->GetTemplateURLModel()->GetDefaultSearchProvider() != NULL) |
| 116 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR); | 112 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR); |
| 117 } | 113 } |
| 118 | 114 |
| 119 void RenderViewContextMenu::AppendEditableItems() { | 115 void RenderViewContextMenu::AppendEditableItems() { |
| 120 // Append Dictionary spell check suggestions. | 116 // Append Dictionary spell check suggestions. |
| 121 for (size_t i = 0; i < misspelled_word_suggestions_.size() && | 117 for (size_t i = 0; i < misspelled_word_suggestions_.size() && |
| 122 IDC_SPELLCHECK_SUGGESTION_0 + i <= IDC_SPELLCHECK_SUGGESTION_LAST; | 118 IDC_SPELLCHECK_SUGGESTION_0 + i <= IDC_SPELLCHECK_SUGGESTION_LAST; |
| 123 i ++) { | 119 i ++) { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 | 167 |
| 172 // Add 'Check the spelling of this field' item in the sub menu. | 168 // Add 'Check the spelling of this field' item in the sub menu. |
| 173 spellchecker_sub_menu_->AppendMenuItem( | 169 spellchecker_sub_menu_->AppendMenuItem( |
| 174 IDC_CHECK_SPELLING_OF_THIS_FIELD, | 170 IDC_CHECK_SPELLING_OF_THIS_FIELD, |
| 175 l10n_util::GetString(IDS_CONTENT_CONTEXT_CHECK_SPELLING_OF_THIS_FIELD), | 171 l10n_util::GetString(IDS_CONTENT_CONTEXT_CHECK_SPELLING_OF_THIS_FIELD), |
| 176 CHECKBOX); | 172 CHECKBOX); |
| 177 | 173 |
| 178 AppendSeparator(); | 174 AppendSeparator(); |
| 179 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SELECTALL); | 175 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SELECTALL); |
| 180 } | 176 } |
| OLD | NEW |