2 * (C) Copyright 2009-2010 John J. Foerch
4 * Use, modification, and distribution are subject to the terms specified in the
10 require("content-buffer.js");
12 function google_maps_control (buffer, xpath) {
13 var doc = buffer.document;
14 var iter = doc.evaluate(xpath,
16 xpath_lookup_namespace,
17 Ci.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE ,
19 var node = iter.singleNodeValue;
21 var rect = node.getBoundingClientRect();
22 dom_node_click(node, rect.left + 1, rect.top + 1);
26 function define_google_maps_command (name, doc, control) {
27 interactive("google-maps-" + name, doc, function(I) {
28 google_maps_control(I.buffer, "//div[@log='" + control + "']");
31 ignore_function_for_get_caller_source_code_reference("define_google_maps_command");
33 function define_google_maps_zoom_command (name, doc, control) {
34 interactive("google-maps-" + name, doc,
36 google_maps_control(I.buffer, "//div[@guidedhelpid='"+control+"']/div[@title]");
39 ignore_function_for_get_caller_source_code_reference("define_google_maps_zoom_command");
41 define_google_maps_zoom_command('zoom-in', "Zoom in on a google map", "zoom_in");
42 define_google_maps_zoom_command('zoom-out', "Zoom out on a google map", "zoom_out");
43 define_google_maps_command('pan-left', "Pan a google map left", 'pan_lt');
44 define_google_maps_command('pan-right', "Pan a google map right", 'pan_rt');
45 define_google_maps_command('pan-up', "Pan a google map up", 'pan_up');
46 define_google_maps_command('pan-down', "Pan a google map down", 'pan_down');
48 define_keymap("google_maps_keymap", $display_name = "google-maps");
49 define_key(google_maps_keymap, "C-c +", "google-maps-zoom-in");
50 define_key(google_maps_keymap, "C-c -", "google-maps-zoom-out");
51 define_key(google_maps_keymap, "C-f", "google-maps-pan-right");
52 define_key(google_maps_keymap, "C-b", "google-maps-pan-left");
53 define_key(google_maps_keymap, "C-n", "google-maps-pan-down");
54 define_key(google_maps_keymap, "C-p", "google-maps-pan-up");
56 var google_maps_modality = {
57 normal: google_maps_keymap
60 define_page_mode("google_maps_mode",
61 $display_name = "Google Maps",
62 $enable = function (buffer) {
63 buffer.content_modalities.push(google_maps_modality);
65 $disable = function (buffer) {
66 var i = buffer.content_modalities.indexOf(google_maps_modality);
68 buffer.content_modalities.splice(i, 1);
71 var google_maps_re = build_url_regex($domain = "maps.google");
72 auto_mode_list.push([google_maps_re, google_maps_mode]);
74 provide("google-maps");