ClipboardTrigger

ClipboardTrigger – это фасет, позволяющий пользователю копировать текст из поля в буфер обмена.

XML-имя компонента: clipboardTrigger.

Основы

ClipboardTrigger определяется в элементе facets XML-дескриптора экрана и имеет следующие атрибуты:

1. input - определяет id компонента, из которого будет скопирован текст. ClipboardTrigger можно связать со следующими компонентами:

2. button - определяет id кнопки, инициирующей копирование.

С помощью метода isSupportedByWebBrowser() можно проверить, поддерживает ли браузер пользователя копирование.

Пример использования:

<window xmlns="http://jmix.io/schema/ui/window"
        caption="msg://clipboardTriggerScreen.caption">
    <facets>
        <clipboardTrigger id="clipboardTrigger"
                          button="btn"
                          input="maskedField"/>
    </facets>
    <layout>
        <hbox spacing="true">
            <maskedField id="maskedField"
                         caption="Phone number"
                         mask="(###) ###-##-##"/>
            <button id="btn"
                    caption="Copy"
                    align="BOTTOM_RIGHT"/>
        </hbox>
    </layout>
</window>
@Autowired
private Notifications notifications;
@Autowired
private ClipboardTrigger clipboardTrigger;

@Subscribe("btn")
public void onBtnClick(Button.ClickEvent event) {
    if (clipboardTrigger.isSupportedByWebBrowser()) {
        notifications.create()
                .withCaption("Phone number was copied to clipboard")
                .show();
    } else {
        notifications.create()
                .withCaption("The phone number is not copied, because your " +
                        "browser does not support this functionality")
                .show();
    }
}

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите фасет в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

CopyEvent

Это событие отправляется, когда пользователь нажимает на связанную с ClipboardTrigger кнопку, и имеет следующие методы:

  • isSuccess() - возвращает true, если текстовое содержимое было успешно скопировано в буфер обмена на стороне клиента.

  • getSource() - возвращает объект ClipboardTrigger, в котором произошло событие.

@Subscribe("clipboardTrigger")
public void onClipboardTriggerCopy(ClipboardTrigger.CopyEvent event) {
    if (event.isSuccess()) {
        notifications.create()
                .withCaption("Text was successfully copied to clipboard")
                .show();
    } else {
        notifications.create()
                .withCaption("Something went wrong during copying")
                .show();
    }
}

Чтобы создать слушателя события программно, используйте метод фасета addCopyListener().

Все XML-атрибуты

Вы можете просматривать и редактировать применимые к фасету атрибуты с помощью панели инспектора Jmix UI в дизайнере экранов Studio.