2014-04-23 5 views
1

내 개발 요구 사항 때문에 내부에 UiBinders가있는 GWT 셀 목록을 만들어야합니다. 아무도 나에게 그것을하는 방법의 예를 줄 수 있습니까?GWT 셀 목록 Ubinder

나는 gwt의 쇼케이스를보고 있는데 어떤 경우도 동등하지 않습니다.

몹시 많이!

당신은 공식 문서에 살펴 보셔야합니다
+0

[Working with GWT Cell Widgets] (http://www.apptio.com/blog/working-gwt-cell-widgets)을보십시오. – Braj

+0

Braj에게 물어봐 줘서 고마워. 나는 이것을 읽었지만 몇 가지 의구심이있다. 1) UiBinder 대신 UiRenderer를 사용합니다. oni 이벤트 처리기를 사용하여 그림, 일부 문자열 및 3 개의 단추가있는 UiBinder가 필요합니다. 내가 부엉이 우이 렌더러를 얻을 수 있을까? 나는 인터넷에서 많은 것을 읽었지 만 나는 명확한 생각을 얻을 수 없다. 2) 사용 예제에서 CellListExample 클래스에는 CellList를 만드는 코드가 표시되지만 의심 스럽습니다. 이 예제를 사용하려면 어떻게해야합니까? UiBinder로 목록을 작성하여 셀 목록에 표시하는 방법은 무엇입니까? 감사합니다. –

답변

3

: GWT Project Ui Cell widgets

당신이, 당신이 ui.xml 템플릿에서 DOM을 생성하는 어떤 것으로 UiBinder로 생각해야하고, 당신이 사용하는 경우 UiRenderer 당신이 UiRenderer 당신이 UiBinder를 사용하는 사용 DOM 구조를 직접 "GWT 일반 내용 (예 : <g:Label />)"대신 html로 설명합니다.

관련 개념이 있습니다.

1) 예, 당신이 그것을 할,하지만 HTML과 CSS를 사용 할 수 있습니다 귀하의 질문에 대해

.

public class YourTypeCell extends AbstractCell<T> { 
    static interface Renderer extends UiRenderer { 
    void render(SafeHtmlBuilder sb, String id, String name, String img); 
    void onBrowserEvent(CommentCell o, NativeEvent e, Element p, T value); 
    } 

    private final Renderer renderer; 

    public YourTypeCell(...) { 
    super(BrowserEvents.CLICK, BrowserEvents.MOUSEOVER); 
    .... 
    renderer = GWT.create(Renderer.class); 
    } 

    @Override 
    public void render(Context context, final T item, final SafeHtmlBuilder sb) { 
    String id = ...; 
    String img = ...; 
    String name = ...; 
    renderer.render(sb, id, name, img); 
    } 

    @Override 
    public void onBrowserEvent(Context context, Element parent, 
     T value, NativeEvent event, ValueUpdater<T> valueUpdater) { 
    renderer.onBrowserEvent(this, event, parent, value); 
    } 

    @UiHandler({"field1"}) 
    void onMouseOver(MouseOverEvent event, Element parent, T value) { 
    ... 
    } 

    @UiHandler({"field2"}) 
    void onReplyComment(ClickEvent event, Element parent, T value) { 
    ... 
    } 
} 

는 또한 ui.xml 파일과 같은

: 다음 셀리스트의 예를 소개

<!DOCTYPE ui:UiBinder SYSTEM 'http://dl.google.com/gwt/DTD/xhtml.ent'> 
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' > 
    <ui:style> 
    .clear{ 
     clear:both; 
    } 
    .cssOne { 
     .... 
    } 
    .cssTwo { 
     .... 
    } 
    </ui:style> 

    <ui:with field="id" type="java.lang.String"/> 
    <ui:with field="name" type="java.lang.String"/> 
    <ui:with field="img" type="java.lang.String"/> 

    <div ui:field='field1' class="{style.cssOne}"> 
    <div ui:field='field2' class="{style.cssTwo}"> 
     <ui:text from='{name}'/> 
    </div> 
    <p><ui:safehtml from='{img}'/></p> 
    </div> 

</ui:UiBinder> 

당신이 그것을 찾을 수 있습니다 처리기 꽤 쉽게 부착의 방법은, 나는 당신에게 예를 보여 드리겠습니다 CellList의 생성자 이전 URL과 자바 독에 http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/cellview/client/CellList.html

당신은 두 클래스를 링크 할 수 있습니다 (CellList 및 사용자 정의 셀) :

CellList<T> cellList = new CellList<T>(new YourTypeCell(...)); 
+0

감사합니다 Apanizo 당신의 대답은 나를 위해 너무 유용하고 내가 원하는 것을 이루었습니다. UiBinders로 작업하면 예쁜 사용자 인터페이스를 만들 수있는 강력한 방법을 제공합니다. –

+0

안녕하세요! 나는 uibinder와 다른 것을하고 싶다. 이전 질문과 관련되어 있기 때문에 여기에 게시하고 다른 사람들에게 유용 할 수 있습니다. 클릭 이벤트를 처리하고 싶었지만 해결되었습니다. 사용자가 field2를 클릭하면 ""텍스트를 변경해야합니다. 나는 렌더러 UiBinder를 다시하는 것처럼해야만 할 것 같아요. 어떻게 할 수 있는지 알고 계십니까? 덕분에 조언. –

+1

GQuery와 관련이 있습니다. 텍스트가 필요하지만 내 메모리를 기반으로 Cell @UiField DivElement field2에 var 만들기; , 그리고 나서 field2의 ClickHandler 안에서 GQuery라면 $ (field2) .html ("pepito");가 작동해야합니다. 그렇지 않으면 알려주세요. – apanizo