import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class PopupComposite {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(2, true));
final Composite composite1 = new Composite(shell, SWT.BORDER);
composite1.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
final Composite composite2 = new Composite(shell, SWT.BORDER);
composite2.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
Menu menu = new Menu(composite1);
MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
menuItem.setText("Popup menu");
menuItem.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
System.out.println("Menu item is disposed.");
}
});
menuItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Dispsoing ...");
//composite2.setMenu(null);
composite2.dispose();
}
});
composite1.setMenu(menu);
composite2.setMenu(menu);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
// If no more entries in event queue
display.sleep();
}
}
display.dispose();
}
}