2010-10-20 16 views
3

dans mon ui.xml, j'ai style comme ci-dessousutilisation uibinder en java css plutôt que xml

<ui:style src="../teststyle.css" /> 

si je veux utiliser le style programme dans fichier java plutôt que ui.xml, dans mon widget comment appeler .setStyleName (..) comme le css est obfuscated

Répondre

14

Vous devez faire les étapes suivantes pour utiliser les styles dans votre classe de vue:

  • Définition d'une interface qui étend CssResource dans votre classe vue
interface Style extends CssResource { 

    String myStyle(); 

} 
  • Ajouter un champ ui de ce type que vous venez de définir dans votre classe vue
@UiField 
Style style; 
  • Dans votre ui.xml ajoutez l'attribut type à votre élément <ui:style> (le type doit correspondre à l'interface de l'étape 1):
<ui:style type="com.example.MyView.Style"> 
  • Pour chacun des les classes css auxquelles vous voulez accéder dans votre classe d'affichage, vous devez ajouter une méthode à l'interface Style (comme fait avec myStyle())

  • Vous pouvez maintenant accéder au style via le champ style (style.myStyle())

espoir qui aide.

+1

En fait, le champ doit être nommé « style ', pas' css '; ou vous devez définir un attribut field = "" explicite sur votre pour nommer le champ Java, tout comme ui: field = "" sur les éléments et les widgets. –

+0

Merci d'avoir signalé cela. Je n'ai pas copié cette partie de mon code. – z00bs

+0

ne fonctionne pas avec UiBinder. La surbrillance de GWT Eclipse ne la voit pas comme un problème, et elle semble correcte, mais à l'exécution, GWT lance "[ERROR] [...] - Template MyWindow.ui.xml n'a pas d'attribut de champ ui: ... MyWindow # supportStyles ". On dirait un bug GWT. –

2

Si je comprends bien votre question, vous devez définir une classe qui s'étend de CssResource (vous l'avez probablement déjà fait). À votre avis, vous pouvez avoir une instance statique de cette classe (appelons-le cssInstance). Dans le constructeur, vous devez appeler cssInstance.ensureInjected(). Si vous voulez maintenant ajouter ou définir un style que vous pouvez le faire easly comme exemple: anyWidget.addStyleName(cssInstance.styleBorder());

+0

En outre: http://code.google.com/intl/en/webtoolkit/doc/latest/DevGuideUiBinder.html#Programmatic_access – axtavt

+1

oui RTFM est toujours bon :) – kukudas