使用UiBinder将自定义样式设置为GWT CellBrowser

时间:2012-02-04 22:48:22

标签: gwt uibinder cellbrowser

我正在尝试使用UiBinder为GWT CellBrowser小部件设置自定义样式,但我无法更改任何依赖样式(即我可以为整个小部件设置不同的背景颜色但我不知道如何更改所选项目的风格)

我尝试使用本论坛中建议的“@external”用于其他小部件(例如herehere)但它没有任何效果,我想这是因为这种方式样式在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{}
}

我正在使用GWT SDK中的CSS文件作为参考。

在我的ui.xml文件中,在&lt; G:HTMLPanel&GT;标记:

<c:CellBrowser ui:field="cellbrowser" width="100%" height="100%"/>

如果我不使用“CellBrosRes”,代码可以正常工作。因此,如果我用这个替换创建CellBrowser的行:

CellBrowser browser = new CellBrowser(tvm, null);

如果我使用“CellBrosRes”,它就会忽略我的风格。我认为问题在于我创建样式资源的方式。

任何有关如何使这项工作的帮助将不胜感激。如果您需要其他详细信息或者某些内容不够明确,请与我们联系。

由于

2 个答案:

答案 0 :(得分:1)

在与它挣扎之后,我决定为它创建自己的小部件。它肯定可以改进,我很乐意听到建议,但是现在,它正是我正在使用的。

这是结构:CellBrowser&gt; CellPanel []&gt;细胞[]

  • 使用Cell Array初始化CellBrowser小部件。

  • 这些单元格放置在第一个CellPanel上。对于每个Cell你 可以设置要在其上显示的Widget和将要显示的CellPanel 包含它的孩子。

由于整个事情使用了几个文件,我已将代码上传为google code project

答案 1 :(得分:0)

您可以扩展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));
}

}

Grab a copy of the default CSS here and change

希望这是有帮助的