2010-04-09 117 views
1

gwt是否有內置解析器用於將基於css的字符串轉換爲java構造?GWT CSS字符串解析器

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在構造函數中,但UiObject的setWidth需要一個CSS字符串,所以我仍然必須做一些儘管有其他的方法,但仍然可以使用字符串。理想情況下,我會有2個構造函數來實現這兩種可能性,並使用簡單的機制來正確解析字符串/維度和單位。

編輯:

忘了提,我想分析出這些值的原因:

我試圖寫一個簡單的滾動面板(認爲iphone NAV),因此當用戶點擊一個按鈕,一個新的'項目'從右側滾動。

在後端,這將是:
1)取新的滾動項
2)延長滾動包裝陪新項(這是我需要實際寬度)
2)追加到項目滾動封套
3)動畫滾動包裝(通過向左滑動1個項目的寬度)以將新添加的項目暴露給面板包裝的可見部分

我需要原始寬度的原因是因爲我想將我的滾動面板的寬度的項目添加到它。如果我剛開始的字符串,我不能確切說setWidth(currentWidth + itemWidth)

基本上我試圖模仿JQuery Tools Scroller

回答

3

GWT目前使用長笛解析CSS,但沒有遷移到CSS解析器(討論http://cssparser.sourceforge.net/)。您可以直接使用其中一個解析器。

但是,對於您提到的用例 - 我不認爲您需要任何沉重的東西。 GWT實際上並不分析寬度和高度字符串,只是將它傳遞給瀏覽器DOM,然後瀏覽器對其進行適當的評估。你應該這樣做。

含義,你的API只需要一個字符串。來電者可以通過ems或pxs或百分比。您的API不關心,因爲它只會將其推送到瀏覽器以便理解。

+0

+1這是正確的。 'setWidth()'方法需要一個字符串,可以是任何內容:http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/UIObject.html #setWidth(java.lang.String) – 2010-04-09 14:39:06

+0

檢查我的編輯,我需要更好地解釋爲什麼這對我是必要的 – brad 2010-04-09 15:17:00