.. _drag_and_drop_files: Drag&Drop файлов ================================================= .. seealso:: 1. :term:`Drag&Drop файлов` 2. :term:`Фрейм` 3. :ref:`Свойства фрейма, управляющие Drag&Drop файлов` 4. :term:`Avm.scala файл` .. attention:: Приём перетаскиваемого файла реализован только для списков и деревьев. Активация функциональности ----------------------------------------- Для активации :term:`бросания файлов` на фрейм, в :term:`Avm` необходимо указать свойство: - :btk:frameprop:`dragDrop.files.isDropEnabled` .. code-block:: xml :caption: Код :term:`Avm` :linenos: Перекрыть в :term:`Avi`-выборки метод-обработчик ``onDropFiles``. Или создать свой обработчик, имя которого указать в свойстве фрейма :btk:frameprop:`dragDrop.files.dropOperation`. .. code-block:: scala :caption: Код :term:`Avi` :linenos: override protected def onDropFiles(event: DropFilesEvent): Unit = { dialogs.showMessage("onDropFiles: Загружены файл(ы):\r\n" + event.uploadResults.map(it => s"""${it.fileName} -> ${it.file.getAbsolutePath}""").mkString("\r\n")); } Если для фрейма активировано бросание файла, то при перетаскивании файла в область :term:`главного контрола фрейма<Главный контрол фрейма>`, курсор мыши примет вид: .. image:: drag_and_drop_files-allow.png В остальных случаях курсор будет иметь вид: .. image:: drag_and_drop_files-reject.png После броска файла(ов) в область главного контрола фрейма, если все файлы удовлетворяют :ref:`ограничениям`, выполняется загрузка файлов на сервер. На экране отображается диалог прогресса загрузки. По завершении загрузки файлов будет вызвана указанная в свойстве фрейма :btk:frameprop:`dragDrop.files.dropOperation` операция-обработчик. .. _file_upload_limits: Ограничения на загрузку файлов ------------------------------ Возможно наложение ограничений на загружаемые файлы: - По расширению. - По размеру отдельного файла. - По суммарному размеру файлов. - По общему количеству файлов. Наложение ограничений выполняется указанием свойств фрейма: - :btk:frameprop:`dragDrop.files.filter.exts` - :btk:frameprop:`dragDrop.files.filter.maxSize` - :btk:frameprop:`dragDrop.files.filter.maxTotalSize` - :btk:frameprop:`dragDrop.files.filter.maxCount` .. code-block:: xml :caption: Код :term:`Avm` :linenos: Управление из кода операций ----------------------------------------- В коде операций выборки возможно изменение доступности перетаскивания файлов в область :term:`главного контрола фрейма.<Главный контрол фрейма>`. .. code-block:: scala :caption: Код :term:`Avi` :linenos: @Oper(caption = "Разрешить/Запретить перетаскивание файлов", imageIndex = 23) def tb_switchIsFileDropEnabled(): Unit = { selection.view.dragDrop.files.isDropEnabled = !selection.view.dragDrop.files.isDropEnabled } .. seealso:: - :java:type:`CoreView.CoreDragDrop.CoreFiles.isDropEnabled()`