SWT Java Tutorial

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Adapter;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class CTabFolderCTabFolder2Adapter {
public static void main (String [] args) {
  Display display = new Display ();
  final Shell shell = new Shell (display);
  shell.setLayout(new GridLayout());
  final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
  folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
  
  folder.setMinimizeVisible(true);
  folder.setMaximizeVisible(true);
  
  for (int i = 0; i < 4; i++) {
    CTabItem item = new CTabItem(folder, SWT.CLOSE);
    item.setText("Item "+i);
    Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
    text.setText("Text for item "+i);
    item.setControl(text);
  }
  folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
    public void minimize(CTabFolderEvent event) {
      System.out.println("min");
      folder.setMinimized(true);
      shell.layout(true);
    }
    public void maximize(CTabFolderEvent event) {
      System.out.println("max");
      folder.setMaximized(true);
      folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
      shell.layout(true);
    }
    public void restore(CTabFolderEvent event) {
      System.out.println("restore");
      folder.setMinimized(false);
      folder.setMaximized(false);
      folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
      shell.layout(true);
    }
  });
  
  
  shell.setSize(300, 300);
  shell.open ();
  while (!shell.isDisposed ()) {
    if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
}