基本上我想实现类似于GWT documentation
中定义的单元格着色的东西但是我不想直接在DIV元素上指定样式,但是想要从我为我的CellTable定义的自定义CSSResource
中指定一个模糊的样式名。
以下是一些代码:
我为我的CellTable定义了一个自定义Resources
界面:
public interface CellTableResources extends Resources {
@Source({CellTable.Style.DEFAULT_CSS,CellTableStyle.STYLE})
CellTableStyle cellTableStyle();
public interface CellTableStyle extends Style {
String STYLE = "CellTable.css";
public Sring coloredCell();
}
}
我把它传递给我的CellTable的构造函数:
CellTable<XY> table = new CellTable<XY>(15,cellTableResources);
这就是我的自定义单元格的样子。
public class ColorCell extends AbstractCell<String> {
interface Templates extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<div class=\"{0}\">{1}</div>")
SafeHtml cell(String classname, SafeHtml value);
}
private static Templates templates = GWT.create(Templates.class);
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
if (value == null) {
return;
}
// how can I access the CSSResources which I pass to the CellTable
CellTableResources ressources = ?
String className = ressources.cellTableStyle().coloredCell();
SafeHtml safeValue = SafeHtmlUtils.fromString(value);
SafeHtml rendered = templates.cell(className, safeValue);
sb.append(rendered);
}
}
如何在我的自定义单元格中访问传递给我的CellTable的CellTableRessources
?
这是重要的部分:
// how can I access the CSSResources which I pass to the CellTable
CellTableResources ressources = ?
String className = ressources.cellTableStyle().coloredCell();
我提出的唯一解决方案是将CellTableRessources
传递给我的AbstractCell
的构造函数。
是不是有更优雅的方式(我已经把它传递给了CellTable)。
我认为主要问题是:
“如何从单元格或列中访问CellTable变量?”
答案 0 :(得分:0)
“更优雅的方式”的问题在于它暗示CellTable自己的风格在其他地方会有用,而他们可能不会。即使他们为样式提供了一个getter,它也会返回一个Style类型的实例,然后你必须按照自己的风格进行投射。
最好将此视为您的风格,它提供了一些选项:
唯一棘手的部分是如果单元格上的样式依赖于表格中的样式,在这种情况下,你正在处理这种令人烦恼的依赖是一件好事 - 它要求你要注意样式本身的依赖性。如果你选择第三个(我认为这是最干净的)选项但仍然具有这种依赖性,你可以更进一步 - 在你的单元格中声明一个样式/ clientbundle,但是像你对CellTable的ClientBundle那样扩展它 - 和由于这些是接口,您可以创建一个扩展这两个接口的捆绑包,并提供给每个表和单元。