У меня есть простой виджет UiBinder, содержащий TextArea:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:TextArea visibleLines="3" />
</ui:UiBinder>
Я хочу контролировать цвет фона этого текстового поля для состояний записи и чтения. Для достижения этого GWT использует декоратор имени стиля "-readonly". Поэтому я пробую это:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.textBoxStyle {
background-color:yellow;
}
.textBoxStyle-readonly {
background-color:lightgray;
}
</ui:style>
<g:TextArea styleName="{style.textBoxStyle}" visibleLines="3" />
</ui:UiBinder>
Очевидно, это не сработает, потому что имена стилей запутываются для CssResources, что приводит к чему-то вроде этого:
.G1x26wpeN {
background-color:yellow
}
.G1x26wpeO {
background-color: lightgray;
}
Результат HTML для writeable textarea выглядит следующим образом:
<textarea tabindex="0" class="G1x26wpeN" rows="3"/>
Текстовая область только для чтения выглядит следующим образом:
<textarea tabindex="0" class="G1x26wpeN G1x26wpeN-readonly" readonly="" rows="3"/>
Как объявить стиль, так что GWT будет запутывать основную часть, но не депилятор "-readonly"?
Я знаю, что я могу отключить обфускацию для всего имени стиля. Но я хотел бы сохранить обфускацию, используя декораторы.