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 /** | 5 /** |
6 * Sets 'hidden' property of a cr.ui.Command instance and dispatches | 6 * Sets 'hidden' property of a cr.ui.Command instance and dispatches |
7 * 'hiddenChange' event manually so that associated cr.ui.MenuItem can handle | 7 * 'hiddenChange' event manually so that associated cr.ui.MenuItem can handle |
8 * the event. | 8 * the event. |
9 * TODO(fukino): Remove this workaround when crbug.com/481941 is fixed. | 9 * TODO(fukino): Remove this workaround when crbug.com/481941 is fixed. |
10 * | 10 * |
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 canExecute: function(event, fileManager) { | 650 canExecute: function(event, fileManager) { |
651 event.canExecute = fileManager.shouldShowDriveSettings(); | 651 event.canExecute = fileManager.shouldShowDriveSettings(); |
652 event.command.setHidden(!event.canExecute); | 652 event.command.setHidden(!event.canExecute); |
653 } | 653 } |
654 }); | 654 }); |
655 | 655 |
656 /** | 656 /** |
657 * Deletes selected files. | 657 * Deletes selected files. |
658 * @type {Command} | 658 * @type {Command} |
659 */ | 659 */ |
660 CommandHandler.COMMANDS_['delete'] = /** @type {Command} */ ({ | 660 CommandHandler.COMMANDS_['delete'] = (function() { |
661 /** | 661 /** |
662 * @param {!Event} event Command event. | 662 * @constructor |
663 * @param {!FileManager} fileManager FileManager to use. | 663 * @implements {Command} |
664 */ | 664 */ |
665 execute: function(event, fileManager) { | 665 var DeleteCommand = function() {}; |
666 var entries = CommandUtil.getCommandEntries(event.target); | |
667 | 666 |
668 // Execute might be called without a call of canExecute method, e.g. called | 667 DeleteCommand.prototype = { |
669 // directly from code. Double check here not to delete undeletable entries. | 668 /** |
670 if (this.containsFakeOrRootEntry_(entries, fileManager) || | 669 * @param {!Event} event Command event. |
671 this.containsReadOnlyEntry_(entries, fileManager)) | 670 * @param {!FileManager} fileManager FileManager to use. |
672 return; | 671 */ |
| 672 execute: function(event, fileManager) { |
| 673 var entries = CommandUtil.getCommandEntries(event.target); |
673 | 674 |
674 var message = entries.length === 1 ? | 675 // Execute might be called without a call of canExecute method, |
675 strf('GALLERY_CONFIRM_DELETE_ONE', entries[0].name) : | 676 // e.g. called directly from code. Double check here not to delete |
676 strf('GALLERY_CONFIRM_DELETE_SOME', entries.length); | 677 // undeletable entries. |
| 678 if (this.containsFakeOrRootEntry_(entries, fileManager) || |
| 679 this.containsReadOnlyEntry_(entries, fileManager)) |
| 680 return; |
677 | 681 |
678 fileManager.ui.deleteConfirmDialog.show(message, function() { | 682 var message = entries.length === 1 ? |
679 fileManager.fileOperationManager.deleteEntries(entries); | 683 strf('GALLERY_CONFIRM_DELETE_ONE', entries[0].name) : |
680 }, null, null); | 684 strf('GALLERY_CONFIRM_DELETE_SOME', entries.length); |
681 }, | |
682 /** | |
683 * @param {!Event} event Command event. | |
684 * @param {!FileManager} fileManager FileManager to use. | |
685 */ | |
686 canExecute: function(event, fileManager) { | |
687 var entries = CommandUtil.getCommandEntries(event.target); | |
688 | 685 |
689 // If entries contain fake or root entry, hide delete option. | 686 fileManager.ui.deleteConfirmDialog.show(message, function() { |
690 if (this.containsFakeOrRootEntry_(entries, fileManager)) { | 687 fileManager.fileOperationManager.deleteEntries(entries); |
691 event.canExecute = false; | 688 }, null, null); |
692 event.command.setHidden(true); | 689 }, |
693 return; | 690 |
| 691 /** |
| 692 * @param {!Event} event Command event. |
| 693 * @param {!FileManager} fileManager FileManager to use. |
| 694 */ |
| 695 canExecute: function(event, fileManager) { |
| 696 var entries = CommandUtil.getCommandEntries(event.target); |
| 697 |
| 698 // If entries contain fake or root entry, hide delete option. |
| 699 if (this.containsFakeOrRootEntry_(entries, fileManager)) { |
| 700 event.canExecute = false; |
| 701 event.command.setHidden(true); |
| 702 return; |
| 703 } |
| 704 |
| 705 event.canExecute = entries.length > 0 && |
| 706 !this.containsReadOnlyEntry_(entries, fileManager); |
| 707 event.command.setHidden(false); |
| 708 }, |
| 709 |
| 710 /** |
| 711 * @param {!Array<!Entry>} entries |
| 712 * @param {!FileManager} fileManager |
| 713 * @return {boolean} True if entries contain fake or root entry. |
| 714 */ |
| 715 containsFakeOrRootEntry_: function(entries, fileManager) { |
| 716 return entries.some(function(entry) { |
| 717 if (util.isFakeEntry(entry)) |
| 718 return true; |
| 719 |
| 720 var volumeInfo = fileManager.volumeManager.getVolumeInfo(entry); |
| 721 if (!volumeInfo) |
| 722 return true; |
| 723 |
| 724 return volumeInfo.displayRoot === entry; |
| 725 }); |
| 726 }, |
| 727 |
| 728 /** |
| 729 * @param {!Array<!Entry>} entries |
| 730 * @param {!FileManager} fileManager |
| 731 * @return {boolean} True if entries contain read only entry. |
| 732 */ |
| 733 containsReadOnlyEntry_: function(entries, fileManager) { |
| 734 return entries.some(function(entry) { |
| 735 var locationInfo = fileManager.volumeManager.getLocationInfo(entry); |
| 736 return locationInfo && locationInfo.isReadOnly; |
| 737 }); |
694 } | 738 } |
| 739 }; |
695 | 740 |
696 event.canExecute = entries.length > 0 && | 741 return new DeleteCommand(); |
697 !this.containsReadOnlyEntry_(entries, fileManager); | 742 })(); |
698 event.command.setHidden(false); | |
699 }, | |
700 /** | |
701 * @param {!Array<!Entry>} entries | |
702 * @param {!FileManager} fileManager | |
703 * @return {boolean} True if entries contain fake or root entry. | |
704 */ | |
705 containsFakeOrRootEntry_: function(entries, fileManager) { | |
706 return entries.some(function(entry) { | |
707 if (util.isFakeEntry(entry)) | |
708 return true; | |
709 | |
710 var volumeInfo = fileManager.volumeManager.getVolumeInfo(entry); | |
711 if (!volumeInfo) | |
712 return true; | |
713 | |
714 return volumeInfo.displayRoot === entry; | |
715 }); | |
716 }, | |
717 /** | |
718 * @param {!Array<!Entry>} entries | |
719 * @param {!FileManager} fileManager | |
720 * @return {boolean} True if entries contain read only entry. | |
721 */ | |
722 containsReadOnlyEntry_: function(entries, fileManager) { | |
723 return entries.some(function(entry) { | |
724 var locationInfo = fileManager.volumeManager.getLocationInfo(entry); | |
725 return locationInfo && locationInfo.isReadOnly; | |
726 }); | |
727 } | |
728 }); | |
729 | 743 |
730 /** | 744 /** |
731 * Pastes files from clipboard. | 745 * Pastes files from clipboard. |
732 * @type {Command} | 746 * @type {Command} |
733 */ | 747 */ |
734 CommandHandler.COMMANDS_['paste'] = /** @type {Command} */ ({ | 748 CommandHandler.COMMANDS_['paste'] = /** @type {Command} */ ({ |
735 /** | 749 /** |
736 * @param {!Event} event Command event. | 750 * @param {!Event} event Command event. |
737 * @param {!FileManager} fileManager FileManager to use. | 751 * @param {!FileManager} fileManager FileManager to use. |
738 */ | 752 */ |
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1387 */ | 1401 */ |
1388 CommandHandler.COMMANDS_['configure'] = (function() { | 1402 CommandHandler.COMMANDS_['configure'] = (function() { |
1389 /** | 1403 /** |
1390 * @constructor | 1404 * @constructor |
1391 * @implements {Command} | 1405 * @implements {Command} |
1392 */ | 1406 */ |
1393 var ConfigureCommand = function() { | 1407 var ConfigureCommand = function() { |
1394 }; | 1408 }; |
1395 | 1409 |
1396 ConfigureCommand.prototype = { | 1410 ConfigureCommand.prototype = { |
1397 __proto__: Command.prototype, | |
1398 | |
1399 /** | 1411 /** |
1400 * @param {EventTarget} element | 1412 * @param {EventTarget} element |
1401 * @param {!FileManager} fileManager | 1413 * @param {!FileManager} fileManager |
1402 * @return {VolumeInfo} | 1414 * @return {VolumeInfo} |
1403 * @private | 1415 * @private |
1404 */ | 1416 */ |
1405 getElementVolumeInfo_: function(element, fileManager) { | 1417 getElementVolumeInfo_: function(element, fileManager) { |
1406 if (element instanceof VolumeItem) | 1418 if (element instanceof VolumeItem) |
1407 return element.volumeInfo; | 1419 return element.volumeInfo; |
1408 if (element instanceof ShortcutItem) { | 1420 if (element instanceof ShortcutItem) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1463 }, | 1475 }, |
1464 canExecute: function(event, fileManager) { | 1476 canExecute: function(event, fileManager) { |
1465 var currentDirEntry = fileManager.directoryModel.getCurrentDirEntry(); | 1477 var currentDirEntry = fileManager.directoryModel.getCurrentDirEntry(); |
1466 var volumeInfo = currentDirEntry && | 1478 var volumeInfo = currentDirEntry && |
1467 fileManager.volumeManager.getVolumeInfo(currentDirEntry); | 1479 fileManager.volumeManager.getVolumeInfo(currentDirEntry); |
1468 event.canExecute = volumeInfo && !volumeInfo.watchable; | 1480 event.canExecute = volumeInfo && !volumeInfo.watchable; |
1469 event.command.setHidden(!event.canExecute || | 1481 event.command.setHidden(!event.canExecute || |
1470 fileManager.directoryModel.getFileListSelection().getCheckSelectMode()); | 1482 fileManager.directoryModel.getFileListSelection().getCheckSelectMode()); |
1471 } | 1483 } |
1472 }); | 1484 }); |
OLD | NEW |