Наборы значков
Наборы значков (icon sets) позволяют отвязать использование значков в визуальных компонентах от конкретных путей к изображениям в теме или констант элементов шрифтов. Кроме того, они упрощают переопределение значков, используемых в UI, унаследованном от дополнений.
Наборы значков – это перечисления, каждый элемент которых соответствует некоторому значку. Класс перечисления должен реализовывать интерфейс Icons.Icon с единственным параметром - строкой, задающей источник получения значка, например, font-icon:CHECK или icons/myawesomeicon.png. Для получения источника значка следует использовать предоставляемый фреймворком бин Icons.
Рассмотрим процесс создания набора значков.
-
Создайте перечисление, которое будет содержать значки. Имена элементов перечисления в наборе должны соответствовать регулярному выражению
[A-Z]_, то есть содержать только заглавные буквы и нижнее подчеркивание.public enum MyIcon implements Icons.Icon { EYE("classpath:/icon/eye.png"), (1) PENGUIN("classpath:/icon/penguin.png"); (2) private String source; MyIcon(String source) { this.source = source; } @Override public String source() { return source; } @Override public String iconName() { return name(); } }1 Переопределение стандартного значка Jmix. 2 Добавление нового значка. -
Зарегистрируйте набор значков в свойстве jmix.ui.icons-config файла
application.properties:jmix.ui.icons-config=ui.ex1.icon.MyIcon -
Теперь вы можете использовать значки из созданного набора, декларативно указывая имя соответствующего элемента enum в XML-дескрипторе:
<button icon="PENGUIN"/>или программно в контроллере экрана:
iconButton.setIconFromSet(MyIcon.PENGUIN);
Используя специальные префиксы, вы можете декларативно использовать значки из разных источников:
-
theme- значок из темы приложения, например,themes/helium-extended/icons/check-mark.png:<button icon="theme:icons/check-mark.png"/> -
file- файл с изображением:<button icon="file:D:/JMIX/penguin.png"/> -
classpath- значок, расположенный в classpath:<button icon="classpath:/icon/eye.png"/>