UI-компоненты

Дополнение WebDAV включает UI-компоненты, облегчающие работу с документами WebDAV.

Чтобы добавить эти компоненты на экран, используйте Jmix Studio.

Нажмите Add Component на панели действий, затем введите webdav в поле поиска. В списке результатов выберите нужный компонент и дважды щелкните на нем.

add webdav component

Новый элемент будет добавлен как на панели структуры Jmix UI, так и в XML. Вы можете настраивать атрибуты, такие как id, height, width и т. д., так же, как это делается для других UI-компонентов.

<webdav:webdavDocumentUpload id="webdavDocumentField"
                             property="webdavDocument"
                             colspan="2"/>

Если вы не используете дизайнер экранов, объявите пространство имен webdav в XML-дескрипторе вашего экрана вручную:

<view xmlns="http://jmix.io/schema/flowui/view"
      xmlns:webdav="http://jmix.io/schema/webdav/ui"
      title="msg://webdavDocumentWrapperDetailView.title"
      focusComponent="form">

Вы можете инжектировать UI-компонент в контроллер с помощью действия Inject to Controller на панели структуры Jmix UI:

inject webdav from hierarchy

Также вы можете воспользоваться кнопкой Inject на панели действий:

inject webdav
Чтобы компонент можно было инжектировать в контроллер, у него должен быть указан атрибут id.

Теперь вы можете программно взаимодействовать с UI-компонентом webDAV, обращаясь напрямую к его методам:

@ViewComponent
private WebdavDocumentUploadField webdavDocumentField;

@Subscribe
public void onInit(final InitEvent event) {
    webdavDocumentField.setMaxFileSize(5242880);
}

WebdavDocumentLink — UI-компонент, позволяющий пользователям открывать документы в настольных офисных приложениях. Кроме того, если поддерживается версионирование документа, пользователи могут просматривать все его версии.

ui webdav document link

Компонент предоставляет следующие возможности:

  • Открытие последней версии документа для просмотра и редактирования.

  • Открытие предыдущих версий документа в режиме только для чтения (подробнее см. Версии документов WebDAV).

В примере ниже WebdavDocumentLink будет отрендерен в левой колонке таблицы данных:

<dataGrid id="webdavDocumentWrappersDataGrid"
          width="100%"
          minHeight="20em"
          dataContainer="webdavDocumentWrappersDc"
          columnReorderingAllowed="true">
    <columns resizable="true">
        <column property="webdavDocument"/>
        <column property="description"/>
        <column key="lastModifiedBy" header="msg://column.lastModifiedBy"/>
        <column key="lastModifiedDate" header="msg://column.lastModifiedDate"/>
        <column property="department"/>
    </columns>
</dataGrid>

Обработчик renderer создает и возвращает компонент WebdavDocumentLink:

@Supply(to = "webdavDocumentWrappersDataGrid.webdavDocument", subject = "renderer")
private Renderer<WebdavDocumentWrapper> webdavDocumentWrappersDataGridWebdavDocumentRenderer() {
    return new ComponentRenderer<>( (1)
            () -> uiComponents.create(WebdavDocumentLink.class), (2)
            (link, wrapper) -> {
                WebdavDocument webdavDocument = wrapper.getWebdavDocument();
                if (webdavDocument != null) {
                    link.setWebdavDocument(webdavDocument);
                }
            });
}
1 Метод возвращает объект Renderer, создающий UI-компонент для отображения в колонке.
2 Экземпляр компонента WebdavDocumentLink создается с помощью фабрики UiComponents.

WebdavDocumentVersionLink позволяет открывать конкретную версию документа в настольных офисных приложениях в режиме только для чтения. Компонент отображает имя файла конкретной версии документа.

Чтобы создать WebdavDocumentVersionLink, используйте фабрику UiComponents.

WebdavDocumentVersionLink webdavDocumentVersionLink =
    uiComponents.create(WebdavDocumentVersionLink.class);
webdavDocumentVersionLink.setWebdavDocumentVersion(documentVersion);

WebdavDocumentUploadField

Компонент WebdavDocumentUploadField специально предназначен для работы с документами.

Имя XML-компонента: webdavDocumentUpload.

Компонент предоставляет следующие возможности:

  • Загрузка файла для создания нового документа или новой версии существующего документа.

  • Открытие документа для просмотра или редактирования.

  • Скачивание последней или предыдущих версий документа.

  • Создание новых версий документа на основе существующих версий.

Режимы работы

Компонент работает в двух режимах:

  • Versioning Enabled: когда версионирование включено, компонент WebdavDocumentUploadField отображается без каких-либо ограничений.

  • Versioning Disabled: когда версионирование отключено, компонент WebdavDocumentUploadField не отображает ссылку на последнюю версию документа.