2017-03-10 1 views
1

J'ai rejoint un projet d'application GWT il y a quelques semaines. La base de code a été lancée en 2009. J'essaye de remplacer un FlexTable par un CellTable afin que je puisse profiter des colonnes triables. La version actuelle de GWT dans le projet est 2.7.0, mais en regardant à travers le code, il semble qu'il y ait encore des fonctionnalités qui sont sorties du style. Je suis nouveau à GWT, je peux me tromper.Comment utiliser CellTable.Style avec GWT 2.7.0 sans UiBinder?

Jusqu'à présent, les choses sont fonctionnellement bonnes. Cependant, GWT semble dépasser mes tentatives de mise à jour du CSS. J'ai utilisé le GWT dynatablerf sample comme modèle pour ajouter du CSS au CellTable. Le TimeSlotWidget utilise CellTable.Style:

interface TableResources extends CellTable.Resources { 
    @Override 
    @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"}) 
    CellTable.Style cellTableStyle(); 
    } 

Et puis l'applique à la CellTable comme ceci:

table = new CellTable<TimeSlotListWidget.ScheduleRow>(ROWS_IN_A_DAY, 
     GWT.<TableResources> create(TableResources.class)); 

J'ai essayé d'utiliser cette approche dans mon code. J'ai même omis la CellTable.Style.DEFAULT_CSS de la liste de valeurs et créé mon propre feuille de style CSS qui a commencé comme une copie de la GWT CellTable.css

J'ai remarqué que le fichier GWT TimeSlotListWidget sample has an ui.xml avec UIBinder. Mon projet n'utilise pas actuellement UIBinder.

Lorsque j'exécute mon code, un bloc <style> est inséré dans la page qui semble être le standard GWT CellTable.css. Puis directement après cela, un autre bloc <style> est inséré avec mon CSS. Et mon CSS ne remplace pas le CSS GWT standard.

Comment puis-je empêcher l'insertion du GWT CellTable.css? Pourquoi est-ce qu'il est inséré?

Répondre

2

Le problème est que dans votre code, vous réutilisez CellTable.Style, et deux ClientBundles différents ont utilisé le même type mais chacun leur a lié son propre CSS.

Au lieu de cela, étendre l'interface CellTable.Style, et l'utiliser dans votre paquet :

interface MyCellTableStyle extends CellTable.Style {} 
interface TableResources extends CellTable.Resources { 
    @Override 
    @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"}) 
    MyCellTableStyle cellTableStyle(); 
}