Chromium Code Reviews| Index: chrome/browser/resources/print_preview/settings/destination_settings.js |
| diff --git a/chrome/browser/resources/print_preview/settings/destination_settings.js b/chrome/browser/resources/print_preview/settings/destination_settings.js |
| index 4713d0aeccad732815f995ffe4f09e9d2b516428..e93fc2a3bc0ba26f688151b66e99190e62cb107c 100644 |
| --- a/chrome/browser/resources/print_preview/settings/destination_settings.js |
| +++ b/chrome/browser/resources/print_preview/settings/destination_settings.js |
| @@ -25,6 +25,13 @@ cr.define('print_preview', function() { |
| * @private |
| */ |
| this.destinationStore_ = destinationStore; |
| + |
| + /** |
| + * Current CSS class of the destination icon. |
| + * @type {?DestinationSettings.Classes_} |
| + * @private |
| + */ |
| + this.iconClass_ = null; |
| }; |
| /** |
| @@ -32,8 +39,8 @@ cr.define('print_preview', function() { |
| * @enum {string} |
| */ |
| DestinationSettings.EventType = { |
| - MANAGE_PRINTERS_SELECT: |
| - 'print_preview.DestinationSettings.MANAGE_PRINTERS_SELECT' |
| + CHANGE_BUTTON_ACTIVATE: |
| + 'print_preview.DestinationSettings.CHANGE_BUTTON_ACTIVATE' |
| }; |
| /** |
| @@ -42,157 +49,91 @@ cr.define('print_preview', function() { |
| * @private |
| */ |
| DestinationSettings.Classes_ = { |
| - SELECT: 'destination-settings-select' |
| + CHANGE_BUTTON: 'destination-settings-change-button', |
| + ICON: 'destination-settings-icon', |
| + ICON_CLOUD: 'destination-settings-icon-cloud', |
| + ICON_CLOUD_SHARED: 'destination-settings-icon-cloud-shared', |
| + ICON_GOOGLE_PROMOTED: 'destination-settings-icon-google-promoted', |
| + ICON_LOCAL: 'destination-settings-icon-local', |
| + ICON_MOBILE: 'destination-settings-icon-mobile', |
| + ICON_MOBILE_SHARED: 'destination-settings-icon-mobile-shared', |
| + LOCATION: 'destination-settings-location', |
| + NAME: 'destination-settings-name' |
| }; |
| - /** |
| - * Option value of the "Manage Printers..." select option. |
| - * @type {string} |
| - * @const |
| - * @private |
| - */ |
| - DestinationSettings.MANAGE_ID_ = '__manage'; |
| - |
| DestinationSettings.prototype = { |
| __proto__: print_preview.Component.prototype, |
| + /** @param {boolean} Whether the component is enabled. */ |
| set isEnabled(isEnabled) { |
| - this.select_.disabled = !isEnabled; |
| + var changeButton = this.getElement().getElementsByClassName( |
| + DestinationSettings.Classes_.CHANGE_BUTTON)[0]; |
| + changeButton.disabled = !isEnabled; |
| }, |
| /** @override */ |
| enterDocument: function() { |
| print_preview.Component.prototype.enterDocument.call(this); |
| + var changeButton = this.getElement().getElementsByClassName( |
| + DestinationSettings.Classes_.CHANGE_BUTTON)[0]; |
| this.tracker.add( |
| - this.select_, 'change', this.onSelectChange_.bind(this)); |
| + changeButton, 'click', this.onChangeButtonClick_.bind(this)); |
| this.tracker.add( |
| this.destinationStore_, |
| print_preview.DestinationStore.EventType.DESTINATION_SELECT, |
| this.onDestinationSelect_.bind(this)); |
| - this.tracker.add( |
| - this.destinationStore_, |
| - print_preview.DestinationStore.EventType.DESTINATIONS_INSERTED, |
| - this.onDestinationsInserted_.bind(this)); |
| - }, |
| - |
| - get select_() { |
| - return this.getElement().getElementsByClassName( |
| - DestinationSettings.Classes_.SELECT)[0]; |
| - }, |
| - |
| - renderDestinations_: function() { |
| - var select = this.select_; |
| - select.innerHTML = ''; |
| - var destinations = this.destinationStore_.destinations; |
| - var selectedDestination = this.destinationStore_.selectedDestination; |
| - var saveToPdfDest = null; |
| - var printWithCloudPrintDest = null; |
| - for (var dest, i = 0; dest = destinations[i]; i++) { |
| - if (dest.id == print_preview.Destination.GooglePromotedId.SAVE_AS_PDF) { |
| - saveToPdfDest = dest; |
| - continue; |
| - } |
| - if (dest.isPrintWithCloudPrint) { |
| - printWithCloudPrintDest = dest; |
| - continue; |
| - } |
| - var optionEl = document.createElement('option'); |
| - optionEl.value = dest.id; |
| - optionEl.selected = |
| - selectedDestination && selectedDestination.id == dest.id; |
| - optionEl.textContent = dest.displayName; |
| - select.appendChild(optionEl); |
| - } |
| - |
| - // Add special destinations. |
| - if (saveToPdfDest) { |
| - select.appendChild(this.createSeparatorOption_()); |
| - var printToPdfOptionEl = document.createElement('option'); |
| - printToPdfOptionEl.value = saveToPdfDest.id; |
| - printToPdfOptionEl.selected = |
| - selectedDestination && selectedDestination.id == saveToPdfDest.id; |
| - printToPdfOptionEl.textContent = saveToPdfDest.displayName; |
| - select.appendChild(printToPdfOptionEl); |
| - } |
| - if (printWithCloudPrintDest) { |
| - select.appendChild(this.createSeparatorOption_()); |
| - var printWithCloudPrintOptionEl = document.createElement('option'); |
| - printWithCloudPrintOptionEl.value = printWithCloudPrintDest.id; |
| - printWithCloudPrintOptionEl.selected = |
| - selectedDestination && |
| - selectedDestination.id == printWithCloudPrintDest.id; |
| - printWithCloudPrintOptionEl.textContent = |
| - printWithCloudPrintDest.displayName; |
| - select.appendChild(printWithCloudPrintOptionEl); |
| - } |
| - select.appendChild(this.createSeparatorOption_()); |
| - var manageOptionEl = document.createElement('option'); |
| - manageOptionEl.value = DestinationSettings.MANAGE_ID_; |
| - manageOptionEl.textContent = localStrings.getString('managePrinters'); |
| - select.appendChild(manageOptionEl); |
| - }, |
| - |
| - createSeparatorOption_: function() { |
| - var sep = document.createElement('option'); |
| - sep.disabled = true; |
| - sep.role = 'separator'; |
| - return sep; |
| - }, |
| - |
| - /** |
| - * Called when a destination is selected. Selects the corresponding option. |
| - * @private |
| - */ |
| - onDestinationSelect_: function() { |
| - var select = this.select_; |
| - if (select.options.length > 0) { |
| - select.options[select.selectedIndex].selected = false; |
| - } |
| - var selectedDestination = this.destinationStore_.selectedDestination; |
| - for (var option, i = 0; option = select.options[i]; i++) { |
| - if (selectedDestination.id == option.value) { |
| - option.selected = true; |
| - break; |
| - } |
| - } |
| }, |
| /** |
| - * Called when destinations are inserted into the destination store. Updates |
| - * the select element. |
| + * Called when the "Change" button is clicked. Dispatches the |
| + * CHANGE_BUTTON_ACTIVATE event. |
| * @private |
| */ |
| - onDestinationsInserted_: function() { |
| - this.renderDestinations_(); |
| + onChangeButtonClick_: function() { |
| + cr.dispatchSimpleEvent( |
| + this, DestinationSettings.EventType.CHANGE_BUTTON_ACTIVATE); |
| }, |
| /** |
| - * Called when the select element changes options. Selects the corresponding |
| - * print destination. |
| + * Called when the destination selection has changed. Updates UI elements. |
| * @private |
| */ |
| - onSelectChange_: function() { |
| - var select = this.select_; |
| - var selectedDestId = select.options[select.selectedIndex].value; |
| - |
| - if (selectedDestId == DestinationSettings.MANAGE_ID_) { |
| - cr.dispatchSimpleEvent( |
| - this, DestinationSettings.EventType.MANAGE_PRINTERS_SELECT); |
| - // Select first in the list. |
| - this.destinationStore_.selectDestination( |
| - this.destinationStore_.destinations[0]); |
| + onDestinationSelect_: function() { |
| + var destination = this.destinationStore_.selectedDestination; |
| + var nameEl = this.getElement().getElementsByClassName( |
| + DestinationSettings.Classes_.NAME)[0]; |
| + nameEl.textContent = destination.displayName; |
| + |
| + var iconEl = this.getElement().getElementsByClassName( |
| + DestinationSettings.Classes_.ICON)[0]; |
| + if (this.iconClass_) { |
| + iconEl.classList.remove(this.iconClass_); |
| + } |
| + if (destination.isGooglePromoted) { |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_GOOGLE_PROMOTED; |
| + } else if (destination.isLocal) { |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_LOCAL; |
| + } else if (destination.type == |
| + print_preview.Destination.Type.MOBILE && destination.isOwned) { |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_MOBILE; |
| + } else if (destination.type == |
| + print_preview.Destination.Type.MOBILE && !destination.isOwned) { |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_MOBILE_SHARED; |
| + } else if (destination.type == |
| + print_preview.Destination.Type.GOOGLE && destination.isOwned) { |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_CLOUD; |
| } else { |
| - var destinations = this.destinationStore_.destinations; |
| - for (var dest, i = 0; dest = destinations[i]; i++) { |
| - if (dest.id == selectedDestId) { |
| - this.destinationStore_.selectDestination(dest); |
| - break; |
| - } |
| - } |
| + this.iconClass_ = DestinationSettings.Classes_.ICON_CLOUD_SHARED; |
| } |
| + iconEl.classList.add(this.iconClass_); |
| + |
| + var locationEl = this.getElement().getElementsByClassName( |
| + DestinationSettings.Classes_.LOCATION)[0]; |
| + locationEl.textContent = destination.location; |
| } |
| }; |
| + // Export |
|
Dan Beam
2012/05/29 23:36:10
probably not necessary...
Robert Toscano
2012/05/30 21:08:00
Was done everywhere else in print preview code, so
Dan Beam
2012/05/31 00:17:58
ok, cool
|
| return { |
| DestinationSettings: DestinationSettings |
| }; |