Programming/Eclipse RCP

SWT Subclassing

Lawmin 2011. 5. 9. 17:44
몇가지 이유로 SWT 에서 Subclassing 이 금지된다고 한다. (has-a 관계로 이용하도록 권장하는 듯 하다)
http://www.eclipse.org/swt/faq.php#subclassing

RCP 개발중 Main ToolBar(CoolBar)에 콤보박스를 추가할 일이 있었는데,
setWidth 나 어떠한 방법을 이용해도 ToolBar에서 크기가 고정되는 것이었다.

호출 구조를 따라가다 보니 Combo 사이즈를 미리 정해주는 법 밖에 방법이 없었다.

아래와 같이 
computeSize 및 checkSubclass 를 재정의 해 주었다.

protected Control createControl(Composite parent) {
combo = new Combo(parent, SWT.READ_ONLY) {
public Point computeSize(int wHint, int hHint, boolean changed) {
return new Point(150, hHint);
}
protected void checkSubclass() {}
};
return combo;
}