OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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.contentSettings', function() { | 5 cr.define('options.contentSettings', function() { |
6 const List = cr.ui.List; | 6 const List = cr.ui.List; |
7 const ListItem = cr.ui.ListItem; | 7 const ListItem = cr.ui.ListItem; |
8 const ArrayDataModel = cr.ui.ArrayDataModel; | 8 const ArrayDataModel = cr.ui.ArrayDataModel; |
9 | 9 |
10 /** | 10 /** |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 input.select(); | 274 input.select(); |
275 return; | 275 return; |
276 } | 276 } |
277 | 277 |
278 patternLabel.classList.toggle('hidden'); | 278 patternLabel.classList.toggle('hidden'); |
279 settingLabel.classList.toggle('hidden'); | 279 settingLabel.classList.toggle('hidden'); |
280 input.classList.toggle('hidden'); | 280 input.classList.toggle('hidden'); |
281 select.classList.toggle('hidden'); | 281 select.classList.toggle('hidden'); |
282 | 282 |
283 var doc = this.ownerDocument; | 283 var doc = this.ownerDocument; |
| 284 var area = doc.querySelector('div[contentType=' + |
| 285 listItem.contentType + '][mode=' + listItem.mode + ']'); |
| 286 area.enableAddAndEditButtons(!editing); |
| 287 |
284 if (editing) { | 288 if (editing) { |
285 this.setAttribute('editing', ''); | 289 this.setAttribute('editing', ''); |
286 cr.ui.limitInputWidth(input, this, 20); | 290 cr.ui.limitInputWidth(input, this, 20); |
287 input.focus(); | 291 input.focus(); |
288 input.select(); | 292 input.select(); |
289 } else { | 293 } else { |
290 this.removeAttribute('editing'); | 294 this.removeAttribute('editing'); |
291 | 295 |
292 var newPattern = input.value; | 296 var newPattern = input.value; |
293 | 297 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 var addRow = cr.doc.createElement('button'); | 453 var addRow = cr.doc.createElement('button'); |
450 addRow.textContent = templateData.addExceptionRow; | 454 addRow.textContent = templateData.addExceptionRow; |
451 this.appendChild(addRow); | 455 this.appendChild(addRow); |
452 | 456 |
453 addRow.onclick = function(event) { | 457 addRow.onclick = function(event) { |
454 var emptyException = new Object; | 458 var emptyException = new Object; |
455 emptyException.displayPattern = ''; | 459 emptyException.displayPattern = ''; |
456 emptyException.setting = ''; | 460 emptyException.setting = ''; |
457 self.exceptionsList.addException(emptyException); | 461 self.exceptionsList.addException(emptyException); |
458 }; | 462 }; |
| 463 this.addRow = addRow; |
459 | 464 |
460 var editRow = cr.doc.createElement('button'); | 465 var editRow = cr.doc.createElement('button'); |
461 editRow.textContent = templateData.editExceptionRow; | 466 editRow.textContent = templateData.editExceptionRow; |
462 this.appendChild(editRow); | 467 this.appendChild(editRow); |
463 this.editRow = editRow; | 468 this.editRow = editRow; |
464 | 469 |
465 editRow.onclick = function(event) { | 470 editRow.onclick = function(event) { |
466 self.exceptionsList.editSelectedRow(); | 471 self.exceptionsList.editSelectedRow(); |
467 }; | 472 }; |
468 } | 473 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 set mode(mode) { | 507 set mode(mode) { |
503 return this.setAttribute('mode', mode); | 508 return this.setAttribute('mode', mode); |
504 }, | 509 }, |
505 | 510 |
506 /** | 511 /** |
507 * Update the enabled/disabled state of the editing buttons based on which | 512 * Update the enabled/disabled state of the editing buttons based on which |
508 * rows are selected. | 513 * rows are selected. |
509 */ | 514 */ |
510 updateButtonSensitivity: function() { | 515 updateButtonSensitivity: function() { |
511 var selectionSize = this.exceptionsList.selectedItems.length; | 516 var selectionSize = this.exceptionsList.selectedItems.length; |
512 if (this.editRow) | 517 if (this.addRow) |
513 this.editRow.disabled = selectionSize != 1; | 518 this.addRow.disabled = this.addAndEditButtonsDisabled; |
| 519 if (this.editRow) { |
| 520 this.editRow.disabled = selectionSize != 1 || |
| 521 this.addAndEditButtonsDisabled; |
| 522 } |
514 this.removeRow.disabled = selectionSize == 0; | 523 this.removeRow.disabled = selectionSize == 0; |
515 }, | 524 }, |
516 | 525 |
517 /** | 526 /** |
| 527 * Manually toggle the enabled/disabled state for the add and edit buttons. |
| 528 * They'll be disabled while another row is being edited. |
| 529 * @param {boolean} |
| 530 */ |
| 531 enableAddAndEditButtons: function(enable) { |
| 532 this.addAndEditButtonsDisabled = !enable; |
| 533 this.updateButtonSensitivity(); |
| 534 }, |
| 535 |
| 536 /** |
518 * Callback from the selection model. | 537 * Callback from the selection model. |
519 * @param {!cr.Event} ce Event with change info. | 538 * @param {!cr.Event} ce Event with change info. |
520 * @private | 539 * @private |
521 */ | 540 */ |
522 handleOnSelectionChange_: function(ce) { | 541 handleOnSelectionChange_: function(ce) { |
523 this.updateButtonSensitivity(); | 542 this.updateButtonSensitivity(); |
524 }, | 543 }, |
525 }; | 544 }; |
526 | 545 |
527 return { | 546 return { |
528 ExceptionsListItem: ExceptionsListItem, | 547 ExceptionsListItem: ExceptionsListItem, |
529 ExceptionsList: ExceptionsList, | 548 ExceptionsList: ExceptionsList, |
530 ExceptionsArea: ExceptionsArea | 549 ExceptionsArea: ExceptionsArea |
531 }; | 550 }; |
532 }); | 551 }); |
OLD | NEW |