package pip1034; import org.eclipse.jface.dialogs.PopupDialog; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.ElementListSelectionDialog; public class BugPopupDialog extends PopupDialog { public BugPopupDialog(Shell parent) { super(parent, SWT.POP_UP|SWT.RESIZE, false, false, false, false, null, null); } protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); Button buttonBrowse = new Button(composite, SWT.PUSH); buttonBrowse.setText("Browse..."); buttonBrowse.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { // No problem opening other dialog types ElementListSelectionDialog elsd = new ElementListSelectionDialog(getShell(), new LabelProvider()); elsd.open(); // The problem is the 'getShell()'. Using 'new Shell()' fixes the problem. FileDialog fsd = new FileDialog(getShell(), SWT.SINGLE); String fname = fsd.open(); System.out.println(fname); } }); return composite; } }