установить пользовательский стиль для GWT CellBrowser с UiBinder - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь установить собственный стиль для виджета 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 ]

1 голос
/ 12 февраля 2012

Поработав еще немного, я решил создать для него свой собственный виджет.Это определенно может быть улучшено, и я хотел бы услышать предложения, но сейчас это то, что я использую.

Это структура: CellBrowser> CellPanel []> Cell []

  • Виджет CellBrowser инициализируется с помощью массива ячеек.

  • Эти ячейки размещаются на первой панели CellPanel.Для каждой ячейки вы можете установить виджет, который будет отображаться на ней, и ячейку CellPanel, которая будет содержать ее дочерние элементы.

Поскольку все это использует пару файлов, я загрузил код в виде Google Code Project

0 голосов
/ 03 мая 2012

Вы можете расширить 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 по умолчанию здесь и измените

Надеюсь, это поможет

...