4.5.2.1.9. Embedded
Компонент Embedded
предназначен для вывода изображений и встраивания в экран произвольных веб-страниц.
XML-имя компонента: embedded
Компонент реализован для блоков Web Client и Desktop Client. В десктоп-клиенте поддерживается только вывод изображений.
Рассмотрим пример использования компонента для вывода изображения из файла, сохраненного в FileStorage.
-
Объявляем компонент в XML-дескрипторе экрана:
<groupBox caption="Embedded" spacing="true" height="250px" width="250px" expand="embedded"> <embedded id="embedded" width="100%" align="MIDDLE_CENTER"/> </groupBox>
-
В контроллере экрана инжектируем компонент и интерфейс
FileStorageService
. Затем в методеinit()
получаем из параметров экрана переданный из вызывающего кодаFileDescriptor
, загружаем соответствующий файл в байтовый массив, создаем для негоByteArrayInputStream
и передаем в методsetSource()
компонента:@Inject private Embedded embedded; @Inject private FileStorageService fileStorageService; @Override public void init(Map<String, Object> params) { FileDescriptor imageFile = (FileDescriptor) params.get("imageFile"); byte[] bytes = null; if (imageFile != null) { try { bytes = fileStorageService.loadFile(imageFile); } catch (FileStorageException e) { showNotification("Unable to load image file", NotificationType.HUMANIZED); } } if (bytes != null) { embedded.setSource(imageFile.getName(), new ByteArrayInputStream(bytes)); embedded.setType(Embedded.Type.IMAGE); } else { embedded.setVisible(false); } }
В веб-клиенте компонент позволяет отображать файлы, находящиеся внутри каталога VAADIN
. Например:
<embedded id="embedded"
relativeSrc="themes/halo/my-logo.png"/>
или
embedded.setRelativeSource("VAADIN/themes/halo/my-logo.png")
Кроме того, можно определить каталог ресурсных файлов в свойстве приложения cuba.web.resourcesRoot, и указать для компонента Embedded
имя файла внутри этого каталога:
<embedded id="embedded"
src="my-logo.png"/>
или
embedded.setSource("my-logo.png")
Для встраивания в экран веб-клиента внешней веб-страницы необходимо передать компоненту URL:
try {
embedded.setSource(new URL("http://www.cuba-platform.com"));
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}