15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('print_preview', function() { 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Component that displays a list of destinations with a heading, action link, 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and "Show All..." button. An event is dispatched when the action link is 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * activated. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!cr.EventTarget} eventTarget Event target to pass to destination 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * items for dispatching SELECT events. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} title Title of the destination list. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string=} opt_actionLinkLabel Optional label of the action link. If 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * no label is provided, the action link will not be shown. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @extends {print_preview.Component} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function DestinationList(eventTarget, title, opt_actionLinkLabel) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview.Component.call(this); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Event target to pass to destination items for dispatching SELECT events. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {!cr.EventTarget} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.eventTarget_ = eventTarget; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Title of the destination list. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {string} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.title_ = title; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Label of the action link. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {?string} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.actionLinkLabel_ = opt_actionLinkLabel || null; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Backing store for the destination list. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {!Array.<print_preview.Destination>} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.destinations_ = []; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Current query used for filtering. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {?string} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.query_ = null; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Whether the destination list is fully expanded. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {boolean} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isShowAll_ = false; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Maximum number of destinations before showing the "Show All..." button. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {number} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.shortListSize_ = DestinationList.DEFAULT_SHORT_LIST_SIZE_; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Enumeration of event types dispatched by the destination list. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @enum {string} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.EventType = { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Dispatched when the action linked is activated. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACTION_LINK_ACTIVATED: 'print_preview.DestinationList.ACTION_LINK_ACTIVATED' 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Default maximum number of destinations before showing the "Show All..." 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * button. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {number} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @const 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.DEFAULT_SHORT_LIST_SIZE_ = 4; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Height of a destination list item in pixels. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {number} 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @const 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.HEIGHT_OF_ITEM_ = 30; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.prototype = { 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: print_preview.Component.prototype, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @param {boolean} isShowAll Whether the show-all button is activated. */ 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsShowAll: function(isShowAll) { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isShowAll_ = isShowAll; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.renderDestinations_(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {number} Size of list when destination list is in collapsed 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * mode (a.k.a non-show-all mode). 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getShortListSize: function() { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.shortListSize_; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @return {number} Count of the destinations in the list. */ 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getDestinationsCount: function() { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.destinations_.length; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets estimated height of the destination list for the given number of 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * items. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} Number of items to render in the destination list. 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {number} Height (in pixels) of the destination list. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getEstimatedHeightInPixels: function(numItems) { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) numItems = Math.min(numItems, this.destinations_.length); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var headerHeight = 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.destination-list > header').offsetHeight; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var throbberHeight = 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getIsVisible(this.getChildElement('.throbber-container')) ? 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.HEIGHT_OF_ITEM_ : 0; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return headerHeight + numItems * DestinationList.HEIGHT_OF_ITEM_ + 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) throbberHeight; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @param {boolean} isVisible Whether the throbber is visible. */ 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsThrobberVisible: function(isVisible) { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsVisible(this.getChildElement('.throbber-container'), isVisible); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} size Size of list when destination list is in collapsed 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * mode (a.k.a non-show-all mode). 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateShortListSize: function(size) { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size = Math.max(1, Math.min(size, this.destinations_.length)); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (size == 1 && this.destinations_.length > 1) { 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If this is the case, we will only show the "Show All" button and 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nothing else. Increment the short list size by one so that we can see 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // at least one print destination. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size++; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setShortListSizeInternal(size); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @override */ 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) createDom: function() { 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setElementInternal(this.cloneTemplateInternal( 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'destination-list-template')); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.title').textContent = this.title_; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.actionLinkLabel_) { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var actionLinkEl = this.getChildElement('.action-link'); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actionLinkEl.textContent = this.actionLinkLabel_; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsVisible(actionLinkEl, true); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @override */ 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enterDocument: function() { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview.Component.prototype.enterDocument.call(this); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.tracker.add( 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.action-link'), 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'click', 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.onActionLinkClick_.bind(this)); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.tracker.add( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.show-all-button'), 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'click', 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setIsShowAll.bind(this, true)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates the destinations to render in the destination list. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!Array.<print_preview.Destination>} destinations Destinations to 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * render. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateDestinations: function(destinations) { 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.destinations_ = destinations; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.renderDestinations_(); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @param {?string} query Query to update the filter with. */ 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateSearchQuery: function(query) { 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.query_ = query; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.renderDestinations_(); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} text Text to set the action link to. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @protected 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setActionLinkTextInternal: function(text) { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.actionLinkLabel_ = text; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.action-link').textContent = text; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets the short list size without constraints. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @protected 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setShortListSizeInternal: function(size) { 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.shortListSize_ = size; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.renderDestinations_(); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Renders all destinations in the given list. 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!Array.<print_preview.Destination>} destinations List of 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * destinations to render. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @protected 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) renderListInternal: function(destinations) { 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsVisible(this.getChildElement('.no-destinations-message'), 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destinations.length == 0); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsVisible(this.getChildElement('.destination-list > footer'), false); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var numItems = destinations.length; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (destinations.length > this.shortListSize_ && !this.isShowAll_) { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) numItems = this.shortListSize_ - 1; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getChildElement('.total').textContent = 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localStrings.getStringF('destinationCount', destinations.length); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsVisible(this.getChildElement('.destination-list > footer'), true); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < numItems; i++) { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var destListItem = new print_preview.DestinationListItem( 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.eventTarget_, destinations[i]); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.addChild(destListItem); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destListItem.render(this.getChildElement('.destination-list > ul')); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Renders all destinations in the list that match the current query. For 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * each render, all old destination items are first removed. 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) renderDestinations_: function() { 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.removeChildren(); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var filteredDests = []; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.destinations_.forEach(function(destination) { 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!this.query_ || destination.matches(this.query_)) { 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) filteredDests.push(destination); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, this); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.renderListInternal(filteredDests); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the action link is clicked. Dispatches an 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ACTION_LINK_ACTIVATED event. 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onActionLinkClick_: function() { 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cr.dispatchSimpleEvent(this, 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList.EventType.ACTION_LINK_ACTIVATED); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Export 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DestinationList: DestinationList 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 276