braille_text_handler.js revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5goog.provide('cvox.BrailleTextHandler'); 6 7goog.require('cvox.BrailleInterface'); 8goog.require('cvox.BrailleUtil'); 9goog.require('cvox.ChromeVox'); 10goog.require('cvox.NavBraille'); 11 12/** 13 * @fileoverview Updates braille display contents following text changes. 14 * 15 */ 16 17/** 18 * Represents an editable text region. 19 * 20 * @constructor 21 * @param {!cvox.BrailleInterface} braille Braille interface. 22 */ 23cvox.BrailleTextHandler = function(braille) { 24 /** 25 * Braille interface used to produce output. 26 * @type {!cvox.BrailleInterface} 27 * @private 28 */ 29 this.braille_ = braille; 30}; 31 32 33/** 34 * Called by controller class when text changes. 35 * @param {string} line The text of the line. 36 * @param {number} start The 0-based index starting selection. 37 * @param {number} end The 0-based index ending selection. 38 * @param {boolean} multiline True if the text comes from a multi line text 39 * field. 40 * @param {Element} element DOM node which line comes from. 41 * @param {number} lineStart Start offset of line (might be > 0 for multiline 42 * fields). 43 */ 44cvox.BrailleTextHandler.prototype.changed = function( 45 line, start, end, multiline, element, lineStart) { 46 var content; 47 if (multiline) { 48 var spannable = cvox.BrailleUtil.createValue(line, start, end, lineStart); 49 if (element) { 50 spannable.setSpan(element, 0, line.length); 51 } 52 content = new cvox.NavBraille({text: spannable, 53 startIndex: start, 54 endIndex: end}); 55 } else { 56 if (cvox.ChromeVox.navigationManager) { 57 content = cvox.ChromeVox.navigationManager.getBraille(); 58 } 59 } 60 if (content) { 61 this.braille_.write(content); 62 } 63}; 64