blob: 23190554ecb9faa3e505b9e32c5e7484d5092693 [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);
avm99963873bf6f2021-02-07 00:01:31 +010068
69 $('captureWindowShortcut').style.display = 'none';
70 $('captureAreaShortcut').style.display = 'none';
71 $('captureWebpageShortcut').style.display = 'none';
72 document.body.style.minWidth = "140px";
73
avm9996304def3e2016-11-27 22:53:05 +010074 var isScriptLoad = false;
75 chrome.tabs.getSelected(null, function(tab) {
76 if (tab.url.indexOf('chrome') == 0 || tab.url.indexOf('about') == 0) {
77 i18nReplace('tip', 'special');
78 return;
79 } else {
80 $('tip').style.display = 'none';
81 $('captureSpecialPageItem').style.display = 'block';
82 showOption();
83 }
84 chrome.tabs.sendMessage(tab.id, {msg: 'is_page_capturable'},
85 function(response) {
86 isScriptLoad = true;
87 if (response.msg == 'capturable') {
88 $('tip').style.display = 'none';
89 $('captureSpecialPageItem').style.display = 'none';
90 $('captureWindowItem').style.display = 'block';
91 $('captureAreaItem').style.display = 'block';
92 $('captureWebpageItem').style.display = 'block';
93 var textWidth = $('captureWindowText')['scrollWidth'];
94 resizeDivWidth('captureWindowText', textWidth);
95 resizeDivWidth('captureAreaText', textWidth);
96 resizeDivWidth('captureWebpageText', textWidth);
97 var bg = chrome.extension.getBackgroundPage();
98 if (bg.screenshot.isThisPlatform('mac')) {
99 $('captureAreaShortcut').innerText = '\u2325\u2318R';
100 $('captureWindowShortcut').innerText = '\u2325\u2318V';
101 $('captureWebpageShortcut').innerText = '\u2325\u2318H';
102 }
103 } else if (response.msg == 'uncapturable') {
104 i18nReplace('tip', 'special');
105 $('tip').style.display = 'block';
106 } else {
107 i18nReplace('tip', 'loading');
108 }
109 });
110 });
111 chrome.tabs.executeScript(null, {file: 'js/isLoad.js'});
112 var insertScript = function() {
113 if (isScriptLoad == false) {
114 chrome.tabs.getSelected(null, function(tab) {
115 if (tab.url.indexOf('chrome') == 0 ||
116 tab.url.indexOf('about') == 0) {
117 i18nReplace('tip', 'special');
118 } else {
119 $('tip').style.display = 'none';
120 $('captureSpecialPageItem').style.display = 'block';
121 showOption();
122 }
123 });
124 }
125 var captureItems = document.querySelectorAll('li.menuI');
126 var showSeparator = false;
127 for (var i = 0; i < captureItems.length; i++) {
128 if (window.getComputedStyle(captureItems[i]).display != 'none') {
129 showSeparator = true;
130 break;
131 }
132 }
133 $('separatorItem').style.display = showSeparator ? 'block' : 'none';
134 }
135 setTimeout(insertScript, 500);
136
137 // Update hot key.
avm9996304def3e2016-11-27 22:53:05 +0100138 $('captureSpecialPageItem').addEventListener('click', function(e) {
139 toDo('capture_special_page');
140 });
141 $('captureAreaItem').addEventListener('click', function(e) {
142 toDo('capture_area');
143 });
144 $('captureWindowItem').addEventListener('click', function(e) {
145 toDo('capture_window');
146 });
147 $('captureWebpageItem').addEventListener('click', function(e) {
148 toDo('capture_webpage');
149 });
150}
151
152function showOption() {
153 $('option').style.display = 'block';
154 $('separatorItem').style.display = 'block';
155}
156
157document.addEventListener('DOMContentLoaded', init);