@Override public void draw(IBNAView view, ICoordinateMapper cm, GL2 gl, Rectangle clip, IResources r) { if (control == null) { control = createControl(view, cm); } // update bounds final Rectangle newBounds = getBounds(control, view, cm); final Rectangle oldBounds = control.getBounds(); if (!oldBounds.equals(newBounds)) { SWTWidgetUtils.async( control, new Runnable() { @Override public void run() { if (oldBounds.width != newBounds.width || oldBounds.height != newBounds.height) { control.setSize(newBounds.width, newBounds.height); if (control instanceof Composite) { ((Composite) control).layout(true, true); control.pack(true); } } control.setLocation(newBounds.x, newBounds.y); } }); } }
@Override public void dispose() { super.dispose(); control = SWTWidgetUtils.quietlyDispose(control); }