blob: 3f5690fd66e67b5de23b936ea1107697275b4565 [file] [log] [blame]
avm9996304def3e2016-11-27 22:53:05 +01001// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
2// source code is governed by a BSD-style license that can be found in the
3// LICENSE file.
4
5function $(id) {
6 return document.getElementById(id);
7}
8
9chrome.extension.onMessage.addListener(function(request, sender, response) {
10 if (request.msg == 'page_capturable') {
11 $('tip').style.display = 'none';
12 $('captureSpecialPageItem').style.display = 'none';
13 $('captureWindowItem').style.display = 'block';
14 $('captureAreaItem').style.display = 'block';
15 $('captureWebpageItem').style.display = 'block';
16 } else if (request.msg == 'page_uncapturable') {
17 i18nReplace('tip', 'special');
18 $('tip').style.display = 'block';
19 $('captureSpecialPageItem').style.display = 'none';
20 $('captureWindowItem').style.display = 'none';
21 $('captureAreaItem').style.display = 'none';
22 $('captureWebpageItem').style.display = 'none';
23 }
24});
25
26function toDo(what) {
27 var bg = chrome.extension.getBackgroundPage();
28 switch (what) {
29 case 'capture_window':
30 bg.screenshot.captureWindow();
31 window.close();
32 break;
33 case 'capture_area':
34 bg.screenshot.showSelectionArea();
35 window.close();
36 break;
37 case 'capture_webpage':
38 bg.screenshot.captureWebpage();
39 $('loadDiv').style.display = 'block';
40 $('item').style.display = 'none';
41 break;
42 case 'capture_special_page':
43 bg.screenshot.captureSpecialPage();
44 window.close();
45 break;
46 }
47}
48
49function i18nReplace(id, name) {
50 return $(id).innerHTML = chrome.i18n.getMessage(name);
51}
52
53function resizeDivWidth(id, width) {
54 $(id).style.width = width + "px";
55}
56
57function init() {
58 i18nReplace('captureSpecialPageText', 'capture_window');
59 i18nReplace('capturing', 'capturing');
60 i18nReplace('captureWindowText', 'capture_window');
61 i18nReplace('captureAreaText', 'capture_area');
62 i18nReplace('captureWebpageText', 'capture_webpage');
63 i18nReplace('optionItem', 'option');
64
65 $('option').addEventListener('click', function () {
66 chrome.tabs.create({ url: 'options.html'});
67 }, false);
68 if (HotKey.isEnabled()) {
69 $('captureWindowShortcut').style.display = 'inline';
70 $('captureAreaShortcut').style.display = 'inline';
71 $('captureWebpageShortcut').style.display = 'inline';
72 document.body.style.minWidth = "190px"
73 } else {
74 $('captureWindowShortcut').style.display = 'none';
75 $('captureAreaShortcut').style.display = 'none';
76 $('captureWebpageShortcut').style.display = 'none';
77 document.body.style.minWidth = "140px";
78 }
79 var isScriptLoad = false;
80 chrome.tabs.getSelected(null, function(tab) {
81 if (tab.url.indexOf('chrome') == 0 || tab.url.indexOf('about') == 0) {
82 i18nReplace('tip', 'special');
83 return;
84 } else {
85 $('tip').style.display = 'none';
86 $('captureSpecialPageItem').style.display = 'block';
87 showOption();
88 }
89 chrome.tabs.sendMessage(tab.id, {msg: 'is_page_capturable'},
90 function(response) {
91 isScriptLoad = true;
92 if (response.msg == 'capturable') {
93 $('tip').style.display = 'none';
94 $('captureSpecialPageItem').style.display = 'none';
95 $('captureWindowItem').style.display = 'block';
96 $('captureAreaItem').style.display = 'block';
97 $('captureWebpageItem').style.display = 'block';
98 var textWidth = $('captureWindowText')['scrollWidth'];
99 resizeDivWidth('captureWindowText', textWidth);
100 resizeDivWidth('captureAreaText', textWidth);
101 resizeDivWidth('captureWebpageText', textWidth);
102 var bg = chrome.extension.getBackgroundPage();
103 if (bg.screenshot.isThisPlatform('mac')) {
104 $('captureAreaShortcut').innerText = '\u2325\u2318R';
105 $('captureWindowShortcut').innerText = '\u2325\u2318V';
106 $('captureWebpageShortcut').innerText = '\u2325\u2318H';
107 }
108 } else if (response.msg == 'uncapturable') {
109 i18nReplace('tip', 'special');
110 $('tip').style.display = 'block';
111 } else {
112 i18nReplace('tip', 'loading');
113 }
114 });
115 });
116 chrome.tabs.executeScript(null, {file: 'js/isLoad.js'});
117 var insertScript = function() {
118 if (isScriptLoad == false) {
119 chrome.tabs.getSelected(null, function(tab) {
120 if (tab.url.indexOf('chrome') == 0 ||
121 tab.url.indexOf('about') == 0) {
122 i18nReplace('tip', 'special');
123 } else {
124 $('tip').style.display = 'none';
125 $('captureSpecialPageItem').style.display = 'block';
126 showOption();
127 }
128 });
129 }
130 var captureItems = document.querySelectorAll('li.menuI');
131 var showSeparator = false;
132 for (var i = 0; i < captureItems.length; i++) {
133 if (window.getComputedStyle(captureItems[i]).display != 'none') {
134 showSeparator = true;
135 break;
136 }
137 }
138 $('separatorItem').style.display = showSeparator ? 'block' : 'none';
139 }
140 setTimeout(insertScript, 500);
141
142 // Update hot key.
143 if (HotKey.get('area') != '@')
144 $('captureAreaShortcut').innerText = 'Ctrl+Alt+' + HotKey.get('area');
145 if (HotKey.get('viewport') != '@') {
146 $('captureWindowShortcut').innerText = 'Ctrl+Alt+' +
147 HotKey.get('viewport');
148 }
149 if (HotKey.get('fullpage') != '@') {
150 $('captureWebpageShortcut').innerText ='Ctrl+Alt+' +
151 HotKey.get('fullpage');
152 }
153
154 $('captureSpecialPageItem').addEventListener('click', function(e) {
155 toDo('capture_special_page');
156 });
157 $('captureAreaItem').addEventListener('click', function(e) {
158 toDo('capture_area');
159 });
160 $('captureWindowItem').addEventListener('click', function(e) {
161 toDo('capture_window');
162 });
163 $('captureWebpageItem').addEventListener('click', function(e) {
164 toDo('capture_webpage');
165 });
166}
167
168function showOption() {
169 $('option').style.display = 'block';
170 $('separatorItem').style.display = 'block';
171}
172
173document.addEventListener('DOMContentLoaded', init);