Как использовать CellTable.Style с GWT 2.7.0 без UiBinder?

Я присоединился к проекту приложения GWT несколько недель назад. Кодовая база была запущена еще в 2009 году. Я пытаюсь заменить FlexTable на CellTable, чтобы использовать преимущества сортируемых столбцов. Текущая версия GWT в проекте - 2.7.0, но, просматривая код, кажется, что все еще используются некоторые функции, которые вышли из моды. Я новичок в GWT, я могу ошибаться.

Пока что все функционально хорошо. Тем не менее, GWT, похоже, отвергает мои попытки обновить CSS. Я использовал пример GWT dynatablerf в качестве модели для добавления CSS в CellTable. TimeSlotWidget использует CellTable.Style:

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

И затем применяет его к CellTable следующим образом:

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

Я пытался использовать этот подход в моем коде. Я даже опустил CellTable.Style.DEFAULT_CSS из списка значений и создал мою собственную таблицу стилей CSS, которая началась как копия GWT CellTable.css

Я заметил, что в примере GWT TimeSlotListWidget есть файл ui.xml с UIBinder. Мой проект в настоящее время не использует UIBinder.

Когда я запускаю свой код, появляется <style> блок вставлен в страницу, которая кажется стандартной GWT CellTable.css. Затем сразу после этого, другой <style> Блок вставлен с моим CSS. И мой CSS не переопределяет стандартный CSS GWT.

Как я могу сохранить GWT CellTable.css от вставки? Почему это вставляется?

1 ответ

Решение

Проблема в том, что в вашем коде вы используете повторно CellTable.Styleи два разных ClientBundles использовали один и тот же тип, но каждый связывал свой собственный CSS с ним.

Вместо этого продлите CellTable.Style интерфейс и использовать это в вашем комплекте:

interface MyCellTableStyle extends CellTable.Style {}
interface TableResources extends CellTable.Resources {
  @Override
  @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
  MyCellTableStyle cellTableStyle();
}
Другие вопросы по тегам