FileTreeEntityController.coffee 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. define [
  2. "base"
  3. "ide/file-tree/util/iconTypeFromName"
  4. ], (App, iconTypeFromName) ->
  5. App.controller "FileTreeEntityController", ["$scope", "ide", "$modal", ($scope, ide, $modal) ->
  6. $scope.select = (e) ->
  7. if e.ctrlKey or e.metaKey
  8. e.stopPropagation()
  9. initialMultiSelectCount = ide.fileTreeManager.multiSelectedCount()
  10. ide.fileTreeManager.toggleMultiSelectEntity($scope.entity) == 0
  11. if initialMultiSelectCount == 0
  12. # On first multi selection, also include the current active/open file.
  13. ide.fileTreeManager.multiSelectSelectedEntity()
  14. else
  15. ide.fileTreeManager.selectEntity($scope.entity)
  16. $scope.$emit "entity:selected", $scope.entity
  17. $scope.draggableHelper = () ->
  18. if ide.fileTreeManager.multiSelectedCount() > 0
  19. return $("<strong style='z-index:100'>#{ide.fileTreeManager.multiSelectedCount()} Files</strong>")
  20. else
  21. return $("<strong style='z-index:100'>#{$scope.entity.name}</strong>")
  22. $scope.inputs =
  23. name: $scope.entity.name
  24. $scope.startRenaming = () ->
  25. $scope.entity.renaming = true
  26. invalidModalShowing = false
  27. $scope.finishRenaming = () ->
  28. # avoid double events when blur and on-enter fire together
  29. return if !$scope.entity.renaming
  30. name = $scope.inputs.name
  31. # validator will set name to undefined for invalid filenames
  32. if !name?
  33. # Showing the modal blurs the rename box which calls us again
  34. # so track this with the invalidModalShowing flag
  35. return if invalidModalShowing
  36. invalidModalShowing = true
  37. modal = $modal.open(
  38. templateUrl: "invalidFileNameModalTemplate"
  39. )
  40. modal.result.then () ->
  41. invalidModalShowing = false
  42. return
  43. delete $scope.entity.renaming
  44. if !name? or name.length == 0
  45. $scope.inputs.name = $scope.entity.name
  46. return
  47. ide.fileTreeManager.renameEntity($scope.entity, name)
  48. $scope.$on "rename:selected", () ->
  49. $scope.startRenaming() if $scope.entity.selected
  50. $scope.openDeleteModal = () ->
  51. if ide.fileTreeManager.multiSelectedCount() > 0
  52. entities = ide.fileTreeManager.getMultiSelectedEntityChildNodes()
  53. else
  54. entities = [$scope.entity]
  55. $modal.open(
  56. templateUrl: "deleteEntityModalTemplate"
  57. controller: "DeleteEntityModalController"
  58. resolve:
  59. entities: () -> entities
  60. )
  61. $scope.$on "delete:selected", () ->
  62. $scope.openDeleteModal() if $scope.entity.selected
  63. $scope.iconTypeFromName = iconTypeFromName
  64. ]
  65. App.controller "DeleteEntityModalController", [
  66. "$scope", "ide", "$modalInstance", "entities"
  67. ($scope, ide, $modalInstance, entities) ->
  68. $scope.state =
  69. inflight: false
  70. $scope.entities = entities
  71. $scope.delete = () ->
  72. $scope.state.inflight = true
  73. for entity in $scope.entities
  74. ide.fileTreeManager.deleteEntity(entity)
  75. $modalInstance.close()
  76. $scope.cancel = () ->
  77. $modalInstance.dismiss('cancel')
  78. ]