GWT CSS String Parser - PullRequest
       20

GWT CSS String Parser

1 голос
/ 09 апреля 2010

Есть ли в 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, так что мне все еще нужно выполнить некоторые операции с String, хотя и наоборот. В идеале у меня было бы 2 конструктора для реализации обеих возможностей с простым механизмом правильного разбора строк / размеров и единиц.

EDIT:

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

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

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

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

В основном я пытаюсь имитировать JQuery Tools Scroller

1 Ответ

3 голосов
/ 09 апреля 2010

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

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

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

...