Нужны константы CSS всего приложения в GWT - PullRequest
8 голосов
/ 20 августа 2010

Я хотел бы определить некоторые цвета в качестве констант в GWT CssResource и использовать эти константы во всем приложении; но я не знаю, как это сделать.

Я скажу тебе, что я пробовал. Я создал ClientBundle и CssResource следующим образом:

public interface Resources extends ClientBundle {
  public interface MyStyle extends CssResource {
    String JUNGLEGREEN();
    String example();
    ...
  }
  @Source("Resources.css")
  MyStyle css();
}

Я определил некоторые константы в Resources.css:

@def JUNGLEGREEN #1F3D0A;

В Resources.css я использую эти константы примерно так:

.example { color:JUNGLEGREEN; }

Мне неизвестен способ повторного использования этих констант в других файлах CSS и шаблонах UiBinder. Я хотел бы сделать это в каком-нибудь другом файле UiBinder, скажем LoginView.ui.xml:

<ui:with field='resources' type='com.example.Resources' />
<ui:style>
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>

... но, похоже, он не компилируется. Вы знаете, как я могу достичь своей цели?

Ответы [ 3 ]

4 голосов
/ 10 ноября 2010

Вот как мы это делаем:

  • мы помещаем все наши постоянные атрибуты в constant.css файл
@def black #241b15;   /* text color */
@def orange #ff4f00;   /* links */
  • в каждом пользовательском интерфейсе.В XML-файле вы можете ссылаться на эти константы следующим образом:
<ui:style src="../../resources/css/constants.css">
    .myStyle {
        color: orange;
    }
</ui:style>

Надежда, которая помогает.

РЕДАКТИРОВАТЬ:

Чтобы избежать относительного пути в <ui:style> элемент, вы можете сделать следующее:

  • снова определить ваши константы в файле CSS (скажем, constants.css)
@def junglegreen #1f3d0a;
  • создать ClientBundle и CssResource для извлечения определенных констант
public interface MyResources extends ClientBundle {

    public static final MyResources INSTANCE = GWT.create(MyResources.class);

    public interface Constants extends CssResource {

        String junglegreen();
    }

    Constants constants();
}

- используйте аннотацию @eval для доступа к константе

<ui:style>
    @eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen();

    .someClass {
        color: green;
    }
</ui:style>

Единственный способ узнать, какработать с константами без ссылки на сам файл css.

1 голос
/ 06 августа 2012

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

Resources.css (). SureInjected ()

Я добавил ее на своем заводе, но попробовал в паремест и где бы я ни ставил, все работало.

0 голосов
/ 21 августа 2010

Вы должны быть в состоянии использовать

<ui:style>
  @IMPORT url("../../../global.css");
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>
...