GWT 를 사용하다 보면 많이 사용하는 함수중에 하나가
- setWidget
- initWidget
일 것이다. 이중에 setWidget 에 대해 알아보자. 이름 때문에 이녀석의 역할이 정말 애매해 보인다.
setWidget
이름을 가지고 굳이 풀이를 해본다면, Panel 은 Widget 을 child 로 갖는데, setWidget 은 Panel 안의 Widget 을 set 해주는 역할을 한다고 보면 될 것이다.보통, 이 setWidget 은 SimplePanel 에서 볼 수 있다. 이 SimplePanel 에서 setWidget 이 어떤 역할을 하는가 하면 SimplePanel 에 child element 를 추가해 주는 역할을 한다. 예를 들면,
simplePanel.setWidget(childWidget);
이 있으면 simplePanel 안에 childWidget 을 추가하는 것이다. container 가 하나로 명확한 simplePanel 에 있는 것이다. 그래서 ComplexPanel 등에서는 찾아볼 수 없다. (대신에 add() 를 사용한다고 보면 될 것이다.)
아래 코드를 보면 좀 더 명확히 알 수 있다.
DOM.appendChild(getContainerElement(), widget.getElement());를 하고 있는 것을 확인할 수 있다.
public void setWidget(Widget w) { // Validate if (w == widget) { return; } // Detach new child. if (w != null) { w.removeFromParent(); } // Remove old child. if (widget != null) { remove(widget); } // Logical attach. widget = w; if (w != null) { // Physical attach. DOM.appendChild(getContainerElement(), widget.getElement()); adopt(w); } }
그냥 편하게 panel 에 add 하는 개념으로 생각하면 될 듯 하다.
댓글 없음:
댓글 쓰기