package org.eclipse.dltk.internal.debug.ui.interpreters; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.events.ExpansionAdapter; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.widgets.ExpandableComposite; /** * @since 2.0 */ public class ExpandableBlock extends ExpandableComposite { private final Composite content; public ExpandableBlock(final Composite parent, int style) { super(parent, SWT.NONE, ExpandableComposite.TWISTIE | ExpandableComposite.CLIENT_INDENT | style); content = new Composite(this, SWT.NONE); content.setLayout(new GridLayout(2, false)); setClient(content); addExpansionListener(new ExpansionAdapter() { @Override public void expansionStateChanged(ExpansionEvent e) { parent.layout(); Shell shell = parent.getShell(); Point size = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT); Point size2 = shell.getSize(); if (size.y > size2.y) { shell.setSize(size2.x, size.y); } } }); } public Composite getContent() { return content; } }