5.2. Drag&Drop файлов#
Attention
Приём перетаскиваемого файла реализован только для списков и деревьев.
5.2.1. Активация функциональности#
Для активации бросания файлов на фрейм, в Avm необходимо указать свойство:
1 <frame dragDrop.files.isDropEnabled="true"> </frame>
Перекрыть в 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. Ограничения на загрузку файлов#
Возможно наложение ограничений на загружаемые файлы:
По расширению.
По размеру отдельного файла.
По суммарному размеру файлов.
По общему количеству файлов.
Наложение ограничений выполняется указанием свойств фрейма:
1<frame
2 dragDrop.files.filter.exts="jpg,jpeg,iso,zip"
3 dragDrop.files.filter.maxSize="20M"
4 dragDrop.files.filter.maxTotalSize="256M"
5 dragDrop.files.filter.maxCount="20"/>
6</frame>
5.2.3. Управление из кода операций#
В коде операций выборки возможно изменение доступности перетаскивания файлов в область главного контрола фрейма..
1@Oper(caption = "Разрешить/Запретить перетаскивание файлов", imageIndex = 23)
2def tb_switchIsFileDropEnabled(): Unit = {
3 selection.view.dragDrop.files.isDropEnabled = !selection.view.dragDrop.files.isDropEnabled
4}