Лучший способ разработать виджеты GWT в библиотеке

Я разрабатываю некоторые виджеты в библиотеку для внутреннего пользования в компании, на которую я работаю.

Я не знаю то, что является рекомендуемым способом разработать виджеты.

Существуют, по крайней мере, эти пути:

  • используйте Widget.setPrimaryStyleName и позвольте пользователю предоставить внешнюю CSS. Мы используем архетипы знатока для создавания приложений, таким образом, мы можем обеспечить стили по умолчанию. Так или иначе мне не нравится он очень.

  • используйте GWT 2.0 CssResourceBundle. Таким образом, мы можем скомпилировать CSS в модуль, и он будет оптимизирован (и это может быть иждивенец браузера также).

  • предоставьте модулю моделирование. Что-то как темы GWT по умолчанию. Но я не знаю, как точно это работает.

Я хочу:

  • сделайте компоненты столь связными, как я могу (не зависеть от внешне включенной CSS)
  • уезжайте открывают дверь для изменения стилей (если я хочу изменить способ, которым некоторый виджет смотрит в конкретном приложении).

Каков Ваш опыт в этом предмете?

Примечание: если Вы ищете категорический ответ, просматривают все ответы и комментарии. Существуют различные идеи и все хорошие. Затем выберите то, что является лучшим для Вас :)

7
задан helios 3 May 2010 в 11:05
поделиться

2 ответа

Я думаю, что лучший способ - предоставить стили в модуле. Таким образом, вы сможете легко изменить стиль или добавить «темы» для элементов управления.

Я делаю аналогичный проект, который размещен на github ( http://github.com/markovuksanovic/gwt-styles ), так что вы можете проверить это. Вы можете загрузить файл jar, включить его в свой проект и указать в своем модуле xml, что вы хотите использовать этот стиль .. sth like

<inherits name='gwt.theme.flick.Flick'/>

Я бы посоветовал вам использовать новый модуль для ваших стилей, чтобы вы могли легко переключаться между стилями ... (просто измените тег наследования).Так, например, если один из ваших виджетов использует класс css «my-widget», у вас будет модуль «style» (или несколько модулей), который будет определять этот класс css (в файле css) - таким образом вы могли бы иметь несколько модулей, реализующих этот класс css, и переключаться между ними будет так же просто, как изменить имя модуля в теге наследования. Таким образом вы получите красиво отделенный код - стили не будут зависеть от технической реализации виджетов. Если у вас есть еще вопросы, не стесняйтесь их задавать.

P.S. Я забыл упомянуть выше - обратите особое внимание на то, как построен модуль стиля (build.xml), это немного сложно. Вы можете найти дополнительную информацию о создании модулей в следующей ссылке http://developerlife.com/tutorials/?p=229

4
ответ дан 7 December 2019 в 12:17
поделиться

Если вы просто пишете новый виджет и хотите, чтобы люди могли настраивать его CSS, то я использовал один шаблон:

public class MyWidget extends Composite {
  public interface MyCss extends CssResource {
    ...
  }

  private static MyCss defaultStyle;
  private static MyCss ensureDefaultStyle() {
    if (defaultStyle == null) {
      defaultStyle = GWT.create(DefaultResourceBundle.class).css();
    }
    return defaultStyle;
  }

  /** If you want to use default style, call this */
  public MyWidget() {
    this(ensureDefaultStyle());
  }

  /** If you want to use your custom style, call this */
  public MyWidget(MyCss css) {
    ...
  }
}

Таким образом, ваша библиотека виджетов может предоставлять интерфейс CSS и реализацию для него по умолчанию. Если ваш пользователь хочет настроить его, он может привязать интерфейс CSS к файлу css по своему выбору в своем собственном пакете ресурсов и вместо этого использовать второй конструктор.

1
ответ дан 7 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: