Я играю с чем-то похожим, чтобы сделать мое приложение доступным для скинов.Я бы начал с просмотра исходного кода любого из виджетов ячеек.Кажется, они принимают ресурсы как конструктор, однако у них также есть конструкторы, которые используют GWT.create (Resources.class) для создания ресурсов, если они не предоставлены.Что касается вашего вопроса об использовании этого шаблона для UIBinder, есть 3 варианта, упомянутых здесь .Однако при попытке определить стиль внутри UIBinder могут возникнуть проблемы с курицей и яйцом.
Проблема, с которой вы сталкиваетесь с другим кодом, заключается в том, что ваши две разные реализации стиля, потому что uibinder создает свой собственныйпакет ресурсов, который не ссылается на родительский css.Существует 3 решения:
1) Вырежьте CSS из файла подшивки пользовательского интерфейса в его собственный файл и используйте пользовательский интерфейс: вместе с предоставленным полем или пользовательским каталогом, чтобы внедрить стиль, используя свой собственный ресурсный переплет, где выможет объединять источники (т.е. @Source ({DEFAULT_CSS, "myCss.css"})).
2) Другой вариант - посмотреть на сгенерированный код и использовать синтаксис, который они используют для ссылки на css.однако в файле uibinder есть 2 проблемы, которые вам придется преодолеть: проблема с курицей и яйцом, а также тот факт, что Google может изменить это, не сказав вам и не сломав ваши вещи.Вот пример сгенерированного клиентского пакета из одного из моих файлов:
@Source("uibinder:com.foo.gwt.client.workspace.select.SelectWorkspaceViewImpl_SelectWorkspaceViewImplUiBinderImpl_GenCss_style.css")
SelectWorkspaceViewImpl_SelectWorkspaceViewImplUiBinderImpl_GenCss_style style();
3) Последнее решение заключается в использовании отложенной привязки для замены стиля по умолчанию.
<replace-with class="com.foo.gwt.laf.mpe.resource.CellTableResources">
<when-type-is class="com.google.gwt.user.cellview.client.CellTable.Resources" />
<when-property-is name="laf" value="MPE" />
</replace-with>