Org Eclipse Swt Events Java by API

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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 MainClass {
  public static void main(String[] a) {
    Display d = new Display();
    Shell s = new Shell(d);
    s.setText("A Shell Menu Example");
    Menu m = new Menu(s, SWT.BAR);
    MenuItem file = new MenuItem(m, SWT.CASCADE);
    file.setText("File");
    Menu filemenu = new Menu(s, SWT.DROP_DOWN);
    file.setMenu(filemenu);
    MenuItem openItem = new MenuItem(filemenu, SWT.PUSH);
    openItem.setText("&Open");
    openItem.setAccelerator(SWT.CTRL + 'O');
    openItem.addSelectionListener(new Open());
    MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH);
    exitItem.setText("Exit");
    s.setMenuBar(m);
    s.open();
    while (!s.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}
class Open implements SelectionListener {
  public void widgetSelected(SelectionEvent event) {
    System.out.println(event);
  }
  public void widgetDefaultSelected(SelectionEvent event) {
  }
}