annotate chrome/content/init.js @ 0:c47ec96326ad

initial import
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 15 Aug 2008 01:57:59 +0900
parents
children ac5648afee47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1 var DEFAULT_NUMBER_OF_RESULTS = 10;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
2 var DEFAULT_SIZE_OF_INPUT_AREA = 80;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
3 var USER_EXT_JS = "user-extension.js"
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
4 var USER_EXT_JS_SAMPLE = "user-extension-sample.js"
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
5 var USER_CSS = "user.css"
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
6 var USER_CSS_SAMPLE = "user-sample.css"
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
7
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
8 if (!createTableSql) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
9 var createTableSql = "CREATE TABLE bookmark(id INTEGER, url TEXT, title TEXT, info TEXT, tags TEXT, time TEXT, search_text TEXT, PRIMARY KEY(id))";
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
10 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
11
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
12 var database = new Database('bookmark', EXTENSION_NAME);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
13
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
14 var prefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
15 var prefBranch = prefSvc.getBranch('extensions.' + EXTENSION_NAME + '.');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
16 var incsearch = null;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
17
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
18 window.addEventListener('load', function(){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
19 var text = document.getElementById('text');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
20 var viewArea = document.getElementById('viewArea');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
21 var status = document.getElementById('status');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
22 var sync = document.getElementById('sync');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
23 var setting = document.getElementById('setting');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
24 var help = document.getElementById('help');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
25 var loadingBox = document.getElementById('loadingBox');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
26 var loadingImage = document.getElementById('loadingImage');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
27 var loadingMessage = document.getElementById('loadingMessage');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
28 var pageLinkTop = document.getElementById('pageLinkTop');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
29 var pageLinkBottom = document.getElementById('pageLinkBottom');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
30
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
31 var userId = null;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
32 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
33 userId = prefBranch.getCharPref("userId");
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
34 } catch(e){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
35 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
36
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
37 var numberOfResults = DEFAULT_NUMBER_OF_RESULTS;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
38 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
39 numberOfResults = prefBranch.getIntPref("numberOfResults");
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
40 } catch(e){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
41 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
42
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
43 var sizeOfInputArea = DEFAULT_SIZE_OF_INPUT_AREA;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
44 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
45 sizeOfInputArea = prefBranch.getIntPref("sizeOfInputArea");
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
46 } catch(e){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
47 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
48
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
49 text.size = sizeOfInputArea;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
50
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
51
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
52 try {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
53 if (!userId || !database.connection.tableExists('bookmark')) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
54 if (database.connection.tableExists('bookmark')) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
55 database.execute("DROP TABLE bookmark");
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
56 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
57 database.execute(createTableSql);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
58 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
59 } catch(e) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
60
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
61 status.innerHTML = e.message || e;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
62 loading.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
63 throw e;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
64 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
65
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
66 // global
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
67 incsearch = new IncSearch(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
68 text,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
69 viewArea,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
70 {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
71 dispMax: numberOfResults,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
72 status: status,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
73 pageLinkTop: pageLinkTop,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
74 pageLinkBottom: pageLinkBottom,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
75 database: database,
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
76 userId: userId
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
77 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
78 );
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
79 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
80
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
81 var update = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
82 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
83 new BookmarkLoader(loadingBox, loadingMessage, database);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
84 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
85
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
86 sync.addEventListener('click', update, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
87
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
88 // settings
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
89 var settingBox = document.getElementById('settingBox');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
90 var settingSave = document.getElementById('settingSave');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
91 var settingCancel = document.getElementById('settingCancel');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
92 var numberOfResultElement = document.getElementById('numberOfResults');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
93 var sizeOfInputAreaElement = document.getElementById('sizeOfInputArea');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
94
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
95 var openSetting = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
96 Glayer.showBox(settingBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
97 numberOfResultElement.value = incsearch.dispMax;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
98 numberOfResultElement.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
99 sizeOfInputAreaElement.value = text.size;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
100 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
101
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
102 var closeSetting = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
103 Glayer.hideBox(settingBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
104 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
105 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
106
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
107 setting.addEventListener('click', openSetting, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
108
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
109 numberOfResultElement.addEventListener(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
110 'keydown',
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
111 function(event) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
112 if (event.keyCode == 13) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
113 settingSave.click();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
114 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
115 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
116 false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
117
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
118 sizeOfInputAreaElement.addEventListener(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
119 'keydown',
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
120 function(event) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
121 if (event.keyCode == 13) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
122 settingSave.click();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
123 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
124 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
125 false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
126
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
127 settingSave.addEventListener(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
128 'click',
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
129 function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
130 Glayer.hideBox(settingBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
131 incsearch.dispMax = parseInt(numberOfResultElement.value) || incsearch.dispMax;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
132 prefBranch.setIntPref('numberOfResults', incsearch.dispMax);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
133 incsearch.input.size = parseInt(sizeOfInputAreaElement.value) || incsearch.input.size;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
134 prefBranch.setIntPref('sizeOfInputArea', incsearch.input.size);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
135
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
136 incsearch.reset();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
137 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
138 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
139 false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
140
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
141 settingCancel.addEventListener('click', closeSetting, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
142
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
143 // help
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
144 var helpBox = document.getElementById('helpBox');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
145 var helpClose = document.getElementById('helpClose');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
146
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
147 var openHelp = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
148 Glayer.showBox(helpBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
149 helpClose.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
150 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
151
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
152 var closeHelp = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
153 Glayer.hideBox(helpBox);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
154 incsearch.input.focus();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
155 };
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
156
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
157 var hideMsgBox = function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
158 helpBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
159 settingBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
160 loadingBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
161
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
162 var confirmBox = document.getElementById('glayer_confirm');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
163 if (confirmBox) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
164 confirmBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
165 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
166 var alertBox = document.getElementById('glayer_alert');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
167 if (alertBox) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
168 alertBox.style.display = 'none';
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
169 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
170 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
171
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
172 help.addEventListener('click', openHelp, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
173 helpClose.addEventListener('click', closeHelp, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
174
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
175 // shortcut
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
176 document.addEventListener(
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
177 'keydown',
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
178 function(event) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
179 if (event.ctrlKey) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
180 switch(event.keyCode) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
181 case 85: // u (Sync)
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
182 hideMsgBox();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
183 update();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
184 IncSearch._stopEvent(event);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
185 break;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
186 case 83: // s (Setting)
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
187 if (settingBox.style.display == '') {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
188 closeSetting();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
189 } else {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
190 hideMsgBox();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
191 openSetting();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
192 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
193 IncSearch._stopEvent(event);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
194 break;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
195 case 191: // / (Help)
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
196 if (helpBox.style.display == '') {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
197 closeHelp();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
198 } else {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
199 hideMsgBox();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
200 openHelp();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
201 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
202 IncSearch._stopEvent(event);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
203 break;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
204 default:
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
205 break;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
206 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
207 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
208 },
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
209 false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
210
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
211
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
212 if (!userId) update();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
213
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
214 }, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
215
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
216 window.addEventListener('unload', function(){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
217 if (database.connection.transactionInProgress) database.connection.rollbackTransaction();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
218 }, false);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
219
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
220
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
221 (function() {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
222 function getContents(aURL){
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
223 var ioService = Components.classes["@mozilla.org/network/io-service;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
224 .getService(Components.interfaces.nsIIOService);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
225 var scriptableStream = Components.classes["@mozilla.org/scriptableinputstream;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
226 .getService(Components.interfaces.nsIScriptableInputStream);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
227
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
228 var channel = ioService.newChannel(aURL, null, null);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
229 var input = channel.open();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
230 scriptableStream.init(input);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
231 var str = scriptableStream.read(input.available());
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
232 scriptableStream.close();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
233 input.close();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
234 return str;
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
235 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
236
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
237 var ios = Components.classes["@mozilla.org/network/io-service;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
238 .getService(Components.interfaces.nsIIOService);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
239 var fileHandler = ios.getProtocolHandler("file")
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
240 .QueryInterface(Components.interfaces.nsIFileProtocolHandler);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
241
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
242 // user extension javascript
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
243 var userExtJs = Components.classes["@mozilla.org/file/directory_service;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
244 .getService(Components.interfaces.nsIProperties)
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
245 .get("ProfD", Components.interfaces.nsIFile);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
246
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
247 userExtJs.append(EXTENSION_NAME);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
248 userExtJs.append(USER_EXT_JS);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
249
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
250 if (!userExtJs.exists()) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
251 var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
252 .createInstance(Components.interfaces.nsIFileOutputStream);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
253
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
254 foStream.init(userExtJs, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
255
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
256 var sample = getContents("chrome://" + EXTENSION_NAME + "/content/" + USER_EXT_JS_SAMPLE);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
257 foStream.write(sample, sample.length);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
258 foStream.close();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
259 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
260
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
261 var userExtJsURL = fileHandler.getURLSpecFromFile(userExtJs);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
262
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
263 document.write('<script type="text/javascript" src="'+ userExtJsURL +'"><\/script>');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
264
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
265 // user stylesheet
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
266 var userCss = Components.classes["@mozilla.org/file/directory_service;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
267 .getService(Components.interfaces.nsIProperties)
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
268 .get("ProfD", Components.interfaces.nsIFile);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
269
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
270 userCss.append(EXTENSION_NAME);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
271 userCss.append(USER_CSS);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
272
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
273 if (!userCss.exists()) {
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
274 var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
275 .createInstance(Components.interfaces.nsIFileOutputStream);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
276
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
277 foStream.init(userCss, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
278
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
279 var sample = getContents("chrome://" + EXTENSION_NAME + "/content/" + USER_CSS_SAMPLE);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
280 foStream.write(sample, sample.length);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
281 foStream.close();
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
282 }
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
283
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
284 var userCssURL = fileHandler.getURLSpecFromFile(userCss);
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
285
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
286 document.write('<link rel="stylesheet" href="' + userCssURL + '" type="text/css" />');
c47ec96326ad initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
287 })();