Oracle ADF: SkinFactory работает некорректно в JDeveloper 12.1.3

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

public List getSkinChoices() {
    List choices = new ArrayList();
    String skinFamily = null;
    String skinLabel = null;
    SkinFactory sf = SkinFactory.getFactory();
    FacesContext context = FacesContext.getCurrentInstance();
    for (Iterator i = sf.getSkinIds(); i.hasNext();) {
        String skinID = (String) i.next();
        Skin skin = sf.getSkin(context, skinID);
        skinFamily = skin.getFamily();
        skinLabel = skinFamily;
        if (skin.getRenderKitId().indexOf("desktop") > 0 ) {
            choices.add(new SelectItem(skinFamily, skinLabel));
        }
    }
    return choices;
}

Теперь, когда я использую Jdev 12.1.3, метод sf.getSkinIds(); устарел. Этот метод больше не загружает весь скин, как обычно введите здесь описание изображения

Может ли кто-нибудь направить меня на новый способ реализации? Есть ли альтернатива, чтобы получить все доступные скины?

NB: код загрузки всех доступных скинов в Jdev 12.1.2.
Спасибо.


person Festus Tamakloe    schedule 13.03.2015    source источник


Ответы (1)


Класс SkinFactory является частью Trinidad API и согласно его javadoc необходимо:

Используйте SkinProvider#getSkinMetadata(), чтобы получить список поддерживаемых скинов.

Итак, вы должны сделать что-то вроде этого:

Collection<SkinMetadata> supportedSkins = SkinProvider.getSkinMetadata(context);
Iterator<SkinMetadata> iterator = supportedSkins.iterator();
while (iterator.hasNext()) {
    SkinMetadata next = iterator.next();
    skinFamily = next.getFamily();
    //etc.
}
person Konstantin Yovkov    schedule 13.03.2015
comment
Спасибо. Вы спасаете мой день - person Festus Tamakloe; 13.03.2015