GEF エディターには、次のものがありますEditPart
。
public class MyLabelEditPart extends AbstractGraphicalEditPart {
@Override
protected IFigure createFigure() {
return new Label();
}
@Override
protected void refreshVisuals() {
MyModel model = (MyModel) getModel();
Label figure = (Label) getFigure();
EditPart parent = getParent();
Font font = new Font(Display.getCurrent(), "sansserif", 11, SWT.BOLD);
figure.setFont(font);
figure.setForegroundColor(ColorConstants.darkGray);
figure.setText(model.getValueString());
parent.refresh();
}
ほとんどのモデルですべて正常に動作しますが、既にエラーに気付いているでしょうが、フォントを破棄することはありません。したがって、10,000 個以上のトークンの大規模なモデルでは、これはorg.eclipse.swt.SWTError: No more handles
. 少なくとも、これがエラーの原因だと思います(希望)。
EditPartの図はSWTウィジェットではなくDraw2Dラベルであるため、フォントを破棄する方法がわかりません。恐ろしいエラーを回避できるようにするにはどうすればよいですか?