| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 cr.define('options', function() { | 5 cr.define('options', function() { |
| 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
| 7 /** @const */ var Grid = cr.ui.Grid; | 7 /** @const */ var Grid = cr.ui.Grid; |
| 8 /** @const */ var GridItem = cr.ui.GridItem; | 8 /** @const */ var GridItem = cr.ui.GridItem; |
| 9 /** @const */ var GridSelectionController = cr.ui.GridSelectionController; | 9 /** @const */ var GridSelectionController = cr.ui.GridSelectionController; |
| 10 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; | 10 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 updateItem: function(imageInfo, imageUrl, opt_title) { | 204 updateItem: function(imageInfo, imageUrl, opt_title) { |
| 205 var imageIndex = this.indexOf(imageInfo); | 205 var imageIndex = this.indexOf(imageInfo); |
| 206 var wasSelected = this.selectionModel.selectedIndex == imageIndex; | 206 var wasSelected = this.selectionModel.selectedIndex == imageIndex; |
| 207 this.removeItem(imageInfo); | 207 this.removeItem(imageInfo); |
| 208 var newInfo = this.addItem( | 208 var newInfo = this.addItem( |
| 209 imageUrl, | 209 imageUrl, |
| 210 opt_title === undefined ? imageInfo.title : opt_title, | 210 opt_title === undefined ? imageInfo.title : opt_title, |
| 211 imageInfo.clickHandler, | 211 imageInfo.clickHandler, |
| 212 imageIndex, | 212 imageIndex, |
| 213 imageInfo.decorateFn); | 213 imageInfo.decorateFn); |
| 214 // Update image data with the reset of the keys from the old data. |
| 215 for (k in imageInfo) { |
| 216 if (!(k in newInfo)) |
| 217 newInfo[k] = imageInfo[k]; |
| 218 } |
| 214 if (wasSelected) | 219 if (wasSelected) |
| 215 this.selectedItem = newInfo; | 220 this.selectedItem = newInfo; |
| 216 return newInfo; | 221 return newInfo; |
| 217 }, | 222 }, |
| 218 | 223 |
| 219 /** | 224 /** |
| 220 * Removes previously added image from the grid. | 225 * Removes previously added image from the grid. |
| 221 * @param {Object} imageInfo Image data returned from the addItem() call. | 226 * @param {Object} imageInfo Image data returned from the addItem() call. |
| 222 */ | 227 */ |
| 223 removeItem: function(imageInfo) { | 228 removeItem: function(imageInfo) { |
| 224 var index = this.indexOf(imageInfo); | 229 var index = this.indexOf(imageInfo); |
| 225 if (index != -1) { | 230 if (index != -1) { |
| 231 var wasSelected = this.selectionModel.selectedIndex == index; |
| 226 this.inProgramSelection_ = true; | 232 this.inProgramSelection_ = true; |
| 227 this.dataModel.splice(index, 1); | 233 this.dataModel.splice(index, 1); |
| 234 if (wasSelected) { |
| 235 // If item removed was selected, select the item next to it. |
| 236 this.selectedItem = this.dataModel.item( |
| 237 Math.min(this.dataModel.length - 1, index)); |
| 238 } |
| 228 this.inProgramSelection_ = false; | 239 this.inProgramSelection_ = false; |
| 229 } | 240 } |
| 230 }, | 241 }, |
| 231 | 242 |
| 232 /** | 243 /** |
| 233 * Forces re-display, size re-calculation and focuses grid. | 244 * Forces re-display, size re-calculation and focuses grid. |
| 234 */ | 245 */ |
| 235 updateAndFocus: function() { | 246 updateAndFocus: function() { |
| 236 // Recalculate the measured item size. | 247 // Recalculate the measured item size. |
| 237 this.measured_ = null; | 248 this.measured_ = null; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 248 UserImagesGrid.ButtonImages = { | 259 UserImagesGrid.ButtonImages = { |
| 249 TAKE_PHOTO: 'chrome://theme/IDR_BUTTON_USER_IMAGE_TAKE_PHOTO', | 260 TAKE_PHOTO: 'chrome://theme/IDR_BUTTON_USER_IMAGE_TAKE_PHOTO', |
| 250 CHOOSE_FILE: 'chrome://theme/IDR_BUTTON_USER_IMAGE_CHOOSE_FILE', | 261 CHOOSE_FILE: 'chrome://theme/IDR_BUTTON_USER_IMAGE_CHOOSE_FILE', |
| 251 PROFILE_PICTURE: 'chrome://theme/IDR_PROFILE_PICTURE_LOADING' | 262 PROFILE_PICTURE: 'chrome://theme/IDR_PROFILE_PICTURE_LOADING' |
| 252 }; | 263 }; |
| 253 | 264 |
| 254 return { | 265 return { |
| 255 UserImagesGrid: UserImagesGrid | 266 UserImagesGrid: UserImagesGrid |
| 256 }; | 267 }; |
| 257 }); | 268 }); |
| OLD | NEW |