基本上我想要實現類似於其在GWT documentation風格單個細胞使用CSSResources
定義的細胞色素的東西但是我不想直接指定DIV元素上的樣式,但要從我爲我的CellTable定義的自定義CSSResource
分配一個混淆的樣式名。
下面是一些代碼:
我定義的自定義Resources
接口爲我CellTable:
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);
}
}
如何訪問我的CellTableRessources
,我傳遞給我的CellTable在我的自定義單元格? 這裏是重要的部分:
// how can I access the CSSResources which I pass to the CellTable
CellTableResources ressources = ?
String className = ressources.cellTableStyle().coloredCell();
我想出的唯一的解決辦法是將CellTableRessources
傳遞給我AbstractCell
的構造。 沒有更優雅的方式(我已經將它傳遞給CellTable)。
我認爲主要問題是:
「我如何從單元格或列訪問CellTable變量?」
感謝您的反饋意見。我其實完全忘了鑄造問題。是的,我認爲調用GWT.create()不應該添加任何開銷。我只是認爲它更優雅(代碼方式),如果我可以以某種方式訪問CellTable上已經傳遞的實例,但然後我遇到了鑄造問題。 – 2012-01-17 10:41:56
大多數無狀態類變成只是一堆靜態方法,所以GWT.create在第一次調用後沒有花費(適用於i18n,rpc),但CssResource確實有應該調用的ensureInjected()那隻會做一個檢查,看它是否已經添加到dom中。不是免費的,但便宜。 – 2012-01-17 16:39:51