Skip to content
kumattau edited this page Mar 28, 2016 · 4 revisions

SWT/JFace

SWT Graphic and AWT Graphic2D Mappings

ILazyTreeContentProvider

updateElementからupdateChildCount(child, -1)を呼び出すと、 childが表示されたタイミングでその子要素まで作成される。 childの子要素の作成を子要素が表示されるまで遅延させる場合、 代わりに viewer.setHasChildren(child, <true or false>)を 呼び出して、展開可否のみ更新しておく。

@Override
public void updateChildCount(Object element, int currentChildCount) {

    int length = 0;
    if (element instanceof IntermediateNode) {
        IntermediateNode node = (IntermediateNode) element;
        length =  node.children.length;
    }
    if(element == elements)
        length = elements.length;
    viewer.setChildCount(element, length);


}

@Override
public void updateElement(Object parent, int index) {

    Object element;
    if (parent instanceof IntermediateNode)
        element = ((IntermediateNode) parent).children[index];

    else
        element =  elements[index];
    viewer.replace(parent, index, element);
    updateChildCount(element, -1);
}

PropertySheet

プロパティを表示するGUI

IPropertySource

プロパティシートに紐付けるデータ

SWT redraw / update / layout

  • redraw …​ 次回再描画するようにマークする

  • update …​ 再描画する (完了するまでブロック)

  • layout …​ 子要素のサイズや位置を調整する (結果、再描画されるかもしれない)

再描画時にPaintListener#paintControl(PaintEvent e)が呼び出される。

Note
Note: Layout is different from painting. If a child is moved or resized such that an area in the parent is exposed, then the parent will paint. If no child is affected, the parent will not paint.

ISelectionProvider

選択状態を公開するインタフェース。リスナをきちんと実装しないと通知されないので注意。

  • setSelection

  • getSelection

  • addSelectionChangeListener

  • removeSelecitonChangeListener

IAdaptable

getAdaptor で問い合わせに必要なオブジェクトを返却する。

Clone this wiki locally