2013-07-12 5 views
0

У меня есть ClientBundle, в котором я ссылающийся кучу иконок как ImageResource-хGWT: Я хочу, чтобы создать пользовательский аннотацию заменить @Source

public interface DefaultCMSResources extends ClientBundle { 

    String baseImgLoc = "com/jorsek/ui/client/style/images/base/"; 
    String baseIconLoc = "com/jorsek/ui/client/style/images/icons/"; 
    String fugeIconsLoc = baseIconLoc+"fugue/"; 



    /* Icons */ 

    @Source(fugeIconsLoc+"book-open.png") 
    ImageResource getBookIcon(); 

} 

По ряду причин, я действительно не люблю для ссылки на статическое местоположение файла с помощью аннотации @Source.

Я действительно хотел бы создать пользовательскую аннотацию, такую ​​как @FugueIcon, которая будет генерировать статический путь динамически где-то. IE:

Я просмотрел код для аннотации @Source и ничего не выскочил на меня. Я надеялся, что кто-то сможет дать шаги, которые я могу предпринять, чтобы выполнить это.

Спасибо!

ответ

0

Проблема заключается в том, что если файл выбран динамически, компилятор не будет знать заранее, каковым будет изображение - он не будет знать размер, поэтому он не сможет написать правильный css для него (при использовании @sprite в вашем CssResource) или предоставить результаты для различных методов ImageResource. Аннотирование @Source означает, что компилятор может знать все, что ему нужно, перед изображением до того, как приложение превратилось в JS, поэтому оно может записать в этом JS информацию о его изображении.

Вместо этого вы можете посмотреть способ реализации этого метода ImageResource напрямую - одним из вариантов было бы создать экземпляр экземпляра com.google.gwt.resources.client.impl.ImageResourcePrototype, который реализует этот интерфейс и позволяет указать детали изображения, которые необходимы - имя (в основном необязательный) URL-адрес, на котором он может быть найден, и позиция в этом URL-адресе (если вы пишете), а также размер, который вы хотите использовать.

+0

Ну, это не динамический выбор. Это будет делать то же самое, что и @Source, просто разрешая его с помощью другого относительного пути. Это что-то меняет? –

Смежные вопросы