JFace - Composite zur Laufzeit ändern

Lkatsch

Grünschnabel
Hallo zusammen,

ich bin neu in der SWT/JFace Welt und habe ein (hoffentlich) triviales Problem. Ich möchte ein container-Composite zur Laufzeit in ein parent-Composite packen. Das funktioniert auch soweit. Einziges Problem: Das container-Composite füllt nur eine kleine Ecke in meinem parent-Composite aus. Erst wenn ich die View vergrößere, wird das container-Composite in der ganzen View angezeigt. Das ist natürlich nicht erstrebenswert :)

Hier der Code:

Code:
public class BaseQuickView extends ViewPart implements ISelectionListener {

  public static final String VIEW_ID   = BaseQuickView.class.getName();

  Composite                  parent    = null;                         // Parent Composite Handle
  Composite                  container = null;                         // Container Composite Handle

  @Override
  public void createPartControl(Composite parent) {
    this.parent = parent;
    container = new Composite(parent, SWT.None);
    container.setLayout(new FillLayout(SWT.VERTICAL));
    getSite().getPage().addSelectionListener(this);
  }

  @Override
  public void setFocus() {
    container.setFocus();
  }

  public void selectionChanged(IWorkbenchPart part, ISelection selection) {

    container.dispose();
    container = new Composite(parent, SWT.None);
    container.setLayout(new FillLayout(SWT.VERTICAL));

    if (selection instanceof IStructuredSelection) {
      IStructuredSelection is = (IStructuredSelection) selection;

      for (Iterator iterator = is.iterator(); iterator.hasNext();) {
        Object selectedObject = iterator.next();
        BaseQuickViewContentPage contentAdapter = (BaseQuickViewContentPage) Platform.getAdapterManager().getAdapter(
            selectedObject, BaseQuickViewContentPage.class);

        contentAdapter.createControl(container);

      }
    }

    parent.layout(true);
    container.pack(true);
    parent.pack(true);

  }
}

Vielen Dank im voraus,
Lkatsch
 
Zurück