Анализатор строк CSS GWT

Есть ли в gwt встроенный синтаксический анализатор для преобразования строк на основе css в конструкции java?

IE Мне интересно написать свой собственный виджет, который принимает, например, высоту/ширину:

public class MyWidget extends Composite{

  private double width;
  private Style.Unit widthUnit;
  private double height;
  private Style.Unit heightUnit;

  /**
  * @width - width of my widget in CSS dimensions (ie. "10px", "1em" ...)
  * @height - height of my widget in CSS dimensions (ie. "10px", "1em" ...)
  */
  public MyWidget(String width, String height){
  // Parse out strings and set dimensions / units
  }
}

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

Кроме того, я, конечно, думал о том, чтобы просто принять double width, Style.Unit widthUnit в конструкторе, но setWidth UiObject принимает строку CSS, поэтому мне все еще нужно выполнить некоторую обработку строк, хотя и наоборот. В идеале у меня было бы 2 конструктора для достижения обеих возможностей с помощью простого механизма для правильного анализа строк/размеров и единиц.

ИЗМЕНИТЬ:

Забыл упомянуть ПРИЧИНУ, по которой я хотел бы проанализировать эти значения:

Я пытаюсь написать простую панель прокрутки (например, iphone nav), поэтому, когда пользователь нажимает кнопку, справа прокручивается новый «элемент».

На серверной части это будет:
1) Получить новый элемент прокрутки
2) Расширить оболочку прокрутки, чтобы сопровождать новый элемент (здесь мне нужна фактическая ширина)
2) Добавить к оболочке прокрутки элемента
3) Анимировать оболочку прокрутки (сдвинув влево ширину 1 элемента), чтобы открыть новый добавленный элемент в видимой части оболочки панели.

Причина, по которой мне нужна исходная ширина, заключается в том, что я хотел бы расширить панель прокрутки на ширину добавленного к ней элемента. Если я просто получаю строки, я не могу точно сказать setWidth( currentWidth + itemWidth)

По сути, я пытаюсь имитировать скроллер JQuery Tools


person brad    schedule 09.04.2010    source источник


Ответы (1)


В настоящее время GWT использует Flute для анализа CSS, однако обсуждается переход на CSS Parser (http://cssparser.sourceforge.net/). Вы можете напрямую использовать один из этих парсеров.

НО, для случая использования, который вы упомянули, я не думаю, что вам нужно что-то настолько тяжелое. GWT на самом деле не анализирует строки ширины и высоты, он просто передает их в DOM браузера, а затем браузер оценивает их соответствующим образом. Вы должны сделать то же самое.

Это означает, что ваш API просто принимает строку. Вызывающий может передать ems или pxs или проценты. Ваш API не касается, потому что он просто подтолкнет его к браузеру, чтобы он понял.

person Sripathi Krishnan    schedule 09.04.2010
comment
+1 это правильно. setWidth() методы принимают строку, которая может быть любой: google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/ - person Jason Hall; 09.04.2010
comment
проверьте мое редактирование, мне нужно было лучше объяснить, почему это необходимо для меня - person brad; 09.04.2010