Установить пользовательский стиль для GWT CellBrowser с UiBinder
Я пытаюсь установить собственный стиль для виджета GWT CellBrowser, используя UiBinder, но я не могу изменить какие-либо зависимые стили (то есть я могу установить другой цвет фона для всего виджета, но я не знаю, как изменить стиль для выбранный пункт)
Я пытался использовать "@external", как предлагалось на этом форуме, для других виджетов (например, здесь или здесь), но это не имело никакого эффекта, я думаю, это из-за того, как стили определены в CellBrowser.
Я думаю, что подход, который я должен использовать, должен быть больше похож на http://crazygui.wordpress.com/2011/11/01/how-to-skin-a-gwt-celltable/. Адаптируя их код к CellBrowser вместо CellTable, который я использую:
@UiField (provided=true) CellBrowser cellbrowser;
interface CellBrowserCompanyUiBinder extends UiBinder<Widget, CellBrowserCompany> {}
public CellBrowserCompany() {
TreeViewModel tvm = new TreeViewModelImpl();
CellBrowser.Resources reso = GWT.create(CellBrowsRes.class);
cellbrowser = new CellBrowser(tvm, null, reso);
cellbrowser.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
initWidget(uiBinder.createAndBindUi(this));
}
public interface CellBrowsRes extends CellBrowser.Resources{
@Source({CellBrowser.Style.DEFAULT_CSS, "path/to/css.css"})
BrowserStyle cellbrowserstyle();
interface BrowserStyle extends CellBrowser.Style{}
}
и я использую файл CSS из GWT SDK в качестве ссылки.
В файле ui.xml, который у меня есть, внутри тега
<c:CellBrowser ui:field="cellbrowser" width="100%" height="100%"/>
Код работает нормально, если я не использую "CellBrosRes". Таким образом, это работает, если я заменю строку, которая создает CellBrowser, этой:
CellBrowser browser = new CellBrowser(tvm, null);
Если я использую "CellBrosRes", он просто игнорирует мой стиль. Я думаю, проблема в том, как я создаю Ресурс Стиля.
Любая помощь о том, как получить эту работу будет принята с благодарностью. Дайте мне знать, если вам нужны дополнительные детали или если что-то не совсем понятно.
Спасибо
2 ответа
Поработав с ним немного больше, я решил создать свой собственный виджет для него. Это, безусловно, можно улучшить, и я хотел бы услышать предложения, но сейчас это то, что я использую.
Это структура: CellBrowser > CellPanel[] > Cell[]
Виджет CellBrowser инициализируется с помощью массива ячеек.
Эти клетки размещаются на первой CellPanel. Для каждой ячейки вы можете установить виджет, который будет отображаться на ней, и ячейку CellPanel, которая будет содержать ее дочерние элементы.
Поскольку все это использует пару файлов, я загрузил код в виде проекта Google Code.
Вы можете расширить CellBrowser и изменить CSS по умолчанию.
public class CustomCellBrowser extends CellBrowser {
/**
* The resources applied to the table.
*/
interface CellResources extends CellBrowser.Resources {
@Source({CellBrowser.Style.DEFAULT_CSS, "CustomCellBrowser.css"})
CellBrowser.Style cellBrowserStyle();
}
public <T> CustomCellBrowser(TreeViewModel viewModel, T rootValue) {
super(viewModel, rootValue, (CellBrowser.Resources) GWT.create(CellResources.class));
}
}
Возьмите копию CSS по умолчанию здесь и измените
Надеюсь, это поможет