[컴][웹] GWT 의 setWidget 함수



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 하는 개념으로 생각하면 될 듯 하다.





댓글 없음:

댓글 쓰기