page-modes: whitespace
[conkeror.git] / modules / page-modes / google-maps.js
blob74efd652cb84e329f8a4fa3f699034b30154baf3
1 /**
2  * (C) Copyright 2009-2011 John J. Foerch
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 in_module(null);
10 require("content-buffer.js");
12 function dom_click_xpath (doc, xpath) {
13     var iter = doc.evaluate(xpath,
14                             doc,
15                             xpath_lookup_namespace,
16                             Ci.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE ,
17                             null);
18     var node = iter.singleNodeValue;
19     if (node) {
20         var rect = node.getBoundingClientRect();
21         dom_node_click(node, rect.left + 1, rect.top + 1);
22     }
25 interactive("google-maps-zoom-in",
26     "Zoom in on a google map",
27     function (I) {
28         dom_click_xpath(I.buffer.document,
29                         "//div[@guidedhelpid='zoom_in']/div[@title]");
30     });
32 interactive("google-maps-zoom-out",
33     "Zoom out on a google map",
34     function (I) {
35         dom_click_xpath(I.buffer.document,
36                         "//div[@guidedhelpid='zoom_out']/div[@title]");
37     });
39 interactive("google-maps-pan-left",
40     "Pan a google map left",
41     function (I) {
42         dom_click_xpath(I.buffer.document,
43                         "//div[@log='pan_lt']");
44     });
46 interactive("google-maps-pan-right",
47     "Pan a google map right",
48     function (I) {
49         dom_click_xpath(I.buffer.document,
50                         "//div[@log='pan_rt']");
51     });
53 interactive("google-maps-pan-up",
54     "Pan a google map up",
55     function (I) {
56         dom_click_xpath(I.buffer.document,
57                         "//div[@log='pan_up']");
58     });
60 interactive("google-maps-pan-down",
61     "Pan a google map down",
62     function (I) {
63         dom_click_xpath(I.buffer.document,
64                         "//div[@log='pan_down']");
65     });
67 define_keymap("google_maps_keymap", $display_name = "google-maps");
68 define_key(google_maps_keymap, "C-c +",   "google-maps-zoom-in");
69 define_key(google_maps_keymap, "C-c -",   "google-maps-zoom-out");
70 define_key(google_maps_keymap, "C-f", "google-maps-pan-right");
71 define_key(google_maps_keymap, "C-b", "google-maps-pan-left");
72 define_key(google_maps_keymap, "C-n", "google-maps-pan-down");
73 define_key(google_maps_keymap, "C-p", "google-maps-pan-up");
75 var google_maps_modality = {
76     normal: google_maps_keymap
79 define_page_mode("google_maps_mode",
80     $display_name = "Google Maps",
81     $enable = function (buffer) {
82         buffer.content_modalities.push(google_maps_modality);
83     },
84     $disable = function (buffer) {
85         var i = buffer.content_modalities.indexOf(google_maps_modality);
86         if (i > -1)
87             buffer.content_modalities.splice(i, 1);
88     });
90 var google_maps_re = build_url_regex($domain = "maps.google");
91 auto_mode_list.push([google_maps_re, google_maps_mode]);
93 provide("google-maps");