J'ai une classe qui étend Composite et contient un DisclosurePanel au niveau supérieur du fichier UiBinder associé.Dans GWT, comment remplacer le CSS de DisclosurePanel en utilisant <ui:style> ou ClientBundle
Dans DisclosurePanel, le HTML ressemble à ceci:
<table class="gwt-DisclosurePanel gwt-DisclosurePanel-closed>
<tr>
<td>
<a href="javascript:void(0);" style="display: block;" class="header">
<div class=""> <!-- an HTMLPanel I've shoved in to a <gwt:customHeader> block -->
...
</div>
</a>
...
Dans mon fichier UiBinder je peux utiliser addStyleNames = "{style ???.}" Et le style des choses, comme je peux le style de la DisclosurePanel lui-même et je peux le style de mon HTMLPanel intérieur de la, mais je ne peux pas le style de la
<a>
sauf en faisant ceci:
disclosurePanel.getHeader().getParent().getElement().getStyle().setTextDecoration(TextDecoration.NONE);
disclosurePanel.getHeader().getParent().getElement().getStyle().setColor("black");
dans le code, mais c'est moche et le style est maintenant à deux endroits, le code et le fichier UiBinder.
La raison pour laquelle je fais cela est de se débarrasser du soulignement et de la couleur bleue qui l'a par défaut. Une autre alternative est de faire quelque chose comme ceci:
.gwt-DisclosurePanel a {
text-decoration: none;
text: black;
}
mais je aurais besoin de faire référence à ce fichier CSS de ma page d'accueil (client.html) ou de référence à partir du fichier gwt.xml, mais ces deux façons de faire les choses sont obsolètes.
Comment est-ce que je fais mieux, ou n'est-ce pas possible?
Donc, tout ce que vous voulez est l'application CSS sans utiliser CSS, est-ce pas?Quelle est la raison de cette exigence très rare? –
Tous mes widgets utilisent des fichiers UiBinder avec des CSS définis dans un bloc. Je voulais être capable de faire la même chose avec ce widget pour styliser l'élément d'ancrage mais cela ne semble pas possible. Que voulez-vous dire que je veux appliquer CSS sans utiliser CSS? Je ne pense pas avoir dit cela, alors nous devons nous méprendre les uns les autres. –
dgrant
Hmmm ... est-ce que EnsureInjected() fera ce que je veux? Puis-je simplement définir un CssResource et un ClientBundle qui référencent CssResource puis appeler ensureInjected sur CssResource et il va injecter tous les CSS, même si je n'ai pas référencé toutes les méthodes sur ma sous-interface CssResource? – dgrant