2011-01-25 2 views
1

Первый день с GWT здесь ...GWT главной темой CSS

У меня есть PopupPanel, и я хочу, чтобы переопределить некоторые стили из темы по умолчанию. Eclipse дал мне .css в корне doc, и я поместил стили, которые я хочу переопределить там. Проверка из браузера во время выполнения показывает, что мои стили переопределены темой GWT.

Сложно поверить, что это настройка по умолчанию для нового проекта - приложение .css, загружаемое после акции css?

Я попытался загрузить свой css в свой модуль XML (используя тег stylesheet), но это не имеет никакого эффекта, оно вообще не загружается. Документы GWT говорят, что это устарело, поэтому я подозреваю, что он просто удален. Несмотря на это, я не хочу использовать устаревший интерфейс.

Чтобы быть ясным, это проблема заказа. Я проверил, что мой CSS загружен правильно, проверив DOM. Я вижу, что мои стили применяются к рассматриваемому элементу, и я вижу, что они переопределены темой GWT css (dark.css в этом случае). При добавлении флага !important мои стили применяются, но это, очевидно, не правильное решение.

Всплывающее окно создается в обработчике привязки якоря, который определен в виджетах пользовательского интерфейса. Само всплывающее окно не определено в шаблоне, я просто создаю его экземпляр и вызываю show(). Я не уверен, что это важно.

Может ли кто-нибудь описать мне, как это должно быть выполнено? Если это сложнее, чем «положить строку XXX в файл YYY», я серьезно потеряю веру в GWT.

Спасибо.

ответ

2

GWT просто генерирует HTML-код, к которому применяется CSS. Это выглядит сложным, но в финальном выпуске нет никакой магии. Просто HTML, CSS и некоторые JS.

Если ваш PopupPanel подбирает неправильный стиль, это потому, что браузер не видит ваш стиль, или стиль в стандартной теме (который является стандартным.css) имеет приоритет.

Если у вас есть редактор DOM:

  1. Осмотреть элемент и посмотреть, какие стили он имеет против него.
  2. Проверьте, что ваша таблица стилей включена
  3. Проверьте, чтобы ваши правила стиля применялись к элементу.

Скорее всего, это простая ошибка CSS, и GWT - это красная селедка. Однако, если вы не видите эту ошибку, вы можете подумать:

  1. Дайте элементу идентификатор или собственный дополнительный стиль и используйте правило, чтобы переопределить поведение по умолчанию.
  2. Полностью переопределить .gwt-popupPanel со стилем, который вы хотите применить везде
  3. Подкласс PopupPanel. Назовите супер конструктор, но затем вычеркните стиль gwt-popupPanel и замените его своим собственным стилем. Или добавьте gwt-popupPanel и добавьте дополнительный собственный стиль.
  4. Скопируйте всю тему по умолчанию и переименуйте ее как что-то еще и используйте ее в своем проекте.

Самый лучший вариант, вероятно, самый простой, который будет 1)

+0

быть ясно, что это проблема порядка загрузки. Я уже подтвердил, что мой css загружается. проверяя DOM, я вижу, что мой css применяется к рассматриваемому элементу. Я также вижу, что мой css переопределен темой GWT css (dark.css в этом случае). Я могу применить свой стиль, если я добавлю важный флаг в мои стили, но это, очевидно, не правильное решение. –

+0

и да, я бы хотел сделать 1-2, но если это проблема заказа, это невозможно правильно? если 3 является опцией, можете ли вы предоставить несколько подробностей? 1 или 2 было бы предпочтительнее. –

+0

Если вы посмотрите на исходный код PopupPanel, вы увидите, что во время строительства он вызывает «setStyleName (DEFAULT_STYLENAME)»; где DEFAULT_STYLENAME - «gwt-PopupPanel». Поэтому, если вы подклассифицируете и вызываете super(), перед удалением стиля и настройкой его, он больше не будет применяться к этому классу. – locka

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