Proprio come con qualsiasi ClientBundle
e CssResource
: creare un'interfaccia che si estende Datagrid.Resources
e l'override del metodo dataGridStyle
con un'annotazione @Source
punta al tuo file CSS (o, eventualmente, sia al file originale e il proprio file, in modo faranno essere combinati insieme).
Facendo in questo modo avrà la precedenza lo stile per tuttiDataGrid
s nella vostra applicazione se (Dipende in realtà su cui CssResource
esempio ottiene ensureInjected()
prima: quello dall'originale DataGrid.Resources
o quello dal sub-interfaccia): poiché si utilizza lo stesso tipo di ritorno (DataGrid.Style
), i nomi di classe offuscati saranno uguali.
Se si vuole cambiare lo stile su una base caso per caso, allora, in aggiunta, dichiarare un'interfaccia che si estende DataGrid.Style
e utilizzarlo come il tipo di ritorno al vostro dataGridStyle
sostituzione: perché il nome della classe offuscato si basa su sia il nome completo dell'interfaccia che il nome del metodo, l'interfaccia secondaria DataGrid.Style
genererà nomi di classe offuscati diversi rispetto all'interfaccia originale DataGrid.Style
.
Quindi, naturalmente, GWT.create()
l'interfaccia secondaria DataGrid.Resources
e passarla come argomento al costruttore DataGrid
.
Vedi anche http://code.google.com/p/google-web-toolkit/issues/detail?id=6144
fonte
2012-06-04 08:06:27
sono stato in grado di ottenere il vostro primo suggerimento per lavorare, ma non ho potuto farlo con ensureInject ordinazione. Qualsiasi ordine comporterebbe l'utilizzo del css originale. Guardando DataGrid.java sembra che usi sempre il proprio risultato GWT.create. Passandolo al costruttore ha funzionato. '\t MyResources interfaccia pubblici estende DataGrid.Resources { \t @Source ({DataGrid.Style.DEFAULT_CSS, "DataGrid.css"}) \t \t DataGrid.Style dataGridStyle(); \t} \t statici MyResources risorse = GWT.create (MyResources.class); ' – Glenn
Il bit sull'utilizzo di uno stile diverso, caso per caso, mi ha salvato. Grazie :) –