5.2. Drag&Drop файлов#
Attention
Приём перетаскиваемого файла реализован только для списков и деревьев.
5.2.1. Активация функциональности#
Для активации бросания файлов на фрейм, в Avm необходимо указать свойство:
Перекрыть в Avi-выборки метод-обработчик onDropFiles
. Или создать свой обработчик, имя которого указать в
свойстве фрейма dragDrop.files.dropOperation
.
1 override protected def onDropFiles(event: DropFilesEvent): Unit = {
2 dialogs.showMessage("onDropFiles: Загружены файл(ы):\r\n"
3 + event.uploadResults.map(it => s"""${it.fileName} -> ${it.file.getAbsolutePath}""").mkString("\r\n"));
4 }
Если для фрейма активировано бросание файла, то при перетаскивании файла в область главного контрола фрейма, курсор мыши примет вид:

В остальных случаях курсор будет иметь вид:

После броска файла(ов) в область главного контрола фрейма, если все файлы удовлетворяют ограничениям, выполняется загрузка файлов на сервер. На экране отображается диалог прогресса загрузки.
По завершении загрузки файлов будет вызвана указанная в свойстве фрейма dragDrop.files.dropOperation
операция-обработчик.
5.2.2. Ограничения на загрузку файлов#
Возможно наложение ограничений на загружаемые файлы:
По расширению.
По размеру отдельного файла.
По суммарному размеру файлов.
По общему количеству файлов.
Наложение ограничений выполняется указанием свойств фрейма:
5.2.3. Управление из кода операций#
В коде операций выборки возможно изменение доступности перетаскивания файлов в область главного контрола фрейма..
1@Oper(caption = "Разрешить/Запретить перетаскивание файлов", imageIndex = 23)
2def tb_switchIsFileDropEnabled(): Unit = {
3 selection.view.dragDrop.files.isDropEnabled = !selection.view.dragDrop.files.isDropEnabled
4}