Как я могу использовать один и тот же @def в нескольких файлах css CssResource?

Я хочу сказать, что в одном централизованном месте,

@def mainColor = #f00;

а затем во всех других моих файлах css обращайтесь к mainColor, не переопределяя его. Затем, когда я меняю mainColor в одном месте, все мое приложение меняет цвет.

На данный момент лучший способ, который я могу придумать, - это включать два файла @Source для каждого объявления CssResource и всегда включать глобальный файл def. Есть ли другие способы?


person Riley Lark    schedule 14.02.2012    source источник
comment
Не могли бы вы добавить свой собственный пример @Source в качестве еще одного «ответа» для сравнения?   -  person checketts    schedule 15.02.2012
comment
Я просто добавил это как комментарий к ответу Дэнни Кирчмайера ниже. По сути, это тот же метод, но с другим синтаксисом и контекстом.   -  person Riley Lark    schedule 15.02.2012


Ответы (1)


Насколько я знаю, это ваш единственный вариант:

style.css

@def mainColor #f00;

* .ui.xml

<ui:style src="../../../styles/style.css">
    .widget{ color: mainColor; }
</ui:style>

Обратной стороной этого является относительный путь. Для каждого ui.xml потребуется другой путь к src.

В качестве альтернативы, если вы не против использовать файл Constants.java (вместо css), вы можете использовать @eval

<ui:style>
  @eval mainColor com.myproject.client.Styles.INSTANCE.mainColor(); 
  .widget{ color: mainColor; }
</ui:style>    
person Danny Kirchmeier    schedule 14.02.2012
comment
Уф. Спасибо за предложения. Хотя они довольно грубые;) - person Riley Lark; 15.02.2012
comment
@Thomas Broyer добавлен на groups.google.com/forum / #! msg / google-web-toolkit / c8XdDoxDNZA /, что он тоже использует этот метод. Вне uibinder он упомянул многократную технику @Source: @Source({"path/to/definitions.css", "foo.css"}) FooStyles foo; - person Riley Lark; 15.02.2012