2 * (C) Copyright 2009-2011 John J. Foerch
4 * Use, modification, and distribution are subject to the terms specified in the
10 require("content-buffer.js");
12 function dom_click_xpath (doc, xpath) {
13 var iter = doc.evaluate(xpath,
15 xpath_lookup_namespace,
16 Ci.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE ,
18 var node = iter.singleNodeValue;
20 var rect = node.getBoundingClientRect();
21 dom_node_click(node, rect.left + 1, rect.top + 1);
25 interactive("google-maps-zoom-in",
26 "Zoom in on a google map",
28 dom_click_xpath(I.buffer.document,
29 "//div[@guidedhelpid='zoom_in']/div[@title]");
32 interactive("google-maps-zoom-out",
33 "Zoom out on a google map",
35 dom_click_xpath(I.buffer.document,
36 "//div[@guidedhelpid='zoom_out']/div[@title]");
39 interactive("google-maps-pan-left",
40 "Pan a google map left",
42 dom_click_xpath(I.buffer.document,
43 "//div[@log='pan_lt']");
46 interactive("google-maps-pan-right",
47 "Pan a google map right",
49 dom_click_xpath(I.buffer.document,
50 "//div[@log='pan_rt']");
53 interactive("google-maps-pan-up",
54 "Pan a google map up",
56 dom_click_xpath(I.buffer.document,
57 "//div[@log='pan_up']");
60 interactive("google-maps-pan-down",
61 "Pan a google map down",
63 dom_click_xpath(I.buffer.document,
64 "//div[@log='pan_down']");
67 interactive("google-maps-toggle-feature",
68 "Prompt for and toggle a secondary map feature",
70 var features = { "45 degrees": 0,
82 var feature = yield I.minibuffer.read(
84 $history = "google-maps-feature",
85 $completer = prefix_completer(
86 $completions = [f for (f in features)]),
89 var id = features[feature];
90 dom_click_xpath(I.buffer.document,
91 "//div[@jsprops='activityId:"+id+"']//span");
95 define_keymap("google_maps_keymap", $display_name = "google-maps");
96 define_key(google_maps_keymap, "C-c +", "google-maps-zoom-in");
97 define_key(google_maps_keymap, "C-c -", "google-maps-zoom-out");
98 define_key(google_maps_keymap, "C-f", "google-maps-pan-right");
99 define_key(google_maps_keymap, "C-b", "google-maps-pan-left");
100 define_key(google_maps_keymap, "C-n", "google-maps-pan-down");
101 define_key(google_maps_keymap, "C-p", "google-maps-pan-up");
102 define_key(google_maps_keymap, "C-c C-f", "google-maps-toggle-feature");
104 var google_maps_modality = {
105 normal: google_maps_keymap
108 define_page_mode("google_maps_mode",
109 $display_name = "Google Maps",
110 $enable = function (buffer) {
111 buffer.content_modalities.push(google_maps_modality);
113 $disable = function (buffer) {
114 var i = buffer.content_modalities.indexOf(google_maps_modality);
116 buffer.content_modalities.splice(i, 1);
119 var google_maps_re = build_url_regex($domain = "maps.google");
120 auto_mode_list.push([google_maps_re, google_maps_mode]);
122 provide("google-maps");