2012-06-04 2 views
6

Я пытаюсь понять, как переопределить стиль dataGridHeader, определенный в DataGrid.css! Ядро GWT. Имя стиля GWT обфускается adler32, поэтому я не могу просто использовать .dataGridHeader в моем css. В моем случае я желаю простой замены белого пространства: нормальный.Как переопределить стиль GWT для заголовка DataGrid

Я видел здесь статьи о введении css, но все они выглядят как класс, а не подтип, используемый в компоненте, таком как DataGrid.

Как переопределить стиль заголовка, используемый в компоненте, таком как DataGrid?

ответ

10

Так же, как с любым ClientBundle и CssResource: создать интерфейс, который расширяет Datagrid.Resources и подменяет dataGridStyle метод с @Source аннотации, указывающие на ваш собственный файл CSS (или, возможно, как и исходный файл и свой собственный файл, так что они будут объединяться вместе).

Действовать таким образом будет переопределить стиль всеDataGrid s в вашем приложении, хотя (это на самом деле зависит от того, CssResource экземпляр получает ensureInjected() первый: один из оригинального DataGrid.Resources или один из ваших суб-интерфейс): потому что вы используете один и тот же тип возвращаемого значения (DataGrid.Style), имена запутанных классов будут одинаковыми.

Если вы хотите изменить стиль на индивидуальной основе случая, то, кроме того, объявить интерфейс, который расширяет DataGrid.Style и использовать его в качестве возвращаемого типа к вашему dataGridStyle переопределения: потому что затемненный имя класса базируется на как полное имя интерфейса, так и имя метода, ваш под-интерфейс DataGrid.Style будет генерировать разные имена запущенных классов, чем исходный интерфейс DataGrid.Style.

Затем, конечно, GWT.create() ваш под-интерфейс DataGrid.Resources и передать его в качестве аргумента в конструктор DataGrid.

Смотрите также http://code.google.com/p/google-web-toolkit/issues/detail?id=6144

+2

Я был в состоянии получить свое первое предложение работать, но я не мог сделать это с ensureInject упорядоченности. Любой заказ приведет к использованию исходного css. Глядя на DataGrid.java, похоже, что он всегда использует собственный результат GWT.create. Передача его конструктору сработала. '\t MyResources Открытый интерфейс расширяет DataGrid.Resources { \t @Source ({DataGrid.Style.DEFAULT_CSS, "DataGrid.css"}) \t \t DataGrid.Данные стиляGridStyle(); \t} \t статические ресурсы MyResources = GWT.create (MyResources.class); ' – Glenn

+1

Немного об использовании другого стиля в каждом конкретном случае спас меня. Благодаря :) –

9

спасибо Томас.

Просто, чтобы сделать его проще для читателей ...

Создать новый интерфейс

public interface GwtCssDataGridResources extends DataGrid.Resources { 
     @Source({Style.DEFAULT_CSS, "gwtDataGrid.css"}) 
     Style dataGrid(); 
} 

Используйте статическую ссылку

public static final GwtCssDataGridResources gwtCssDataGridResources = GWT.create(GwtCssDataGridResources.class); 

    static { 
     gwtCssDataGridResources.dataGrid().ensureInjected(); 
    } 

Наконец создать новый CSS файл gwtDataGrid.css , Обратите внимание: если вам нужно переопределить стиль, вы должны использовать ! Important для каждого определения.

.dataGridHeader { 
    color: #FF0000 !important; 
} 

.dataGridFirstColumnHeader { 
    -moz-border-radius-topleft: 5px; 
    -webkit-border-top-left-radius: 5px; 
} 

.dataGridLastColumnHeader { 
    -moz-border-radius-topright: 5px; 
    -webkit-border-top-right-radius: 5px; 
} 

Вот это

Смежные вопросы