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()
.