Java/SWT JFace Eclipse/Custom Control

Материал из Java эксперт
Перейти к: навигация, поиск

Demonstrates ControlEditor

   <source lang="java">

//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.ru) //Robert Harris (rbrt_harris@yahoo.ru) import org.eclipse.swt.SWT; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; /**

* This class demonstrates ControlEditor
*/

public class ControlEditorTestTwo {

 private Color color;
 /**
  * Runs the application
  */
 public void run() {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setText("Control Editor Two");
   createContents(shell);
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   if (color != null) color.dispose();
   display.dispose();
 }
 /**
  * Creates the main window"s contents
  * 
  * @param shell the main window
  */
 private void createContents(final Shell shell) {
   color = new Color(shell.getDisplay(), 255, 0, 0);
   // Create a composite that will be the parent of the editor
   final Composite composite = new Composite(shell, SWT.NONE);
   composite.setBackground(color);
   composite.setBounds(0, 0, 300, 100);
   // Create the editor
   ControlEditor editor = new ControlEditor(composite);
   // Create the control associated with the editor
   Button button = new Button(composite, SWT.PUSH);
   button.setText("Change Color...");
   button.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       ColorDialog dialog = new ColorDialog(shell);
       if (color != null) dialog.setRGB(color.getRGB());
       RGB rgb = dialog.open();
       if (rgb != null) {
         if (color != null) color.dispose();
         color = new Color(shell.getDisplay(), rgb);
         composite.setBackground(color);
       }
     }
   });
   // Place the editor along the bottom of the parent composite
   editor.grabHorizontal = true;
   editor.verticalAlignment = SWT.BOTTOM;
   Point size = button.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   editor.minimumHeight = size.y;
   editor.setEditor(button);
 }
 /**
  * The application entry point
  * 
  * @param args the command line arguments
  */
 public static void main(String[] args) {
   new ControlEditorTestTwo().run();
 }

}


      </source>
   
  
 
  



Demonstrates ControlEditor 2

   <source lang="java">

//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.ru) //Robert Harris (rbrt_harris@yahoo.ru) import java.util.*; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; /**

* This class demonstrates ControlEditor
*/

public class ControlEditorTest {

 // Create a map to hold all the supported colors
 private static final Map COLORS = new HashMap();
 static {
   COLORS.put("red", new RGB(255, 0, 0));
   COLORS.put("green", new RGB(0, 255, 0));
   COLORS.put("blue", new RGB(0, 0, 255));
   COLORS.put("yellow", new RGB(255, 255, 0));
   COLORS.put("black", new RGB(0, 0, 0));
   COLORS.put("white", new RGB(255, 255, 255));
 }
 private Color color;
 /**
  * Runs the application
  */
 public void run() {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setText("Control Editor");
   createContents(shell);
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   if (color != null) color.dispose();
   display.dispose();
 }
 /**
  * Creates the main window"s contents
  * 
  * @param shell the main window
  */
 private void createContents(final Shell shell) {
   color = new Color(shell.getDisplay(), 255, 0, 0);
   // Create a composite that will be the parent of the editor
   final Composite composite = new Composite(shell, SWT.NONE);
   composite.setBackground(color);
   composite.setBounds(0, 0, 300, 100);
   // Create the editor
   ControlEditor editor = new ControlEditor(composite);
   // Create the control associated with the editor
   final Text text = new Text(composite, SWT.BORDER);
   text.addModifyListener(new ModifyListener() {
     public void modifyText(ModifyEvent event) {
       RGB rgb = (RGB) COLORS.get(text.getText());
       if (rgb != null) {
         if (color != null) color.dispose();
         color = new Color(shell.getDisplay(), rgb);
         composite.setBackground(color);
       }
     }
   });
   // Place the editor in the top middle of the parent composite
   editor.horizontalAlignment = SWT.CENTER;
   editor.verticalAlignment = SWT.TOP;
   Point size = text.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   editor.minimumWidth = size.x;
   editor.minimumHeight = size.y;
   editor.setEditor(text);
 }
 /**
  * The application entry point
  * 
  * @param args the command line arguments
  */
 public static void main(String[] args) {
   new ControlEditorTest().run();
 }

}


      </source>
   
  
 
  



How to create CustomControl in SWT

   <source lang="java">

/*******************************************************************************

* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.CLabel; 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.custom.SashForm; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.ArmEvent; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.HelpEvent; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.MenuAdapter; import org.eclipse.swt.events.MenuEvent; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.ShellEvent; import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TreeEvent; import org.eclipse.swt.events.TypedEvent; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.printing.PrintDialog; import org.eclipse.swt.printing.PrinterData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Caret; import org.eclipse.swt.widgets.ColorDialog; import org.eclipse.swt.widgets.rubo; import org.eclipse.swt.widgets.ruposite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.CoolBar; import org.eclipse.swt.widgets.CoolItem; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.FontDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Sash; import org.eclipse.swt.widgets.Scale; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Slider; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.Widget; public class CustomControlExample extends ControlExample {

 /**
  * Creates an instance of a CustomControlExample embedded inside the
  * supplied parent Composite.
  * 
  * @param parent
  *            the container of the example
  */
 public CustomControlExample(Composite parent) {
   super(parent);
 }
 /**
  * Answers the set of example Tabs
  */
 Tab[] createTabs() {
   return new Tab[] { new CComboTab(this), new CLabelTab(this),
       new CTabFolderTab(this), new SashFormTab(this),
       new StyledTextTab(this), };
 }
 /**
  * Invokes as a standalone program.
  */
 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   CustomControlExample instance = new CustomControlExample(shell);
   shell.setText(getResourceString("custom.window.title"));
   setShellSize(display, shell);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   instance.dispose();
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ControlExample {

 private ShellTab shellTab;
 private TabFolder tabFolder;
 Image images[];
 static final int ciClosedFolder = 0, ciOpenFolder = 1, ciTarget = 2;
 static final String[] imageLocations = { "closedFolder.gif",
     "openFolder.gif", "target.gif" };
 boolean startup = true;
 /**
  * Creates an instance of a ControlExample embedded inside the supplied
  * parent Composite.
  * 
  * @param parent
  *            the container of the example
  */
 public ControlExample(Composite parent) {
   initResources();
   tabFolder = new TabFolder(parent, SWT.NONE);
   Tab[] tabs = createTabs();
   for (int i = 0; i < tabs.length; i++) {
     TabItem item = new TabItem(tabFolder, SWT.NONE);
     item.setText(tabs[i].getTabText());
     item.setControl(tabs[i].createTabFolderPage(tabFolder));
     item.setData(tabs[i]);
   }
   startup = false;
 }
 /**
  * Answers the set of example Tabs
  */
 Tab[] createTabs() {
   return new Tab[] { new ButtonTab(this), new CanvasTab(this),
       new ComboTab(this), new CoolBarTab(this), new DialogTab(this),
       new GroupTab(this), new LabelTab(this), new LinkTab(this),
       new ListTab(this), new MenuTab(this), new ProgressBarTab(this),
       new SashTab(this), shellTab = new ShellTab(this),
       new SliderTab(this), new SpinnerTab(this),
       new TabFolderTab(this), new TableTab(this), new TextTab(this),
       new ToolBarTab(this), new TreeTab(this), };
 }
 /**
  * Disposes of all resources associated with a particular instance of the
  * ControlExample.
  */
 public void dispose() {
   /*
    * Destroy any shells that may have been created by the Shells tab. When
    * a shell is disposed, all child shells are also disposed. Therefore it
    * is necessary to check for disposed shells in the shells list to avoid
    * disposing a shell twice.
    */
   if (shellTab != null)
     shellTab.closeAllShells();
   shellTab = null;
   tabFolder = null;
   freeResources();
 }
 /**
  * Frees the resources
  */
 void freeResources() {
   if (images != null) {
     for (int i = 0; i < images.length; ++i) {
       final Image image = images[i];
       if (image != null)
         image.dispose();
     }
     images = null;
   }
 }
 /**
  * Gets a string from the resource bundle. We don"t want to crash because of
  * a missing String. Returns the key if not found.
  */
 static String getResourceString(String key) {
     return key;
 }
 /**
  * Gets a string from the resource bundle and binds it with the given
  * arguments. If the key is not found, return the key.
  */
 static String getResourceString(String key, Object[] args) {
   try {
     return MessageFormat.format(getResourceString(key), args);
   } catch (MissingResourceException e) {
     return key;
   } catch (NullPointerException e) {
     return "!" + key + "!";
   }
 }
 /**
  * Loads the resources
  */
 void initResources() {
   final Class clazz = ControlExample.class;
     try {
       if (images == null) {
         images = new Image[imageLocations.length];
         for (int i = 0; i < imageLocations.length; ++i) {
           InputStream sourceStream = clazz
               .getResourceAsStream(imageLocations[i]);
           ImageData source = new ImageData(sourceStream);
           ImageData mask = source.getTransparencyMask();
           images[i] = new Image(null, source, mask);
           try {
             sourceStream.close();
           } catch (IOException e) {
             e.printStackTrace();
           }
         }
       }
       return;
     } catch (Throwable t) {
     }
   String error = "Unable to load resources";
   freeResources();
   throw new RuntimeException(error);
 }
 /**
  * Invokes as a standalone program.
  */
 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   ControlExample instance = new ControlExample(shell);
   shell.setText(getResourceString("window.title"));
   setShellSize(display, shell);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   instance.dispose();
 }
 /**
  * Grabs input focus.
  */
 public void setFocus() {
   tabFolder.setFocus();
 }
 /**
  * Sets the size of the shell to it"s "packed" size, unless that makes it
  * bigger than the display, in which case set it to 9/10 of display size.
  */
 static void setShellSize(Display display, Shell shell) {
   Rectangle bounds = display.getBounds();
   Point size = shell.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   if (size.x > bounds.width)
     size.x = bounds.width * 9 / 10;
   if (size.y > bounds.height)
     size.y = bounds.height * 9 / 10;
   shell.setSize(size);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ShellTab extends Tab {

 /* Style widgets added to the "Style" groups, and "Other" group */
 Button noParentButton, parentButton;
 Button noTrimButton, closeButton, titleButton, minButton, maxButton,
     borderButton, resizeButton, onTopButton, toolButton;
 Button createButton, closeAllButton;
 Button modelessButton, primaryModalButton, applicationModalButton,
     systemModalButton;
 Button imageButton;
 Group parentStyleGroup, modalStyleGroup;
 /* Variables used to track the open shells */
 int shellCount = 0;
 Shell[] shells = new Shell[4];
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ShellTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Close all the example shells.
  */
 void closeAllShells() {
   for (int i = 0; i < shellCount; i++) {
     if (shells[i] != null & !shells[i].isDisposed()) {
       shells[i].dispose();
     }
   }
   shellCount = 0;
 }
 /**
  * Handle the Create button selection event.
  * 
  * @param event
  *            org.eclipse.swt.events.SelectionEvent
  */
 public void createButtonSelected(SelectionEvent event) {
   /*
    * Remember the example shells so they can be disposed by the user.
    */
   if (shellCount >= shells.length) {
     Shell[] newShells = new Shell[shells.length + 4];
     System.arraycopy(shells, 0, newShells, 0, shells.length);
     shells = newShells;
   }
   /* Compute the shell style */
   int style = SWT.NONE;
   if (noTrimButton.getSelection())
     style |= SWT.NO_TRIM;
   if (closeButton.getSelection())
     style |= SWT.CLOSE;
   if (titleButton.getSelection())
     style |= SWT.TITLE;
   if (minButton.getSelection())
     style |= SWT.MIN;
   if (maxButton.getSelection())
     style |= SWT.MAX;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (resizeButton.getSelection())
     style |= SWT.RESIZE;
   if (onTopButton.getSelection())
     style |= SWT.ON_TOP;
   if (toolButton.getSelection())
     style |= SWT.TOOL;
   if (modelessButton.getSelection())
     style |= SWT.MODELESS;
   if (primaryModalButton.getSelection())
     style |= SWT.PRIMARY_MODAL;
   if (applicationModalButton.getSelection())
     style |= SWT.APPLICATION_MODAL;
   if (systemModalButton.getSelection())
     style |= SWT.SYSTEM_MODAL;
   /* Create the shell with or without a parent */
   if (noParentButton.getSelection()) {
     shells[shellCount] = new Shell(style);
   } else {
     Shell shell = tabFolderPage.getShell();
     shells[shellCount] = new Shell(shell, style);
   }
   final Shell currentShell = shells[shellCount];
   Button button = new Button(currentShell, SWT.PUSH);
   button.setBounds(20, 20, 120, 30);
   Button closeButton = new Button(currentShell, SWT.PUSH);
   closeButton.setBounds(160, 20, 120, 30);
   closeButton.setText(ControlExample.getResourceString("Close"));
   closeButton.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       currentShell.dispose();
     }
   });
   /* Set the size, title, and image, and open the shell */
   currentShell.setSize(300, 100);
   currentShell.setText(ControlExample.getResourceString("Title")
       + shellCount);
   if (imageButton.getSelection())
     currentShell.setImage(instance.images[ControlExample.ciTarget]);
   hookListeners(currentShell);
   currentShell.open();
   shellCount++;
 }
 /**
  * Creates the "Control" group.
  */
 void createControlGroup() {
   /*
    * Create the "Control" group. This is the group on the right half of
    * each example tab. It consists of the style group, the "other" group
    * and the size group.
    */
   controlGroup = new Group(tabFolderPage, SWT.NONE);
   controlGroup.setLayout(new GridLayout(2, true));
   controlGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   controlGroup.setText(ControlExample.getResourceString("Parameters"));
   /* Create a group for the decoration style controls */
   styleGroup = new Group(controlGroup, SWT.NONE);
   styleGroup.setLayout(new GridLayout());
   styleGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false,
       1, 3));
   styleGroup.setText(ControlExample
       .getResourceString("Decoration_Styles"));
   /* Create a group for the modal style controls */
   modalStyleGroup = new Group(controlGroup, SWT.NONE);
   modalStyleGroup.setLayout(new GridLayout());
   modalStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   modalStyleGroup.setText(ControlExample
       .getResourceString("Modal_Styles"));
   /* Create a group for the "other" controls */
   otherGroup = new Group(controlGroup, SWT.NONE);
   otherGroup.setLayout(new GridLayout());
   otherGroup
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
   otherGroup.setText(ControlExample.getResourceString("Other"));
   /* Create a group for the parent style controls */
   parentStyleGroup = new Group(controlGroup, SWT.NONE);
   parentStyleGroup.setLayout(new GridLayout());
   GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
   parentStyleGroup.setLayoutData(gridData);
   parentStyleGroup.setText(ControlExample.getResourceString("Parent"));
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   /* Create the parent style buttons */
   noParentButton = new Button(parentStyleGroup, SWT.RADIO);
   noParentButton.setText(ControlExample.getResourceString("No_Parent"));
   parentButton = new Button(parentStyleGroup, SWT.RADIO);
   parentButton.setText(ControlExample.getResourceString("Parent"));
   /* Create the decoration style buttons */
   noTrimButton = new Button(styleGroup, SWT.CHECK);
   noTrimButton.setText("SWT.NO_TRIM");
   closeButton = new Button(styleGroup, SWT.CHECK);
   closeButton.setText("SWT.CLOSE");
   titleButton = new Button(styleGroup, SWT.CHECK);
   titleButton.setText("SWT.TITLE");
   minButton = new Button(styleGroup, SWT.CHECK);
   minButton.setText("SWT.MIN");
   maxButton = new Button(styleGroup, SWT.CHECK);
   maxButton.setText("SWT.MAX");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   resizeButton = new Button(styleGroup, SWT.CHECK);
   resizeButton.setText("SWT.RESIZE");
   onTopButton = new Button(styleGroup, SWT.CHECK);
   onTopButton.setText("SWT.ON_TOP");
   toolButton = new Button(styleGroup, SWT.CHECK);
   toolButton.setText("SWT.TOOL");
   /* Create the modal style buttons */
   modelessButton = new Button(modalStyleGroup, SWT.RADIO);
   modelessButton.setText("SWT.MODELESS");
   primaryModalButton = new Button(modalStyleGroup, SWT.RADIO);
   primaryModalButton.setText("SWT.PRIMARY_MODAL");
   applicationModalButton = new Button(modalStyleGroup, SWT.RADIO);
   applicationModalButton.setText("SWT.APPLICATION_MODAL");
   systemModalButton = new Button(modalStyleGroup, SWT.RADIO);
   systemModalButton.setText("SWT.SYSTEM_MODAL");
   /* Create the "other" buttons */
   imageButton = new Button(otherGroup, SWT.CHECK);
   imageButton.setText(ControlExample.getResourceString("Image"));
   /* Create the "create" and "closeAll" buttons */
   createButton = new Button(controlGroup, SWT.NONE);
   GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
   createButton.setLayoutData(gridData);
   createButton.setText(ControlExample.getResourceString("Create_Shell"));
   closeAllButton = new Button(controlGroup, SWT.NONE);
   gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
   closeAllButton.setText(ControlExample
       .getResourceString("Close_All_Shells"));
   closeAllButton.setLayoutData(gridData);
   /* Add the listeners */
   createButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       createButtonSelected(e);
     }
   });
   closeAllButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       closeAllShells();
     }
   });
   SelectionListener decorationButtonListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       decorationButtonSelected(event);
     }
   };
   noTrimButton.addSelectionListener(decorationButtonListener);
   closeButton.addSelectionListener(decorationButtonListener);
   titleButton.addSelectionListener(decorationButtonListener);
   minButton.addSelectionListener(decorationButtonListener);
   maxButton.addSelectionListener(decorationButtonListener);
   borderButton.addSelectionListener(decorationButtonListener);
   resizeButton.addSelectionListener(decorationButtonListener);
   applicationModalButton.addSelectionListener(decorationButtonListener);
   systemModalButton.addSelectionListener(decorationButtonListener);
   /* Set the default state */
   noParentButton.setSelection(true);
   modelessButton.setSelection(true);
 }
 /**
  * Handle a decoration button selection event.
  * 
  * @param event
  *            org.eclipse.swt.events.SelectionEvent
  */
 public void decorationButtonSelected(SelectionEvent event) {
   /*
    * Make sure if the modal style is SWT.APPLICATION_MODAL or
    * SWT.SYSTEM_MODAL the style SWT.CLOSE is also selected. This is to
    * make sure the user can close the shell.
    */
   Button widget = (Button) event.widget;
   if (widget == applicationModalButton || widget == systemModalButton) {
     if (widget.getSelection()) {
       closeButton.setSelection(true);
       noTrimButton.setSelection(false);
     }
     return;
   }
   if (widget == closeButton) {
     if (applicationModalButton.getSelection()
         || systemModalButton.getSelection()) {
       closeButton.setSelection(true);
     }
   }
   /*
    * Make sure if the No Trim button is selected then all other decoration
    * buttons are deselected.
    */
   if (widget.getSelection() && widget != noTrimButton) {
     noTrimButton.setSelection(false);
     return;
   }
   if (widget.getSelection() && widget == noTrimButton) {
     if (applicationModalButton.getSelection()
         || systemModalButton.getSelection()) {
       noTrimButton.setSelection(false);
       return;
     }
     closeButton.setSelection(false);
     titleButton.setSelection(false);
     minButton.setSelection(false);
     maxButton.setSelection(false);
     borderButton.setSelection(false);
     resizeButton.setSelection(false);
     return;
   }
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Shell";
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

/**

* Tab is the abstract superclass of every page in the example"s
* tab folder. Each page in the tab folder describes a control.
* 
* A Tab itself is not a control but instead provides a hierarchy with which to
* share code that is common to every page in the folder.
* 
* A typical page in a Tab contains a two column composite. The left column
* contains the "Example" group. The right column contains "Control" group. The
* "Control" group contains controls that allow the user to interact with the
* example control. The "Control" group typically contains a "Style", "Other"
* and "Size" group. Subclasses can override these defaults to augment a group
* or stop a group from being created.
*/

abstract class Tab {

 /* Common control buttons */
 Button borderButton, enabledButton, visibleButton;
 Button preferredButton, tooSmallButton, smallButton, largeButton,
     fillButton;
 /* Common groups and composites */
 Composite tabFolderPage;
 Group exampleGroup, controlGroup, listenersGroup, otherGroup, sizeGroup,
     styleGroup, colorGroup;
 /* Controlling instance */
 final ControlExample instance;
 /* Sizing constants for the "Size" group */
 static final int TOO_SMALL_SIZE = 10;
 static final int SMALL_SIZE = 50;
 static final int LARGE_SIZE = 100;
 /* Right-to-left support */
 static final boolean RTL_SUPPORT_ENABLE = false;
 Group orientationGroup;
 Button rtlButton, ltrButton, defaultOrietationButton;
 /* Controls and resources for the "Colors" group */
 Button foregroundButton, backgroundButton, fontButton;
 Image foregroundImage, backgroundImage;
 Color foregroundColor, backgroundColor;
 Font font;
 /* Event logging variables and controls */
 Text eventConsole;
 boolean logging = false;
 boolean[] eventsFilter;
 /* Set/Get API controls */
 Combo nameCombo;
 Label returnTypeLabel;
 Button getButton, setButton;
 Text setText, getText;
 static final String[] EVENT_NAMES = { "None", "KeyDown", "KeyUp",
     "MouseDown", "MouseUp", "MouseMove", "MouseEnter", "MouseExit",
     "MouseDoubleClick", "Paint", "Move", "Resize", "Dispose",
     "Selection", "DefaultSelection", "FocusIn", "FocusOut", "Expand",
     "Collapse", "Iconify", "Deiconify", "Close", "Show", "Hide",
     "Modify", "Verify", "Activate", "Deactivate", "Help", "DragDetect",
     "Arm", "Traverse", "MouseHover", "HardKeyDown", "HardKeyUp",
     "MenuDetect", "SetData", "MouseWheel", };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 Tab(ControlExample instance) {
   this.instance = instance;
 }
 /**
  * Creates the "Control" group. The "Control" group is typically the right
  * hand column in the tab.
  */
 void createControlGroup() {
   /*
    * Create the "Control" group. This is the group on the right half of
    * each example tab. It consists of the "Style" group, the "Other" group
    * and the "Size" group.
    */
   controlGroup = new Group(tabFolderPage, SWT.NONE);
   controlGroup.setLayout(new GridLayout(2, true));
   controlGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
       false));
   controlGroup.setText(ControlExample.getResourceString("Parameters"));
   /* Create individual groups inside the "Control" group */
   createStyleGroup();
   createOtherGroup();
   createSetGetGroup();
   createSizeGroup();
   createColorGroup();
   if (RTL_SUPPORT_ENABLE) {
     createOrientationGroup();
   }
   /*
    * For each Button child in the style group, add a selection listener
    * that will recreate the example controls. If the style group button is
    * a RADIO button, ensure that the radio button is selected before
    * recreating the example controls. When the user selects a RADIO
    * button, the current RADIO button in the group is deselected and the
    * new RADIO button is selected automatically. The listeners are
    * notified for both these operations but typically only do work when a
    * RADIO button is selected.
    */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if ((event.widget.getStyle() & SWT.RADIO) != 0) {
         if (!((Button) event.widget).getSelection())
           return;
       }
       recreateExampleWidgets();
     }
   };
   Control[] children = styleGroup.getChildren();
   for (int i = 0; i < children.length; i++) {
     if (children[i] instanceof Button) {
       Button button = (Button) children[i];
       button.addSelectionListener(selectionListener);
     }
   }
   if (RTL_SUPPORT_ENABLE) {
     rtlButton.addSelectionListener(selectionListener);
     ltrButton.addSelectionListener(selectionListener);
     defaultOrietationButton.addSelectionListener(selectionListener);
   }
 }
 /**
  * Append the Set/Get API controls to the "Other" group.
  */
 void createSetGetGroup() {
   /*
    * Create the button to access set/get API functionality.
    */
   final String[] methodNames = getMethodNames();
   if (methodNames != null) {
     Button setGetButton = new Button(otherGroup, SWT.PUSH);
     setGetButton.setText(ControlExample.getResourceString("Set_Get"));
     setGetButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
         false, false));
     setGetButton.addSelectionListener(new SelectionAdapter() {
       public void widgetSelected(SelectionEvent e) {
         Button button = (Button) e.widget;
         Point pt = button.getLocation();
         pt = e.display.map(button, null, pt);
         createSetGetDialog(pt.x, pt.y, methodNames);
       }
     });
   }
 }
 /**
  * Creates the "Control" widget children. Subclasses override this method to
  * augment the standard controls created in the "Style", "Other" and "Size"
  * groups.
  */
 void createControlWidgets() {
 }
 /**
  * Creates the "Colors" group. This is typically a child of the "Control"
  * group. Subclasses override this method to customize and set system
  * colors.
  */
 void createColorGroup() {
   /* Create the group */
   colorGroup = new Group(controlGroup, SWT.NONE);
   colorGroup.setLayout(new GridLayout(2, false));
   colorGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   colorGroup.setText(ControlExample.getResourceString("Colors"));
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Foreground_Color"));
   foregroundButton = new Button(colorGroup, SWT.PUSH);
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Background_Color"));
   backgroundButton = new Button(colorGroup, SWT.PUSH);
   fontButton = new Button(colorGroup, SWT.PUSH);
   fontButton.setText(ControlExample.getResourceString("Font"));
   fontButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
   Button defaultsButton = new Button(colorGroup, SWT.PUSH);
   defaultsButton.setText(ControlExample.getResourceString("Defaults"));
   Shell shell = controlGroup.getShell();
   final ColorDialog foregroundDialog = new ColorDialog(shell);
   final ColorDialog backgroundDialog = new ColorDialog(shell);
   final FontDialog fontDialog = new FontDialog(shell);
   /* Create images to display current colors */
   int imageSize = 12;
   Display display = shell.getDisplay();
   foregroundImage = new Image(display, imageSize, imageSize);
   backgroundImage = new Image(display, imageSize, imageSize);
   /* Add listeners to set the colors and font */
   foregroundButton.setImage(foregroundImage); // sets the size of the
   // button
   foregroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = foregroundColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getForeground();
       }
       if (oldColor != null)
         foregroundDialog.setRGB(oldColor.getRGB()); // seed dialog
       // with current
       // color
       RGB rgb = foregroundDialog.open();
       if (rgb == null)
         return;
       oldColor = foregroundColor; // save old foreground color to
       // dispose when done
       foregroundColor = new Color(event.display, rgb);
       setExampleWidgetForeground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   backgroundButton.setImage(backgroundImage); // sets the size of the
   // button
   backgroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = backgroundColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getBackground(); // seed dialog
         // with current
         // color
       }
       if (oldColor != null)
         backgroundDialog.setRGB(oldColor.getRGB());
       RGB rgb = backgroundDialog.open();
       if (rgb == null)
         return;
       oldColor = backgroundColor; // save old background color to
       // dispose when done
       backgroundColor = new Color(event.display, rgb);
       setExampleWidgetBackground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   fontButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Font oldFont = font;
       if (oldFont == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldFont = controls[0].getFont();
       }
       if (oldFont != null)
         fontDialog.setFontList(oldFont.getFontData()); // seed
       // dialog
       // with
       // current
       // font
       FontData fontData = fontDialog.open();
       if (fontData == null)
         return;
       oldFont = font; // dispose old font when done
       font = new Font(event.display, fontData);
       setExampleWidgetFont();
       setExampleWidgetSize();
       if (oldFont != null)
         oldFont.dispose();
     }
   });
   defaultsButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       resetColorsAndFonts();
     }
   });
   shell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent event) {
       if (foregroundImage != null)
         foregroundImage.dispose();
       if (backgroundImage != null)
         backgroundImage.dispose();
       if (foregroundColor != null)
         foregroundColor.dispose();
       if (backgroundColor != null)
         backgroundColor.dispose();
       if (font != null)
         font.dispose();
       foregroundColor = null;
       backgroundColor = null;
       font = null;
     }
   });
 }
 /**
  * Creates the "Other" group. This is typically a child of the "Control"
  * group.
  */
 void createOtherGroup() {
   /* Create the group */
   otherGroup = new Group(controlGroup, SWT.NONE);
   otherGroup.setLayout(new GridLayout());
   otherGroup
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
   otherGroup.setText(ControlExample.getResourceString("Other"));
   /* Create the controls */
   enabledButton = new Button(otherGroup, SWT.CHECK);
   enabledButton.setText(ControlExample.getResourceString("Enabled"));
   visibleButton = new Button(otherGroup, SWT.CHECK);
   visibleButton.setText(ControlExample.getResourceString("Visible"));
   /* Add the listeners */
   enabledButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setExampleWidgetEnabled();
     }
   });
   visibleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setExampleWidgetVisibility();
     }
   });
   /* Set the default state */
   enabledButton.setSelection(true);
   visibleButton.setSelection(true);
 }
 /**
  * Create the event console popup menu.
  */
 void createEventConsolePopup() {
   Menu popup = new Menu(eventConsole.getShell(), SWT.POP_UP);
   eventConsole.setMenu(popup);
   MenuItem cut = new MenuItem(popup, SWT.PUSH);
   cut.setText(ControlExample.getResourceString("MenuItem_Cut"));
   cut.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       eventConsole.cut();
     }
   });
   MenuItem copy = new MenuItem(popup, SWT.PUSH);
   copy.setText(ControlExample.getResourceString("MenuItem_Copy"));
   copy.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       eventConsole.copy();
     }
   });
   MenuItem paste = new MenuItem(popup, SWT.PUSH);
   paste.setText(ControlExample.getResourceString("MenuItem_Paste"));
   paste.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       eventConsole.paste();
     }
   });
   new MenuItem(popup, SWT.SEPARATOR);
   MenuItem selectAll = new MenuItem(popup, SWT.PUSH);
   selectAll.setText(ControlExample
       .getResourceString("MenuItem_SelectAll"));
   selectAll.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       eventConsole.selectAll();
     }
   });
 }
 /**
  * Creates the "Example" group. The "Example" group is typically the left
  * hand column in the tab.
  */
 void createExampleGroup() {
   exampleGroup = new Group(tabFolderPage, SWT.NONE);
   exampleGroup.setLayout(new GridLayout());
   exampleGroup
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
 }
 /**
  * Creates the "Example" widget children of the "Example" group. Subclasses
  * override this method to create the particular example control.
  */
 void createExampleWidgets() {
   /* Do nothing */
 }
 /**
  * Creates and opens the "Listener selection" dialog.
  */
 void createListenerSelectionDialog() {
   final Shell dialog = new Shell(tabFolderPage.getShell(),
       SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
   dialog.setText(ControlExample.getResourceString("Select_Listeners"));
   dialog.setLayout(new GridLayout(2, false));
   final Table table = new Table(dialog, SWT.BORDER | SWT.V_SCROLL
       | SWT.CHECK);
   GridData data = new GridData(GridData.FILL_BOTH);
   data.verticalSpan = 2;
   table.setLayoutData(data);
   for (int i = 0; i < EVENT_NAMES.length; i++) {
     TableItem item = new TableItem(table, SWT.NONE);
     item.setText(EVENT_NAMES[i]);
     item.setChecked(eventsFilter[i]);
   }
   final String[] customNames = getCustomEventNames();
   for (int i = 0; i < customNames.length; i++) {
     TableItem item = new TableItem(table, SWT.NONE);
     item.setText(customNames[i]);
     item.setChecked(eventsFilter[EVENT_NAMES.length + i]);
   }
   Button selectAll = new Button(dialog, SWT.PUSH);
   selectAll.setText(ControlExample.getResourceString("Select_All"));
   selectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
   selectAll.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       TableItem[] items = table.getItems();
       for (int i = 0; i < EVENT_NAMES.length; i++) {
         items[i].setChecked(true);
       }
       for (int i = 0; i < customNames.length; i++) {
         items[EVENT_NAMES.length + i].setChecked(true);
       }
     }
   });
   Button deselectAll = new Button(dialog, SWT.PUSH);
   deselectAll.setText(ControlExample.getResourceString("Deselect_All"));
   deselectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_BEGINNING));
   deselectAll.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       TableItem[] items = table.getItems();
       for (int i = 0; i < EVENT_NAMES.length; i++) {
         items[i].setChecked(false);
       }
       for (int i = 0; i < customNames.length; i++) {
         items[EVENT_NAMES.length + i].setChecked(false);
       }
     }
   });
   new Label(dialog, SWT.NONE); /* Filler */
   Button ok = new Button(dialog, SWT.PUSH);
   ok.setText(ControlExample.getResourceString("OK"));
   dialog.setDefaultButton(ok);
   ok.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
   ok.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       TableItem[] items = table.getItems();
       for (int i = 0; i < EVENT_NAMES.length; i++) {
         eventsFilter[i] = items[i].getChecked();
       }
       for (int i = 0; i < customNames.length; i++) {
         eventsFilter[EVENT_NAMES.length + i] = items[EVENT_NAMES.length
             + i].getChecked();
       }
       dialog.dispose();
     }
   });
   dialog.pack();
   dialog.open();
   while (!dialog.isDisposed()) {
     if (!dialog.getDisplay().readAndDispatch())
       dialog.getDisplay().sleep();
   }
 }
 /**
  * Creates the "Listeners" group. The "Listeners" group goes below the
  * "Example" and "Control" groups.
  */
 void createListenersGroup() {
   listenersGroup = new Group(tabFolderPage, SWT.NONE);
   listenersGroup.setLayout(new GridLayout(3, false));
   listenersGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
       true, 2, 1));
   listenersGroup.setText(ControlExample.getResourceString("Listeners"));
   /*
    * Create the button to access the "Listeners" dialog.
    */
   Button listenersButton = new Button(listenersGroup, SWT.PUSH);
   listenersButton.setText(ControlExample
       .getResourceString("Select_Listeners"));
   listenersButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       createListenerSelectionDialog();
       recreateExampleWidgets();
     }
   });
   /*
    * Create the checkbox to add/remove listeners to/from the example
    * widgets.
    */
   final Button listenCheckbox = new Button(listenersGroup, SWT.CHECK);
   listenCheckbox.setText(ControlExample.getResourceString("Listen"));
   listenCheckbox.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       logging = listenCheckbox.getSelection();
       recreateExampleWidgets();
     }
   });
   /*
    * Create the button to clear the text.
    */
   Button clearButton = new Button(listenersGroup, SWT.PUSH);
   clearButton.setText(ControlExample.getResourceString("Clear"));
   clearButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
   clearButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       eventConsole.setText("");
     }
   });
   /* Initialize the eventsFilter to log all events. */
   int customEventCount = getCustomEventNames().length;
   eventsFilter = new boolean[EVENT_NAMES.length + customEventCount];
   for (int i = 0; i < EVENT_NAMES.length + customEventCount; i++) {
     eventsFilter[i] = true;
   }
   /* Create the event console Text. */
   eventConsole = new Text(listenersGroup, SWT.BORDER | SWT.MULTI
       | SWT.V_SCROLL | SWT.H_SCROLL);
   GridData data = new GridData(GridData.FILL_BOTH);
   data.horizontalSpan = 3;
   data.heightHint = 80;
   eventConsole.setLayoutData(data);
   createEventConsolePopup();
   eventConsole.addKeyListener(new KeyAdapter() {
     public void keyPressed(KeyEvent e) {
       if ((e.keyCode == "A" || e.keyCode == "a")
           && (e.stateMask & SWT.MOD1) != 0) {
         eventConsole.selectAll();
         e.doit = false;
       }
     }
   });
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return null;
 }
 void createSetGetDialog(int x, int y, String[] methodNames) {
   final Shell dialog = new Shell(eventConsole.getShell(), SWT.DIALOG_TRIM
       | SWT.RESIZE | SWT.MODELESS);
   dialog.setLayout(new GridLayout(2, false));
   dialog.setText(getTabText() + " "
       + ControlExample.getResourceString("Set_Get"));
   nameCombo = new Combo(dialog, SWT.NONE);
   nameCombo.setItems(methodNames);
   nameCombo.setText(methodNames[0]);
   nameCombo.setVisibleItemCount(methodNames.length);
   nameCombo
       .setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
   nameCombo.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       resetLabels();
     }
   });
   returnTypeLabel = new Label(dialog, SWT.NONE);
   returnTypeLabel.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING,
       false, false));
   setButton = new Button(dialog, SWT.PUSH);
   setButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,
       false));
   setButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       setValue();
     }
   });
   setText = new Text(dialog, SWT.SINGLE | SWT.BORDER);
   setText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
   getButton = new Button(dialog, SWT.PUSH);
   getButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,
       false));
   getButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       getValue();
     }
   });
   getText = new Text(dialog, SWT.MULTI | SWT.BORDER | SWT.READ_ONLY
       | SWT.H_SCROLL | SWT.V_SCROLL);
   GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
   data.widthHint = 240;
   data.heightHint = 200;
   getText.setLayoutData(data);
   resetLabels();
   dialog.setDefaultButton(setButton);
   dialog.pack();
   dialog.setLocation(x, y);
   dialog.open();
 }
 void resetLabels() {
   String methodRoot = nameCombo.getText();
   returnTypeLabel.setText(parameterInfo(methodRoot));
   setButton.setText(setMethodName(methodRoot));
   getButton.setText("get" + methodRoot);
   setText.setText("");
   getText.setText("");
   getValue();
   setText.setFocus();
 }
 String setMethodName(String methodRoot) {
   return "set" + methodRoot;
 }
 String parameterInfo(String methodRoot) {
   String typeName = null;
   Class returnType = getReturnType(methodRoot);
   boolean isArray = returnType.isArray();
   if (isArray) {
     typeName = returnType.getComponentType().getName();
   } else {
     typeName = returnType.getName();
   }
   String typeNameString = typeName;
   int index = typeName.lastIndexOf(".");
   if (index != -1 && index + 1 < typeName.length())
     typeNameString = typeName.substring(index + 1);
   String info = ControlExample.getResourceString("Info_" + typeNameString
       + (isArray ? "A" : ""));
   if (isArray) {
     typeNameString += "[]";
   }
   return ControlExample.getResourceString("Parameter_Info", new Object[] {
       typeNameString, info });
 }
 void getValue() {
   String methodName = "get" + nameCombo.getText();
   getText.setText("");
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     try {
       java.lang.reflect.Method method = controls[i].getClass()
           .getMethod(methodName, null);
       Object result = method.invoke(controls[i], null);
       if (result == null) {
         getText.append("null");
       } else if (result.getClass().isArray()) {
         Object[] arrayResult = (Object[]) result;
         for (int j = 0; j < arrayResult.length; j++) {
           getText.append(arrayResult[j].toString() + "\n");
         }
       } else {
         getText.append(result.toString());
       }
     } catch (Exception e) {
       getText.append(e.toString());
     }
     if (i + 1 < controls.length) {
       getText.append("\n\n");
     }
   }
 }
 Class getReturnType(String methodRoot) {
   Class returnType = null;
   String methodName = "get" + methodRoot;
   Control[] controls = getExampleWidgets();
   try {
     java.lang.reflect.Method method = controls[0].getClass().getMethod(
         methodName, null);
     returnType = method.getReturnType();
   } catch (Exception e) {
   }
   return returnType;
 }
 void setValue() {
   /* The parameter type must be the same as the get method"s return type */
   String methodRoot = nameCombo.getText();
   Class returnType = getReturnType(methodRoot);
   String methodName = setMethodName(methodRoot);
   String value = setText.getText();
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     try {
       java.lang.reflect.Method method = controls[i].getClass()
           .getMethod(methodName, new Class[] { returnType });
       String typeName = returnType.getName();
       Object[] parameter = null;
       if (typeName.equals("int")) {
         parameter = new Object[] { new Integer(value) };
       } else if (typeName.equals("long")) {
         parameter = new Object[] { new Long(value) };
       } else if (typeName.equals("char")) {
         parameter = new Object[] { value.length() == 1 ? new Character(
             value.charAt(0))
             : new Character("\0") };
       } else if (typeName.equals("boolean")) {
         parameter = new Object[] { new Boolean(value) };
       } else if (typeName.equals("java.lang.String")) {
         parameter = new Object[] { value };
       } else if (typeName.equals("org.eclipse.swt.graphics.Point")) {
         String xy[] = value.split(",");
         parameter = new Object[] { new Point(new Integer(xy[0])
             .intValue(), new Integer(xy[1]).intValue()) };
       } else if (typeName.equals("[Ljava.lang.String;")) {
         parameter = new Object[] { value.split(",") };
       } else {
         parameter = parameterForType(typeName, value, controls[i]);
       }
       method.invoke(controls[i], parameter);
     } catch (Exception e) {
       getText.setText(e.toString());
     }
   }
 }
 Object[] parameterForType(String typeName, String value, Control control) {
   return new Object[] { value };
 }
 void createOrientationGroup() {
   /* Create Orientation group */
   orientationGroup = new Group(controlGroup, SWT.NONE);
   orientationGroup.setLayout(new GridLayout());
   orientationGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   orientationGroup.setText(ControlExample
       .getResourceString("Orientation"));
   defaultOrietationButton = new Button(orientationGroup, SWT.RADIO);
   defaultOrietationButton.setText(ControlExample
       .getResourceString("Default"));
   defaultOrietationButton.setSelection(true);
   ltrButton = new Button(orientationGroup, SWT.RADIO);
   ltrButton.setText("SWT.LEFT_TO_RIGHT");
   rtlButton = new Button(orientationGroup, SWT.RADIO);
   rtlButton.setText("SWT.RIGHT_TO_LEFT");
 }
 /**
  * Creates the "Size" group. The "Size" group contains controls that allow
  * the user to change the size of the example widgets.
  */
 void createSizeGroup() {
   /* Create the group */
   sizeGroup = new Group(controlGroup, SWT.NONE);
   sizeGroup.setLayout(new GridLayout());
   sizeGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   sizeGroup.setText(ControlExample.getResourceString("Size"));
   /* Create the controls */
   /*
    * The preferred size of a widget is the size returned by
    * widget.ruputeSize (SWT.DEFAULT, SWT.DEFAULT). This size is defined
    * on a widget by widget basis. Many widgets will attempt to display
    * their contents.
    */
   preferredButton = new Button(sizeGroup, SWT.RADIO);
   preferredButton.setText(ControlExample.getResourceString("Preferred"));
   tooSmallButton = new Button(sizeGroup, SWT.RADIO);
   tooSmallButton.setText(TOO_SMALL_SIZE + " X " + TOO_SMALL_SIZE);
   smallButton = new Button(sizeGroup, SWT.RADIO);
   smallButton.setText(SMALL_SIZE + " X " + SMALL_SIZE);
   largeButton = new Button(sizeGroup, SWT.RADIO);
   largeButton.setText(LARGE_SIZE + " X " + LARGE_SIZE);
   fillButton = new Button(sizeGroup, SWT.RADIO);
   fillButton.setText(ControlExample.getResourceString("Fill"));
   /* Add the listeners */
   SelectionAdapter selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if (!((Button) event.widget).getSelection())
         return;
       setExampleWidgetSize();
     }
   };
   preferredButton.addSelectionListener(selectionListener);
   tooSmallButton.addSelectionListener(selectionListener);
   smallButton.addSelectionListener(selectionListener);
   largeButton.addSelectionListener(selectionListener);
   fillButton.addSelectionListener(selectionListener);
   /* Set the default state */
   preferredButton.setSelection(true);
 }
 /**
  * Creates the "Style" group. The "Style" group contains controls that allow
  * the user to change the style of the example widgets. Changing a widget
  * "Style" causes the widget to be destroyed and recreated.
  */
 void createStyleGroup() {
   styleGroup = new Group(controlGroup, SWT.NONE);
   styleGroup.setLayout(new GridLayout());
   styleGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   styleGroup.setText(ControlExample.getResourceString("Styles"));
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   /*
    * Create a two column page.
    */
   tabFolderPage = new Composite(tabFolder, SWT.NONE);
   tabFolderPage.setLayout(new GridLayout(2, false));
   /* Create the "Example" and "Control" groups. */
   createExampleGroup();
   createControlGroup();
   /* Create the "Listeners" group under the "Control" group. */
   createListenersGroup();
   /* Create and initialize the example and control widgets. */
   createExampleWidgets();
   hookExampleWidgetListeners();
   createControlWidgets();
   setExampleWidgetState();
   return tabFolderPage;
 }
 /**
  * Disposes the "Example" widgets.
  */
 void disposeExampleWidgets() {
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     controls[i].dispose();
   }
 }
 void drawImage(Image image, Color color) {
   GC gc = new GC(image);
   gc.setBackground(color);
   Rectangle bounds = image.getBounds();
   gc.fillRectangle(0, 0, bounds.width, bounds.height);
   gc.drawRectangle(0, 0, bounds.width - 1, bounds.height - 1);
   gc.dispose();
 }
 /**
  * Gets the list of custom event names.
  * 
  * @return an array containing custom event names
  */
 String[] getCustomEventNames() {
   return new String[0];
 }
 /**
  * Gets the default style for a widget
  * 
  * @return the default style bit
  */
 int getDefaultStyle() {
   if (ltrButton != null && ltrButton.getSelection()) {
     return SWT.LEFT_TO_RIGHT;
   }
   if (rtlButton != null && rtlButton.getSelection()) {
     return SWT.RIGHT_TO_LEFT;
   }
   return SWT.NONE;
 }
 /**
  * Gets the "Example" widget children.
  * 
  * @return an array containing the example widget children
  */
 Control[] getExampleWidgets() {
   return new Control[0];
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   return new Item[0];
 }
 /**
  * Gets the text for the tab folder item.
  * 
  * @return the text for the tab item
  */
 String getTabText() {
   return "";
 }
 /**
  * Hooks all listeners to all example controls and example control items.
  */
 void hookExampleWidgetListeners() {
   if (logging) {
     Control[] exampleControls = getExampleWidgets();
     for (int i = 0; i < exampleControls.length; i++) {
       hookListeners(exampleControls[i]);
     }
     Item[] exampleItems = getExampleWidgetItems();
     for (int i = 0; i < exampleItems.length; i++) {
       hookListeners(exampleItems[i]);
     }
     String[] customNames = getCustomEventNames();
     for (int i = 0; i < customNames.length; i++) {
       if (eventsFilter[EVENT_NAMES.length + i])
         hookCustomListener(customNames[i]);
     }
   }
 }
 /**
  * Hooks the custom listener specified by eventName.
  */
 void hookCustomListener(String eventName) {
 }
 /**
  * Hooks all listeners to the specified widget.
  */
 void hookListeners(Widget widget) {
   if (logging) {
     Listener listener = new Listener() {
       public void handleEvent(Event event) {
         log(event);
       }
     };
     for (int i = 0; i < EVENT_NAMES.length; i++) {
       if (eventsFilter[i])
         widget.addListener(i, listener);
     }
   }
 }
 /**
  * Logs an untyped event to the event console.
  */
 void log(Event event) {
   String toString = EVENT_NAMES[event.type] + " [" + event.type + "]: ";
   switch (event.type) {
   case SWT.KeyDown:
   case SWT.KeyUp:
     toString += new KeyEvent(event).toString();
     break;
   case SWT.MouseDown:
   case SWT.MouseUp:
   case SWT.MouseMove:
   case SWT.MouseEnter:
   case SWT.MouseExit:
   case SWT.MouseDoubleClick:
   case SWT.MouseWheel:
   case SWT.MouseHover:
     toString += new MouseEvent(event).toString();
     break;
   case SWT.Paint:
     toString += new PaintEvent(event).toString();
     break;
   case SWT.Move:
   case SWT.Resize:
     toString += new ControlEvent(event).toString();
     break;
   case SWT.Dispose:
     toString += new DisposeEvent(event).toString();
     break;
   case SWT.Selection:
   case SWT.DefaultSelection:
     toString += new SelectionEvent(event).toString();
     break;
   case SWT.FocusIn:
   case SWT.FocusOut:
     toString += new FocusEvent(event).toString();
     break;
   case SWT.Expand:
   case SWT.Collapse:
     toString += new TreeEvent(event).toString();
     break;
   case SWT.Iconify:
   case SWT.Deiconify:
   case SWT.Close:
   case SWT.Activate:
   case SWT.Deactivate:
     toString += new ShellEvent(event).toString();
     break;
   case SWT.Show:
   case SWT.Hide:
     toString += (event.widget instanceof Menu) ? new MenuEvent(event)
         .toString() : event.toString();
     break;
   case SWT.Modify:
     toString += new ModifyEvent(event).toString();
     break;
   case SWT.Verify:
     toString += new VerifyEvent(event).toString();
     break;
   case SWT.Help:
     toString += new HelpEvent(event).toString();
     break;
   case SWT.Arm:
     toString += new ArmEvent(event).toString();
     break;
   case SWT.Traverse:
     toString += new TraverseEvent(event).toString();
     break;
   case SWT.HardKeyDown:
   case SWT.HardKeyUp:
   case SWT.DragDetect:
   case SWT.MenuDetect:
   default:
     toString += event.toString();
   }
   eventConsole.append(toString);
   eventConsole.append("\n");
 }
 /**
  * Logs a string to the event console.
  */
 void log(String string) {
   eventConsole.append(string);
   eventConsole.append("\n");
 }
 /**
  * Logs a typed event to the event console.
  */
 void log(String eventName, TypedEvent event) {
   eventConsole.append(eventName + ": ");
   eventConsole.append(event.toString());
   eventConsole.append("\n");
 }
 /**
  * Recreates the "Example" widgets.
  */
 void recreateExampleWidgets() {
   disposeExampleWidgets();
   createExampleWidgets();
   hookExampleWidgetListeners();
   setExampleWidgetState();
 }
 /**
  * Sets the foreground color, background color, and font of the "Example"
  * widgets to their default settings. Subclasses may extend in order to
  * reset other colors and fonts to default settings as well.
  */
 void resetColorsAndFonts() {
   Color oldColor = foregroundColor;
   foregroundColor = null;
   setExampleWidgetForeground();
   if (oldColor != null)
     oldColor.dispose();
   oldColor = backgroundColor;
   backgroundColor = null;
   setExampleWidgetBackground();
   if (oldColor != null)
     oldColor.dispose();
   Font oldFont = font;
   font = null;
   setExampleWidgetFont();
   setExampleWidgetSize();
   if (oldFont != null)
     oldFont.dispose();
 }
 /**
  * Sets the background color of the "Example" widgets.
  */
 void setExampleWidgetBackground() {
   if (backgroundButton == null)
     return; // no background button on this tab
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     controls[i].setBackground(backgroundColor);
   }
   // Set the background button"s color to match the color just set.
   Color color = backgroundColor;
   if (controls.length == 0)
     return;
   if (color == null)
     color = controls[0].getBackground();
   drawImage(backgroundImage, color);
   backgroundButton.setImage(backgroundImage);
 }
 /**
  * Sets the enabled state of the "Example" widgets.
  */
 void setExampleWidgetEnabled() {
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     controls[i].setEnabled(enabledButton.getSelection());
   }
 }
 /**
  * Sets the font of the "Example" widgets.
  */
 void setExampleWidgetFont() {
   if (instance.startup)
     return;
   if (fontButton == null)
     return; // no font button on this tab
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     Control control = controls[i];
     control.setFont(font);
   }
 }
 /**
  * Sets the foreground color of the "Example" widgets.
  */
 void setExampleWidgetForeground() {
   if (foregroundButton == null)
     return; // no foreground button on this tab
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     controls[i].setForeground(foregroundColor);
   }
   // Set the foreground button"s color to match the color just set.
   Color color = foregroundColor;
   if (controls.length == 0)
     return;
   if (color == null)
     color = controls[0].getForeground();
   drawImage(foregroundImage, color);
   foregroundButton.setImage(foregroundImage);
 }
 /**
  * Sets the size of the "Example" widgets.
  */
 void setExampleWidgetSize() {
   int size = SWT.DEFAULT;
   if (preferredButton == null)
     return;
   if (preferredButton.getSelection())
     size = SWT.DEFAULT;
   if (tooSmallButton.getSelection())
     size = TOO_SMALL_SIZE;
   if (smallButton.getSelection())
     size = SMALL_SIZE;
   if (largeButton.getSelection())
     size = LARGE_SIZE;
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     GridData gridData;
     if (fillButton.getSelection()) {
       gridData = new GridData(GridData.FILL_BOTH);
     } else {
       gridData = new GridData();
       gridData.widthHint = size;
       gridData.heightHint = size;
     }
     controls[i].setLayoutData(gridData);
   }
   tabFolderPage.layout(controls);
 }
 /**
  * Sets the state of the "Example" widgets. Subclasses reimplement this
  * method to set "Example" widget state that is specific to the widget.
  */
 void setExampleWidgetState() {
   setExampleWidgetEnabled();
   setExampleWidgetVisibility();
   setExampleWidgetBackground();
   setExampleWidgetForeground();
   setExampleWidgetFont();
   setExampleWidgetSize();
   // TEMPORARY CODE
   // Control [] controls = getExampleWidgets ();
   // for (int i=0; i<controls.length; i++) {
   // log ("Control=" + controls [i] + ", border width=" + controls
   // [i].getBorderWidth ());
   // }
 }
 /**
  * Sets the visibility of the "Example" widgets.
  */
 void setExampleWidgetVisibility() {
   Control[] controls = getExampleWidgets();
   for (int i = 0; i < controls.length; i++) {
     controls[i].setVisible(visibleButton.getSelection());
   }
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class TreeTab extends ScrollableTab {

 /* Example widgets and groups that contain them */
 Tree tree1, tree2;
 TreeItem textNode1, imageNode1;
 Group treeGroup, imageTreeGroup, itemGroup;
 /* Style widgets added to the "Style" group */
 Button checkButton, fullSelectionButton;
 /* Other widgets added to the "Other" group */
 Button multipleColumns, headerVisibleButton, linesVisibleButton;
 /* Controls and resources added to the "Colors" group */
 Button itemForegroundButton, itemBackgroundButton, itemFontButton;
 Color itemForegroundColor, itemBackgroundColor;
 Image itemForegroundImage, itemBackgroundImage;
 Font itemFont;
 static String[] columnTitles = {
     ControlExample.getResourceString("TableTitle_0"),
     ControlExample.getResourceString("TableTitle_1"),
     ControlExample.getResourceString("TableTitle_2"),
     ControlExample.getResourceString("TableTitle_3") };
 static String[][] tableData = {
     { ControlExample.getResourceString("TableLine0_0"),
         ControlExample.getResourceString("TableLine0_1"),
         ControlExample.getResourceString("TableLine0_2"),
         ControlExample.getResourceString("TableLine0_3") },
     { ControlExample.getResourceString("TableLine1_0"),
         ControlExample.getResourceString("TableLine1_1"),
         ControlExample.getResourceString("TableLine1_2"),
         ControlExample.getResourceString("TableLine1_3") },
     { ControlExample.getResourceString("TableLine2_0"),
         ControlExample.getResourceString("TableLine2_1"),
         ControlExample.getResourceString("TableLine2_2"),
         ControlExample.getResourceString("TableLine2_3") } };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 TreeTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Colors" group.
  */
 void createColorGroup() {
   super.createColorGroup();
   itemGroup = new Group(colorGroup, SWT.NONE);
   itemGroup.setText(ControlExample.getResourceString("Tree_Item_Colors"));
   GridData data = new GridData();
   data.horizontalSpan = 2;
   itemGroup.setLayoutData(data);
   itemGroup.setLayout(new GridLayout(2, false));
   new Label(itemGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Foreground_Color"));
   itemForegroundButton = new Button(itemGroup, SWT.PUSH);
   new Label(itemGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Background_Color"));
   itemBackgroundButton = new Button(itemGroup, SWT.PUSH);
   itemFontButton = new Button(itemGroup, SWT.PUSH);
   itemFontButton.setText(ControlExample.getResourceString("Font"));
   itemFontButton.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL));
   Shell shell = colorGroup.getShell();
   final ColorDialog foregroundDialog = new ColorDialog(shell);
   final ColorDialog backgroundDialog = new ColorDialog(shell);
   final FontDialog fontDialog = new FontDialog(shell);
   int imageSize = 12;
   Display display = shell.getDisplay();
   itemForegroundImage = new Image(display, imageSize, imageSize);
   itemBackgroundImage = new Image(display, imageSize, imageSize);
   /* Add listeners to set the colors and font */
   itemForegroundButton.setImage(itemForegroundImage);
   itemForegroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = itemForegroundColor;
       if (oldColor == null)
         oldColor = textNode1.getForeground();
       foregroundDialog.setRGB(oldColor.getRGB());
       RGB rgb = foregroundDialog.open();
       if (rgb == null)
         return;
       oldColor = itemForegroundColor;
       itemForegroundColor = new Color(event.display, rgb);
       setItemForeground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   itemBackgroundButton.setImage(itemBackgroundImage);
   itemBackgroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = itemBackgroundColor;
       if (oldColor == null)
         oldColor = textNode1.getBackground();
       backgroundDialog.setRGB(oldColor.getRGB());
       RGB rgb = backgroundDialog.open();
       if (rgb == null)
         return;
       oldColor = itemBackgroundColor;
       itemBackgroundColor = new Color(event.display, rgb);
       setItemBackground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   itemFontButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Font oldFont = itemFont;
       if (oldFont == null)
         oldFont = textNode1.getFont();
       fontDialog.setFontList(oldFont.getFontData());
       FontData fontData = fontDialog.open();
       if (fontData == null)
         return;
       oldFont = itemFont;
       itemFont = new Font(event.display, fontData);
       setItemFont();
       setExampleWidgetSize();
       if (oldFont != null)
         oldFont.dispose();
     }
   });
   shell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent event) {
       if (itemBackgroundImage != null)
         itemBackgroundImage.dispose();
       if (itemForegroundImage != null)
         itemForegroundImage.dispose();
       if (itemBackgroundColor != null)
         itemBackgroundColor.dispose();
       if (itemForegroundColor != null)
         itemForegroundColor.dispose();
       if (itemFont != null)
         itemFont.dispose();
       itemBackgroundColor = null;
       itemForegroundColor = null;
       itemFont = null;
     }
   });
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   multipleColumns = new Button(otherGroup, SWT.CHECK);
   multipleColumns.setText(ControlExample
       .getResourceString("Multiple_Columns"));
   headerVisibleButton = new Button(otherGroup, SWT.CHECK);
   headerVisibleButton.setText(ControlExample
       .getResourceString("Header_Visible"));
   linesVisibleButton = new Button(otherGroup, SWT.CHECK);
   linesVisibleButton.setText(ControlExample
       .getResourceString("Lines_Visible"));
   /* Add the listeners */
   multipleColumns.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       recreateExampleWidgets();
     }
   });
   headerVisibleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetHeaderVisible();
     }
   });
   linesVisibleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetLinesVisible();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the text tree */
   treeGroup = new Group(exampleGroup, SWT.NONE);
   treeGroup.setLayout(new GridLayout());
   treeGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   treeGroup.setText("Tree");
   /* Create a group for the image tree */
   imageTreeGroup = new Group(exampleGroup, SWT.NONE);
   imageTreeGroup.setLayout(new GridLayout());
   imageTreeGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   imageTreeGroup.setText(ControlExample
       .getResourceString("Tree_With_Images"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (singleButton.getSelection())
     style |= SWT.SINGLE;
   if (multiButton.getSelection())
     style |= SWT.MULTI;
   if (checkButton.getSelection())
     style |= SWT.CHECK;
   if (fullSelectionButton.getSelection())
     style |= SWT.FULL_SELECTION;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the text tree */
   tree1 = new Tree(treeGroup, style);
   if (multipleColumns.getSelection()) {
     for (int i = 0; i < columnTitles.length; i++) {
       TreeColumn treeColumn = new TreeColumn(tree1, SWT.NONE);
       treeColumn.setText(columnTitles[i]);
     }
   }
   for (int i = 0; i < 4; i++) {
     TreeItem item = new TreeItem(tree1, SWT.NONE);
     setItemText(item, i, ControlExample.getResourceString("Node_"
         + (i + 1)));
     if (i < 3) {
       TreeItem subitem = new TreeItem(item, SWT.NONE);
       setItemText(subitem, i, ControlExample
           .getResourceString("Node_" + (i + 1) + "_1"));
     }
   }
   TreeItem treeRoots[] = tree1.getItems();
   TreeItem item = new TreeItem(treeRoots[1], SWT.NONE);
   setItemText(item, 1, ControlExample.getResourceString("Node_2_2"));
   item = new TreeItem(item, SWT.NONE);
   setItemText(item, 1, ControlExample.getResourceString("Node_2_2_1"));
   textNode1 = treeRoots[0];
   packColumns(tree1);
   /* Create the image tree */
   tree2 = new Tree(imageTreeGroup, style);
   Image image = instance.images[ControlExample.ciClosedFolder];
   if (multipleColumns.getSelection()) {
     for (int i = 0; i < columnTitles.length; i++) {
       TreeColumn treeColumn = new TreeColumn(tree2, SWT.NONE);
       treeColumn.setText(columnTitles[i]);
     }
   }
   for (int i = 0; i < 4; i++) {
     item = new TreeItem(tree2, SWT.NONE);
     setItemText(item, i, ControlExample.getResourceString("Node_"
         + (i + 1)));
     item.setImage(image);
     if (i < 3) {
       TreeItem subitem = new TreeItem(item, SWT.NONE);
       setItemText(subitem, i, ControlExample
           .getResourceString("Node_" + (i + 1) + "_1"));
       subitem.setImage(image);
     }
   }
   treeRoots = tree2.getItems();
   item = new TreeItem(treeRoots[1], SWT.NONE);
   setItemText(item, 1, ControlExample.getResourceString("Node_2_2"));
   item.setImage(image);
   item = new TreeItem(item, SWT.NONE);
   setItemText(item, 1, ControlExample.getResourceString("Node_2_2_1"));
   item.setImage(image);
   imageNode1 = treeRoots[0];
   packColumns(tree2);
 }
 void setItemText(TreeItem item, int i, String node) {
   int index = i % 3;
   if (multipleColumns.getSelection()) {
     tableData[index][0] = node;
     item.setText(tableData[index]);
   } else {
     item.setText(node);
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   checkButton = new Button(styleGroup, SWT.CHECK);
   checkButton.setText("SWT.CHECK");
   fullSelectionButton = new Button(styleGroup, SWT.CHECK);
   fullSelectionButton.setText("SWT.FULL_SELECTION");
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   /*
    * Note: We do not bother collecting the tree items because tree items
    * don"t have any events. If events are ever added to TreeItem, then
    * this needs to change.
    */
   Item[] columns1 = tree1.getColumns();
   Item[] columns2 = tree2.getColumns();
   Item[] allItems = new Item[columns1.length + columns2.length];
   System.arraycopy(columns1, 0, allItems, 0, columns1.length);
   System.arraycopy(columns2, 0, allItems, columns1.length,
       columns2.length);
   return allItems;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { tree1, tree2 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Selection", "TopItem" };
 }
 Object[] parameterForType(String typeName, String value, Control control) {
   if (typeName.equals("org.eclipse.swt.widgets.TreeItem")) {
     TreeItem item = findItem(value, ((Tree) control).getItems());
     if (item != null)
       return new Object[] { item };
   }
   if (typeName.equals("[Lorg.eclipse.swt.widgets.TreeItem;")) {
     String[] values = value.split(",");
     TreeItem[] items = new TreeItem[values.length];
     for (int i = 0; i < values.length; i++) {
       TreeItem item = findItem(values[i], ((Tree) control).getItems());
       if (item == null)
         break;
       items[i] = item;
     }
     return new Object[] { items };
   }
   return super.parameterForType(typeName, value, control);
 }
 TreeItem findItem(String value, TreeItem[] items) {
   for (int i = 0; i < items.length; i++) {
     TreeItem item = items[i];
     if (item.getText().equals(value))
       return item;
     item = findItem(value, item.getItems());
     if (item != null)
       return item;
   }
   return null;
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Tree";
 }
 void packColumns(Tree tree) {
   if (multipleColumns.getSelection()) {
     int columnCount = tree.getColumnCount();
     for (int i = 0; i < columnCount; i++) {
       TreeColumn treeColumn = tree.getColumn(i);
       treeColumn.pack();
     }
   }
 }
 /**
  * Sets the foreground color, background color, and font of the "Example"
  * widgets to their default settings. Also sets foreground and background
  * color of the Node 1 TreeItems to default settings.
  */
 void resetColorsAndFonts() {
   super.resetColorsAndFonts();
   Color oldColor = itemForegroundColor;
   itemForegroundColor = null;
   setItemForeground();
   if (oldColor != null)
     oldColor.dispose();
   oldColor = itemBackgroundColor;
   itemBackgroundColor = null;
   setItemBackground();
   if (oldColor != null)
     oldColor.dispose();
   Font oldFont = font;
   itemFont = null;
   setItemFont();
   setExampleWidgetSize();
   if (oldFont != null)
     oldFont.dispose();
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   setItemBackground();
   setItemForeground();
   setItemFont();
   setExampleWidgetSize();
   setWidgetHeaderVisible();
   setWidgetLinesVisible();
   checkButton.setSelection((tree1.getStyle() & SWT.CHECK) != 0);
   checkButton.setSelection((tree2.getStyle() & SWT.CHECK) != 0);
   fullSelectionButton
       .setSelection((tree1.getStyle() & SWT.FULL_SELECTION) != 0);
   fullSelectionButton
       .setSelection((tree2.getStyle() & SWT.FULL_SELECTION) != 0);
 }
 /**
  * Sets the background color of the Node 1 TreeItems.
  */
 void setItemBackground() {
   textNode1.setBackground(itemBackgroundColor);
   imageNode1.setBackground(itemBackgroundColor);
   /* Set the background button"s color to match the color just set. */
   Color color = itemBackgroundColor;
   if (color == null)
     color = textNode1.getBackground();
   drawImage(itemBackgroundImage, color);
   itemBackgroundButton.setImage(itemBackgroundImage);
 }
 /**
  * Sets the foreground color of the Node 1 TreeItems.
  */
 void setItemForeground() {
   textNode1.setForeground(itemForegroundColor);
   imageNode1.setForeground(itemForegroundColor);
   /* Set the foreground button"s color to match the color just set. */
   Color color = itemForegroundColor;
   if (color == null)
     color = textNode1.getForeground();
   drawImage(itemForegroundImage, color);
   itemForegroundButton.setImage(itemForegroundImage);
 }
 /**
  * Sets the font of the Node 1 TreeItems.
  */
 void setItemFont() {
   if (instance.startup)
     return;
   textNode1.setFont(itemFont);
   imageNode1.setFont(itemFont);
 }
 /**
  * Sets the header visible state of the "Example" widgets.
  */
 void setWidgetHeaderVisible() {
   tree1.setHeaderVisible(headerVisibleButton.getSelection());
   tree2.setHeaderVisible(headerVisibleButton.getSelection());
 }
 /**
  * Sets the lines visible state of the "Example" widgets.
  */
 void setWidgetLinesVisible() {
   tree1.setLinesVisible(linesVisibleButton.getSelection());
   tree2.setLinesVisible(linesVisibleButton.getSelection());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ToolBarTab extends Tab {

 /* Example widgets and groups that contain them */
 ToolBar imageToolBar, textToolBar, imageTextToolBar;
 Group imageToolBarGroup, textToolBarGroup, imageTextToolBarGroup;
 /* Style widgets added to the "Style" group */
 Button horizontalButton, verticalButton, flatButton, shadowOutButton,
     wrapButton, rightButton;
 /* Other widgets added to the "Other" group */
 Button comboChildButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ToolBarTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the image tool bar */
   imageToolBarGroup = new Group(exampleGroup, SWT.NONE);
   imageToolBarGroup.setLayout(new GridLayout());
   imageToolBarGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   imageToolBarGroup.setText(ControlExample
       .getResourceString("Image_ToolBar"));
   /* Create a group for the text tool bar */
   textToolBarGroup = new Group(exampleGroup, SWT.NONE);
   textToolBarGroup.setLayout(new GridLayout());
   textToolBarGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   textToolBarGroup.setText(ControlExample
       .getResourceString("Text_ToolBar"));
   /* Create a group for the image and text tool bar */
   imageTextToolBarGroup = new Group(exampleGroup, SWT.NONE);
   imageTextToolBarGroup.setLayout(new GridLayout());
   imageTextToolBarGroup.setLayoutData(new GridData(
       GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   imageTextToolBarGroup.setText(ControlExample
       .getResourceString("ImageText_ToolBar"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (horizontalButton.getSelection())
     style |= SWT.HORIZONTAL;
   if (verticalButton.getSelection())
     style |= SWT.VERTICAL;
   if (flatButton.getSelection())
     style |= SWT.FLAT;
   if (wrapButton.getSelection())
     style |= SWT.WRAP;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (shadowOutButton.getSelection())
     style |= SWT.SHADOW_OUT;
   if (rightButton.getSelection())
     style |= SWT.RIGHT;
   /*
    * Create the example widgets.
    * 
    * A tool bar must consist of all image tool items or all text tool
    * items but not both.
    */
   /* Create the image tool bar */
   imageToolBar = new ToolBar(imageToolBarGroup, style);
   ToolItem item = new ToolItem(imageToolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(imageToolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(imageToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageToolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(imageToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageToolBar, SWT.SEPARATOR);
   item.setToolTipText("SWT.SEPARATOR");
   if (comboChildButton.getSelection()) {
     Combo combo = new Combo(imageToolBar, SWT.NONE);
     combo.setItems(new String[] { "250", "500", "750" });
     combo.setText(combo.getItem(0));
     combo.pack();
     item.setWidth(combo.getSize().x);
     item.setControl(combo);
   }
   item = new ToolItem(imageToolBar, SWT.DROP_DOWN);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setToolTipText("SWT.DROP_DOWN");
   item.addSelectionListener(new DropDownSelectionListener());
   /* Create the text tool bar */
   textToolBar = new ToolBar(textToolBarGroup, style);
   item = new ToolItem(textToolBar, SWT.PUSH);
   item.setText(ControlExample.getResourceString("Push"));
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(textToolBar, SWT.PUSH);
   item.setText(ControlExample.getResourceString("Push"));
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(textToolBar, SWT.RADIO);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(textToolBar, SWT.RADIO);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(textToolBar, SWT.CHECK);
   item.setText(ControlExample.getResourceString("Check"));
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(textToolBar, SWT.RADIO);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(textToolBar, SWT.RADIO);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(textToolBar, SWT.SEPARATOR);
   item.setToolTipText("SWT.SEPARATOR");
   if (comboChildButton.getSelection()) {
     Combo combo = new Combo(textToolBar, SWT.NONE);
     combo.setItems(new String[] { "250", "500", "750" });
     combo.setText(combo.getItem(0));
     combo.pack();
     item.setWidth(combo.getSize().x);
     item.setControl(combo);
   }
   item = new ToolItem(textToolBar, SWT.DROP_DOWN);
   item.setText(ControlExample.getResourceString("Drop_Down"));
   item.setToolTipText("SWT.DROP_DOWN");
   item.addSelectionListener(new DropDownSelectionListener());
   /* Create the image and text tool bar */
   imageTextToolBar = new ToolBar(imageTextToolBarGroup, style);
   item = new ToolItem(imageTextToolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setText(ControlExample.getResourceString("Push"));
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(imageTextToolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setText(ControlExample.getResourceString("Push"));
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(imageTextToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageTextToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageTextToolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setText(ControlExample.getResourceString("Check"));
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(imageTextToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageTextToolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setText(ControlExample.getResourceString("Radio"));
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(imageTextToolBar, SWT.SEPARATOR);
   item.setToolTipText("SWT.SEPARATOR");
   if (comboChildButton.getSelection()) {
     Combo combo = new Combo(imageTextToolBar, SWT.NONE);
     combo.setItems(new String[] { "250", "500", "750" });
     combo.setText(combo.getItem(0));
     combo.pack();
     item.setWidth(combo.getSize().x);
     item.setControl(combo);
   }
   item = new ToolItem(imageTextToolBar, SWT.DROP_DOWN);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setText(ControlExample.getResourceString("Drop_Down"));
   item.setToolTipText("SWT.DROP_DOWN");
   item.addSelectionListener(new DropDownSelectionListener());
   /*
    * Do not add the selection event for this drop down tool item. Without
    * hooking the event, the drop down widget does nothing special when the
    * drop down area is selected.
    */
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   comboChildButton = new Button(otherGroup, SWT.CHECK);
   comboChildButton.setText(ControlExample
       .getResourceString("Combo_child"));
   /* Add the listeners */
   comboChildButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       recreateExampleWidgets();
     }
   });
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   horizontalButton = new Button(styleGroup, SWT.RADIO);
   horizontalButton.setText("SWT.HORIZONTAL");
   verticalButton = new Button(styleGroup, SWT.RADIO);
   verticalButton.setText("SWT.VERTICAL");
   flatButton = new Button(styleGroup, SWT.CHECK);
   flatButton.setText("SWT.FLAT");
   shadowOutButton = new Button(styleGroup, SWT.CHECK);
   shadowOutButton.setText("SWT.SHADOW_OUT");
   wrapButton = new Button(styleGroup, SWT.CHECK);
   wrapButton.setText("SWT.WRAP");
   rightButton = new Button(styleGroup, SWT.CHECK);
   rightButton.setText("SWT.RIGHT");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
 }
 void disposeExampleWidgets() {
   super.disposeExampleWidgets();
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   Item[] imageToolBarItems = imageToolBar.getItems();
   Item[] textToolBarItems = textToolBar.getItems();
   Item[] imageTextToolBarItems = imageTextToolBar.getItems();
   Item[] allItems = new Item[imageToolBarItems.length
       + textToolBarItems.length + imageTextToolBarItems.length];
   System.arraycopy(imageToolBarItems, 0, allItems, 0,
       imageToolBarItems.length);
   System.arraycopy(textToolBarItems, 0, allItems,
       imageToolBarItems.length, textToolBarItems.length);
   System.arraycopy(imageTextToolBarItems, 0, allItems,
       imageToolBarItems.length + textToolBarItems.length,
       imageTextToolBarItems.length);
   return allItems;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { imageToolBar, textToolBar, imageTextToolBar };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "ToolBar";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   horizontalButton
       .setSelection((imageToolBar.getStyle() & SWT.HORIZONTAL) != 0);
   verticalButton
       .setSelection((imageToolBar.getStyle() & SWT.VERTICAL) != 0);
   flatButton.setSelection((imageToolBar.getStyle() & SWT.FLAT) != 0);
   wrapButton.setSelection((imageToolBar.getStyle() & SWT.WRAP) != 0);
   shadowOutButton
       .setSelection((imageToolBar.getStyle() & SWT.SHADOW_OUT) != 0);
   borderButton.setSelection((imageToolBar.getStyle() & SWT.BORDER) != 0);
   rightButton.setSelection((imageToolBar.getStyle() & SWT.RIGHT) != 0);
 }
 /**
  * Listens to widgetSelected() events on SWT.DROP_DOWN type ToolItems and
  * opens/closes a menu when appropriate.
  */
 class DropDownSelectionListener extends SelectionAdapter {
   private Menu menu = null;
   private boolean visible = false;
   public void widgetSelected(SelectionEvent event) {
     // Create the menu if it has not already been created
     if (menu == null) {
       // Lazy create the menu.
       Shell shell = tabFolderPage.getShell();
       menu = new Menu(shell);
       for (int i = 0; i < 9; ++i) {
         final String text = ControlExample
             .getResourceString("DropDownData_" + i);
         if (text.length() != 0) {
           MenuItem menuItem = new MenuItem(menu, SWT.NONE);
           menuItem.setText(text);
           /*
            * Add a menu selection listener so that the menu is
            * hidden when the user selects an item from the drop
            * down menu.
            */
           menuItem.addSelectionListener(new SelectionAdapter() {
             public void widgetSelected(SelectionEvent e) {
               setMenuVisible(false);
             }
           });
         } else {
           new MenuItem(menu, SWT.SEPARATOR);
         }
       }
     }
     /**
      * A selection event will be fired when a drop down tool item is
      * selected in the main area and in the drop down arrow. Examine the
      * event detail to determine where the widget was selected.
      */
     if (event.detail == SWT.ARROW) {
       /*
        * The drop down arrow was selected.
        */
       if (visible) {
         // Hide the menu to give the Arrow the appearance of being a
         // toggle button.
         setMenuVisible(false);
       } else {
         // Position the menu below and vertically aligned with the
         // the drop down tool button.
         final ToolItem toolItem = (ToolItem) event.widget;
         final ToolBar toolBar = toolItem.getParent();
         Rectangle toolItemBounds = toolItem.getBounds();
         Point point = toolBar.toDisplay(new Point(toolItemBounds.x,
             toolItemBounds.y));
         menu.setLocation(point.x, point.y + toolItemBounds.height);
         setMenuVisible(true);
       }
     } else {
       /*
        * Main area of drop down tool item selected. An application
        * would invoke the code to perform the action for the tool
        * item.
        */
     }
   }
   private void setMenuVisible(boolean visible) {
     menu.setVisible(visible);
     this.visible = visible;
   }
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class TextTab extends ScrollableTab {

 /* Example widgets and groups that contain them */
 Text text;
 Group textGroup;
 /* Style widgets added to the "Style" group */
 Button wrapButton, readOnlyButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 TextTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the text widget */
   textGroup = new Group(exampleGroup, SWT.NONE);
   textGroup.setLayout(new GridLayout());
   textGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   textGroup.setText("Text");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (singleButton.getSelection())
     style |= SWT.SINGLE;
   if (multiButton.getSelection())
     style |= SWT.MULTI;
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (wrapButton.getSelection())
     style |= SWT.WRAP;
   if (readOnlyButton.getSelection())
     style |= SWT.READ_ONLY;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   text = new Text(textGroup, style);
   text.setText(ControlExample.getResourceString("Example_string")
       + Text.DELIMITER
       + ControlExample.getResourceString("One_Two_Three"));
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   wrapButton = new Button(styleGroup, SWT.CHECK);
   wrapButton.setText("SWT.WRAP");
   readOnlyButton = new Button(styleGroup, SWT.CHECK);
   readOnlyButton.setText("SWT.READ_ONLY");
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   super.createTabFolderPage(tabFolder);
   /*
    * Add a resize listener to the tabFolderPage so that if the user types
    * into the example widget to change its preferred size, and then
    * resizes the shell, we recalculate the preferred size correctly.
    */
   tabFolderPage.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent e) {
       setExampleWidgetSize();
     }
   });
   return tabFolderPage;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { text };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "DoubleClickEnabled", "EchoChar", "Editable",
       "Orientation", "Selection", "Tabs", "Text", "TextLimit",
       "TopIndex" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Text";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   wrapButton.setSelection((text.getStyle() & SWT.WRAP) != 0);
   readOnlyButton.setSelection((text.getStyle() & SWT.READ_ONLY) != 0);
   wrapButton.setEnabled((text.getStyle() & SWT.MULTI) != 0);
   horizontalButton.setEnabled((text.getStyle() & SWT.MULTI) != 0);
   verticalButton.setEnabled((text.getStyle() & SWT.MULTI) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class TableTab extends ScrollableTab {

 /* Example widgets and groups that contain them */
 Table table1;
 Group tableGroup, itemGroup;
 /* Style widgets added to the "Style" group */
 Button checkButton, fullSelectionButton, hideSelectionButton;
 /* Other widgets added to the "Other" group */
 Button multipleColumns, moveableColumns, headerVisibleButton,
     linesVisibleButton;
 /* Controls and resources added to the "Colors" group */
 Button itemForegroundButton, itemBackgroundButton, itemFontButton;
 Color itemForegroundColor, itemBackgroundColor;
 Image itemForegroundImage, itemBackgroundImage;
 Font itemFont;
 static String[] columnTitles = {
     ControlExample.getResourceString("TableTitle_0"),
     ControlExample.getResourceString("TableTitle_1"),
     ControlExample.getResourceString("TableTitle_2"),
     ControlExample.getResourceString("TableTitle_3") };
 static String[][] tableData = {
     { ControlExample.getResourceString("TableLine0_0"),
         ControlExample.getResourceString("TableLine0_1"),
         ControlExample.getResourceString("TableLine0_2"),
         ControlExample.getResourceString("TableLine0_3") },
     { ControlExample.getResourceString("TableLine1_0"),
         ControlExample.getResourceString("TableLine1_1"),
         ControlExample.getResourceString("TableLine1_2"),
         ControlExample.getResourceString("TableLine1_3") },
     { ControlExample.getResourceString("TableLine2_0"),
         ControlExample.getResourceString("TableLine2_1"),
         ControlExample.getResourceString("TableLine2_2"),
         ControlExample.getResourceString("TableLine2_3") } };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 TableTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Colors" group.
  */
 void createColorGroup() {
   super.createColorGroup();
   itemGroup = new Group(colorGroup, SWT.NONE);
   itemGroup
       .setText(ControlExample.getResourceString("Table_Item_Colors"));
   GridData data = new GridData();
   data.horizontalSpan = 2;
   itemGroup.setLayoutData(data);
   itemGroup.setLayout(new GridLayout(2, false));
   new Label(itemGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Foreground_Color"));
   itemForegroundButton = new Button(itemGroup, SWT.PUSH);
   new Label(itemGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Background_Color"));
   itemBackgroundButton = new Button(itemGroup, SWT.PUSH);
   itemFontButton = new Button(itemGroup, SWT.PUSH);
   itemFontButton.setText(ControlExample.getResourceString("Font"));
   itemFontButton.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL));
   Shell shell = colorGroup.getShell();
   final ColorDialog foregroundDialog = new ColorDialog(shell);
   final ColorDialog backgroundDialog = new ColorDialog(shell);
   final FontDialog fontDialog = new FontDialog(shell);
   int imageSize = 12;
   Display display = shell.getDisplay();
   itemForegroundImage = new Image(display, imageSize, imageSize);
   itemBackgroundImage = new Image(display, imageSize, imageSize);
   /* Add listeners to set the colors and font */
   itemForegroundButton.setImage(itemForegroundImage);
   itemForegroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = itemForegroundColor;
       if (oldColor == null)
         oldColor = table1.getItem(0).getForeground();
       foregroundDialog.setRGB(oldColor.getRGB());
       RGB rgb = foregroundDialog.open();
       if (rgb == null)
         return;
       oldColor = itemForegroundColor;
       itemForegroundColor = new Color(event.display, rgb);
       setItemForeground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   itemBackgroundButton.setImage(itemBackgroundImage);
   itemBackgroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = itemBackgroundColor;
       if (oldColor == null)
         oldColor = table1.getItem(0).getBackground();
       backgroundDialog.setRGB(oldColor.getRGB());
       RGB rgb = backgroundDialog.open();
       if (rgb == null)
         return;
       oldColor = itemBackgroundColor;
       itemBackgroundColor = new Color(event.display, rgb);
       setItemBackground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   itemFontButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Font oldFont = itemFont;
       if (oldFont == null)
         oldFont = table1.getItem(0).getFont();
       fontDialog.setFontList(oldFont.getFontData());
       FontData fontData = fontDialog.open();
       if (fontData == null)
         return;
       oldFont = itemFont;
       itemFont = new Font(event.display, fontData);
       setItemFont();
       setExampleWidgetSize();
       if (oldFont != null)
         oldFont.dispose();
     }
   });
   shell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent event) {
       if (itemBackgroundImage != null)
         itemBackgroundImage.dispose();
       if (itemForegroundImage != null)
         itemForegroundImage.dispose();
       if (itemBackgroundColor != null)
         itemBackgroundColor.dispose();
       if (itemForegroundColor != null)
         itemForegroundColor.dispose();
       if (itemFont != null)
         itemFont.dispose();
       itemBackgroundColor = null;
       itemForegroundColor = null;
       itemFont = null;
     }
   });
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   headerVisibleButton = new Button(otherGroup, SWT.CHECK);
   headerVisibleButton.setText(ControlExample
       .getResourceString("Header_Visible"));
   multipleColumns = new Button(otherGroup, SWT.CHECK);
   multipleColumns.setText(ControlExample
       .getResourceString("Multiple_Columns"));
   multipleColumns.setSelection(true);
   moveableColumns = new Button(otherGroup, SWT.CHECK);
   moveableColumns.setText(ControlExample
       .getResourceString("Moveable_Columns"));
   moveableColumns.setSelection(false);
   linesVisibleButton = new Button(otherGroup, SWT.CHECK);
   linesVisibleButton.setText(ControlExample
       .getResourceString("Lines_Visible"));
   /* Add the listeners */
   headerVisibleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetHeaderVisible();
     }
   });
   multipleColumns.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       recreateExampleWidgets();
     }
   });
   moveableColumns.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setColumnsMoveable();
     }
   });
   linesVisibleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetLinesVisible();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the table */
   tableGroup = new Group(exampleGroup, SWT.NONE);
   tableGroup.setLayout(new GridLayout());
   tableGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   tableGroup.setText("Table");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (singleButton.getSelection())
     style |= SWT.SINGLE;
   if (multiButton.getSelection())
     style |= SWT.MULTI;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (checkButton.getSelection())
     style |= SWT.CHECK;
   if (fullSelectionButton.getSelection())
     style |= SWT.FULL_SELECTION;
   if (hideSelectionButton.getSelection())
     style |= SWT.HIDE_SELECTION;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the table widget */
   table1 = new Table(tableGroup, style);
   /* Fill the table with data */
   if (multipleColumns.getSelection()) {
     for (int i = 0; i < columnTitles.length; i++) {
       TableColumn tableColumn = new TableColumn(table1, SWT.NONE);
       tableColumn.setText(columnTitles[i]);
     }
   } else {
     new TableColumn(table1, SWT.NONE);
   }
   setColumnsMoveable();
   for (int i = 0; i < 16; i++) {
     TableItem item = new TableItem(table1, SWT.NONE);
     item.setImage(instance.images[i % 3]);
     setItemText(item, i, ControlExample.getResourceString("Index") + i);
   }
   packColumns();
 }
 void setItemText(TableItem item, int i, String node) {
   int index = i % 3;
   if (multipleColumns.getSelection()) {
     tableData[index][0] = node;
     item.setText(tableData[index]);
   } else {
     item.setText(node);
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   checkButton = new Button(styleGroup, SWT.CHECK);
   checkButton.setText("SWT.CHECK");
   fullSelectionButton = new Button(styleGroup, SWT.CHECK);
   fullSelectionButton.setText("SWT.FULL_SELECTION");
   hideSelectionButton = new Button(styleGroup, SWT.CHECK);
   hideSelectionButton.setText("SWT.HIDE_SELECTION");
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   Item[] columns = table1.getColumns();
   Item[] items = table1.getItems();
   Item[] allItems = new Item[columns.length + items.length];
   System.arraycopy(columns, 0, allItems, 0, columns.length);
   System.arraycopy(items, 0, allItems, columns.length, items.length);
   return allItems;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { table1 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "ItemCount", "Selection", "SelectionIndex",
       "TopIndex" };
 }
 String setMethodName(String methodRoot) {
   /*
    * Override to handle special case of int
    * getSelectionIndex()/setSelection(int)
    */
   return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set"
       + methodRoot;
 }
 Object[] parameterForType(String typeName, String value, Control control) {
   if (value.equals(""))
     return new Object[] { new TableItem[0] }; // bug in Table?
   if (typeName.equals("org.eclipse.swt.widgets.TableItem")) {
     TableItem item = findItem(value, ((Table) control).getItems());
     if (item != null)
       return new Object[] { item };
   }
   if (typeName.equals("[Lorg.eclipse.swt.widgets.TableItem;")) {
     String[] values = value.split(",");
     TableItem[] items = new TableItem[values.length];
     for (int i = 0; i < values.length; i++) {
       items[i] = findItem(values[i], ((Table) control).getItems());
     }
     return new Object[] { items };
   }
   return super.parameterForType(typeName, value, control);
 }
 TableItem findItem(String value, TableItem[] items) {
   for (int i = 0; i < items.length; i++) {
     TableItem item = items[i];
     if (item.getText().equals(value))
       return item;
   }
   return null;
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Table";
 }
 /**
  * Sets the foreground color, background color, and font of the "Example"
  * widgets to their default settings. Also sets foreground and background
  * color of TableItem [0] to default settings.
  */
 void resetColorsAndFonts() {
   super.resetColorsAndFonts();
   Color oldColor = itemForegroundColor;
   itemForegroundColor = null;
   setItemForeground();
   if (oldColor != null)
     oldColor.dispose();
   oldColor = itemBackgroundColor;
   itemBackgroundColor = null;
   setItemBackground();
   if (oldColor != null)
     oldColor.dispose();
   Font oldFont = font;
   itemFont = null;
   setItemFont();
   setExampleWidgetSize();
   if (oldFont != null)
     oldFont.dispose();
 }
 /**
  * Sets the background color of TableItem [0].
  */
 void setItemBackground() {
   table1.getItem(0).setBackground(itemBackgroundColor);
   /* Set the background button"s color to match the color just set. */
   Color color = itemBackgroundColor;
   if (color == null)
     color = table1.getItem(0).getBackground();
   drawImage(itemBackgroundImage, color);
   itemBackgroundButton.setImage(itemBackgroundImage);
 }
 /**
  * Sets the foreground color of TableItem [0].
  */
 void setItemForeground() {
   table1.getItem(0).setForeground(itemForegroundColor);
   /* Set the foreground button"s color to match the color just set. */
   Color color = itemForegroundColor;
   if (color == null)
     color = table1.getItem(0).getForeground();
   drawImage(itemForegroundImage, color);
   itemForegroundButton.setImage(itemForegroundImage);
 }
 /**
  * Sets the font of TableItem 0.
  */
 void setItemFont() {
   if (instance.startup)
     return;
   table1.getItem(0).setFont(itemFont);
   packColumns();
 }
 /**
  * Sets the font of the "Example" widgets.
  */
 void setExampleWidgetFont() {
   super.setExampleWidgetFont();
   packColumns();
 }
 void packColumns() {
   int columnCount = table1.getColumnCount();
   for (int i = 0; i < columnCount; i++) {
     TableColumn tableColumn = table1.getColumn(i);
     tableColumn.pack();
   }
 }
 /**
  * Sets the moveable columns state of the "Example" widgets.
  */
 void setColumnsMoveable() {
   boolean selection = moveableColumns.getSelection();
   TableColumn[] columns = table1.getColumns();
   for (int i = 0; i < columns.length; i++) {
     columns[i].setMoveable(selection);
   }
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   setItemBackground();
   setItemForeground();
   setItemFont();
   setExampleWidgetSize();
   setWidgetHeaderVisible();
   setWidgetLinesVisible();
   checkButton.setSelection((table1.getStyle() & SWT.CHECK) != 0);
   fullSelectionButton
       .setSelection((table1.getStyle() & SWT.FULL_SELECTION) != 0);
   hideSelectionButton
       .setSelection((table1.getStyle() & SWT.HIDE_SELECTION) != 0);
 }
 /**
  * Sets the header visible state of the "Example" widgets.
  */
 void setWidgetHeaderVisible() {
   table1.setHeaderVisible(headerVisibleButton.getSelection());
 }
 /**
  * Sets the lines visible state of the "Example" widgets.
  */
 void setWidgetLinesVisible() {
   table1.setLinesVisible(linesVisibleButton.getSelection());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class TabFolderTab extends Tab {

 /* Example widgets and groups that contain them */
 TabFolder tabFolder1;
 Group tabFolderGroup;
 /* Style widgets added to the "Style" group */
 Button topButton, bottomButton;
 static String[] TabItems1 = {
     ControlExample.getResourceString("TabItem1_0"),
     ControlExample.getResourceString("TabItem1_1"),
     ControlExample.getResourceString("TabItem1_2") };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 TabFolderTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the TabFolder */
   tabFolderGroup = new Group(exampleGroup, SWT.NONE);
   tabFolderGroup.setLayout(new GridLayout());
   tabFolderGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   tabFolderGroup.setText("TabFolder");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (topButton.getSelection())
     style |= SWT.TOP;
   if (bottomButton.getSelection())
     style |= SWT.BOTTOM;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   tabFolder1 = new TabFolder(tabFolderGroup, style);
   for (int i = 0; i < TabItems1.length; i++) {
     TabItem item = new TabItem(tabFolder1, SWT.NONE);
     item.setText(TabItems1[i]);
     Text content = new Text(tabFolder1, SWT.WRAP | SWT.MULTI);
     content.setText(ControlExample.getResourceString("TabItem_content")
         + ": " + i);
     item.setControl(content);
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   topButton = new Button(styleGroup, SWT.RADIO);
   topButton.setText("SWT.TOP");
   topButton.setSelection(true);
   bottomButton = new Button(styleGroup, SWT.RADIO);
   bottomButton.setText("SWT.BOTTOM");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if (!((Button) event.widget).getSelection())
         return;
       recreateExampleWidgets();
     }
   };
   topButton.addSelectionListener(selectionListener);
   bottomButton.addSelectionListener(selectionListener);
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   return tabFolder1.getItems();
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { tabFolder1 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Selection", "SelectionIndex" };
 }
 String setMethodName(String methodRoot) {
   /*
    * Override to handle special case of int
    * getSelectionIndex()/setSelection(int)
    */
   return (methodRoot.equals("SelectionIndex")) ? "setSelection" : "set"
       + methodRoot;
 }
 Object[] parameterForType(String typeName, String value, Control control) {
   if (value.equals(""))
     return new Object[] { new TabItem[0] };
   if (typeName.equals("org.eclipse.swt.widgets.TabItem")) {
     TabItem item = findItem(value, ((TabFolder) control).getItems());
     if (item != null)
       return new Object[] { item };
   }
   if (typeName.equals("[Lorg.eclipse.swt.widgets.TabItem;")) {
     String[] values = value.split(",");
     TabItem[] items = new TabItem[values.length];
     for (int i = 0; i < values.length; i++) {
       items[i] = findItem(values[i], ((TabFolder) control).getItems());
     }
     return new Object[] { items };
   }
   return super.parameterForType(typeName, value, control);
 }
 TabItem findItem(String value, TabItem[] items) {
   for (int i = 0; i < items.length; i++) {
     TabItem item = items[i];
     if (item.getText().equals(value))
       return item;
   }
   return null;
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "TabFolder";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   topButton.setSelection((tabFolder1.getStyle() & SWT.TOP) != 0);
   bottomButton.setSelection((tabFolder1.getStyle() & SWT.BOTTOM) != 0);
   borderButton.setSelection((tabFolder1.getStyle() & SWT.BORDER) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class StyledTextTab extends ScrollableTab {

 /* Example widgets and groups that contain them */
 StyledText styledText;
 Group styledTextGroup, styledTextStyleGroup;
 /* Style widgets added to the "Style" group */
 Button wrapButton, readOnlyButton, fullSelectionButton;
 /* Buttons for adding StyleRanges to StyledText */
 Button boldButton, italicButton, redButton, yellowButton, underlineButton,
     strikeoutButton;
 Image boldImage, italicImage, redImage, yellowImage, underlineImage,
     strikeoutImage;
 /* Variables for saving state. */
 StyleRange[] styleRanges;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 StyledTextTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates a bitmap image.
  */
 Image createBitmapImage(Display display, String name) {
   InputStream sourceStream = ControlExample.class
       .getResourceAsStream(name + ".bmp");
   InputStream maskStream = ControlExample.class.getResourceAsStream(name
       + "_mask.bmp");
   ImageData source = new ImageData(sourceStream);
   ImageData mask = new ImageData(maskStream);
   Image result = new Image(display, source, mask);
   try {
     sourceStream.close();
     maskStream.close();
   } catch (IOException e) {
     e.printStackTrace();
   }
   return result;
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   super.createControlWidgets();
   /* Add a group for modifying the StyledText widget */
   createStyledTextStyleGroup();
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the styled text widget */
   styledTextGroup = new Group(exampleGroup, SWT.NONE);
   styledTextGroup.setLayout(new GridLayout());
   styledTextGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   styledTextGroup.setText("StyledText");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (singleButton.getSelection())
     style |= SWT.SINGLE;
   if (multiButton.getSelection())
     style |= SWT.MULTI;
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (wrapButton.getSelection())
     style |= SWT.WRAP;
   if (readOnlyButton.getSelection())
     style |= SWT.READ_ONLY;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (fullSelectionButton.getSelection())
     style |= SWT.FULL_SELECTION;
   /* Create the example widgets */
   styledText = new StyledText(styledTextGroup, style);
   styledText.setText(ControlExample.getResourceString("Example_string"));
   styledText.append("\n");
   styledText.append(ControlExample.getResourceString("One_Two_Three"));
   if (styleRanges != null) {
     styledText.setStyleRanges(styleRanges);
     styleRanges = null;
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   wrapButton = new Button(styleGroup, SWT.CHECK);
   wrapButton.setText("SWT.WRAP");
   readOnlyButton = new Button(styleGroup, SWT.CHECK);
   readOnlyButton.setText("SWT.READ_ONLY");
   fullSelectionButton = new Button(styleGroup, SWT.CHECK);
   fullSelectionButton.setText("SWT.FULL_SELECTION");
 }
 /**
  * Creates the "StyledText Style" group.
  */
 void createStyledTextStyleGroup() {
   final Display display = controlGroup.getDisplay();
   styledTextStyleGroup = new Group(controlGroup, SWT.NONE);
   styledTextStyleGroup.setText(ControlExample
       .getResourceString("StyledText_Styles"));
   styledTextStyleGroup.setLayout(new GridLayout(7, false));
   GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
   data.horizontalSpan = 2;
   styledTextStyleGroup.setLayoutData(data);
   /* Get images */
   boldImage = createBitmapImage(display, "bold");
   italicImage = createBitmapImage(display, "italic");
   redImage = createBitmapImage(display, "red");
   yellowImage = createBitmapImage(display, "yellow");
   underlineImage = createBitmapImage(display, "underline");
   strikeoutImage = createBitmapImage(display, "strikeout");
   /* Create controls to modify the StyledText */
   Label label = new Label(styledTextStyleGroup, SWT.NONE);
   label.setText(ControlExample
       .getResourceString("StyledText_Style_Instructions"));
   data = new GridData(GridData.FILL_HORIZONTAL);
   data.horizontalSpan = 7;
   label.setLayoutData(data);
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Bold"));
   boldButton = new Button(styledTextStyleGroup, SWT.PUSH);
   boldButton.setImage(boldImage);
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Underline"));
   underlineButton = new Button(styledTextStyleGroup, SWT.PUSH);
   underlineButton.setImage(underlineImage);
   new Label(styledTextStyleGroup, SWT.NONE).setLayoutData(new GridData(
       GridData.FILL_HORIZONTAL));
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Foreground_Style"));
   redButton = new Button(styledTextStyleGroup, SWT.PUSH);
   redButton.setImage(redImage);
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Italic"));
   italicButton = new Button(styledTextStyleGroup, SWT.PUSH);
   italicButton.setImage(italicImage);
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Strikeout"));
   strikeoutButton = new Button(styledTextStyleGroup, SWT.PUSH);
   strikeoutButton.setImage(strikeoutImage);
   new Label(styledTextStyleGroup, SWT.NONE).setLayoutData(new GridData(
       GridData.FILL_HORIZONTAL));
   new Label(styledTextStyleGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Background_Style"));
   yellowButton = new Button(styledTextStyleGroup, SWT.PUSH);
   yellowButton.setImage(yellowImage);
   SelectionListener styleListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       Point sel = styledText.getSelectionRange();
       if ((sel == null) || (sel.y == 0))
         return;
       StyleRange style;
       for (int i = sel.x; i < sel.x + sel.y; i++) {
         StyleRange range = styledText.getStyleRangeAtOffset(i);
         if (range != null) {
           style = (StyleRange) range.clone();
           style.start = i;
           style.length = 1;
         } else {
           style = new StyleRange(i, 1, null, null, SWT.NORMAL);
         }
         if (e.widget == boldButton) {
           style.fontStyle ^= SWT.BOLD;
         } else if (e.widget == italicButton) {
           style.fontStyle ^= SWT.ITALIC;
         } else if (e.widget == underlineButton) {
           style.underline = !style.underline;
         } else if (e.widget == strikeoutButton) {
           style.strikeout = !style.strikeout;
         }
         styledText.setStyleRange(style);
       }
       styledText.setSelectionRange(sel.x + sel.y, 0);
     }
   };
   SelectionListener colorListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       Point sel = styledText.getSelectionRange();
       if ((sel == null) || (sel.y == 0))
         return;
       Color fg = null, bg = null;
       if (e.widget == redButton) {
         fg = display.getSystemColor(SWT.COLOR_RED);
       } else if (e.widget == yellowButton) {
         bg = display.getSystemColor(SWT.COLOR_YELLOW);
       }
       StyleRange style;
       for (int i = sel.x; i < sel.x + sel.y; i++) {
         StyleRange range = styledText.getStyleRangeAtOffset(i);
         if (range != null) {
           style = (StyleRange) range.clone();
           style.start = i;
           style.length = 1;
           style.foreground = style.foreground != null ? null : fg;
           style.background = style.background != null ? null : bg;
         } else {
           style = new StyleRange(i, 1, fg, bg, SWT.NORMAL);
         }
         styledText.setStyleRange(style);
       }
       styledText.setSelectionRange(sel.x + sel.y, 0);
     }
   };
   boldButton.addSelectionListener(styleListener);
   italicButton.addSelectionListener(styleListener);
   underlineButton.addSelectionListener(styleListener);
   strikeoutButton.addSelectionListener(styleListener);
   redButton.addSelectionListener(colorListener);
   yellowButton.addSelectionListener(colorListener);
   yellowButton.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent e) {
       boldImage.dispose();
       italicImage.dispose();
       redImage.dispose();
       yellowImage.dispose();
       underlineImage.dispose();
       strikeoutImage.dispose();
     }
   });
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   super.createTabFolderPage(tabFolder);
   /*
    * Add a resize listener to the tabFolderPage so that if the user types
    * into the example widget to change its preferred size, and then
    * resizes the shell, we recalculate the preferred size correctly.
    */
   tabFolderPage.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent e) {
       setExampleWidgetSize();
     }
   });
   return tabFolderPage;
 }
 /**
  * Disposes the "Example" widgets.
  */
 void disposeExampleWidgets() {
   /* store the state of the styledText if applicable */
   if (styledText != null) {
     styleRanges = styledText.getStyleRanges();
   }
   super.disposeExampleWidgets();
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { styledText };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "CaretOffset", "DoubleClickEnabled", "Editable",
       "HorizontalIndex", "HorizontalPixel", "Orientation",
       "Selection", "Tabs", "Text", "TextLimit", "TopIndex",
       "TopPixel", "WordWrap" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "StyledText";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   wrapButton.setSelection((styledText.getStyle() & SWT.WRAP) != 0);
   readOnlyButton
       .setSelection((styledText.getStyle() & SWT.READ_ONLY) != 0);
   fullSelectionButton
       .setSelection((styledText.getStyle() & SWT.FULL_SELECTION) != 0);
   horizontalButton.setEnabled((styledText.getStyle() & SWT.MULTI) != 0);
   verticalButton.setEnabled((styledText.getStyle() & SWT.MULTI) != 0);
   wrapButton.setEnabled((styledText.getStyle() & SWT.MULTI) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class SpinnerTab extends RangeTab {

 /* Example widgets and groups that contain them */
 Spinner spinner1;
 Group spinnerGroup;
 /* Style widgets added to the "Style" group */
 Button readOnlyButton, wrapButton;
 /* Scale widgets added to the "Control" group */
 Scale incrementScale, pageIncrementScale, digitsScale;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 SpinnerTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   super.createControlWidgets();
   createIncrementGroup();
   createPageIncrementGroup();
   createDigitsGroup();
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the spinner */
   spinnerGroup = new Group(exampleGroup, SWT.NONE);
   spinnerGroup.setLayout(new GridLayout());
   spinnerGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   spinnerGroup.setText("Spinner");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (readOnlyButton.getSelection())
     style |= SWT.READ_ONLY;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (wrapButton.getSelection())
     style |= SWT.WRAP;
   /* Create the example widgets */
   spinner1 = new Spinner(spinnerGroup, style);
 }
 /**
  * Create a group of widgets to control the maximum attribute of the example
  * widget.
  */
 void createMaximumGroup() {
   super.createMaximumGroup();
   maximumScale.setMaximum(1000);
   maximumScale.setPageIncrement(100);
 }
 /**
  * Create a group of widgets to control the selection attribute of the
  * example widget.
  */
 void createSelectionGroup() {
   super.createSelectionGroup();
   selectionScale.setMaximum(1000);
   selectionScale.setPageIncrement(100);
 }
 /**
  * Create a group of widgets to control the increment attribute of the
  * example widget.
  */
 void createIncrementGroup() {
   /* Create the group */
   Group incrementGroup = new Group(controlGroup, SWT.NONE);
   incrementGroup.setLayout(new GridLayout());
   incrementGroup.setText(ControlExample.getResourceString("Increment"));
   incrementGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   incrementScale = new Scale(incrementGroup, SWT.NONE);
   incrementScale.setMaximum(100);
   incrementScale.setSelection(1);
   incrementScale.setPageIncrement(10);
   incrementScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   incrementScale.setLayoutData(data);
   /* Add the listeners */
   incrementScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       setWidgetIncrement();
     }
   });
 }
 /**
  * Create a group of widgets to control the page increment attribute of the
  * example widget.
  */
 void createPageIncrementGroup() {
   /* Create the group */
   Group pageIncrementGroup = new Group(controlGroup, SWT.NONE);
   pageIncrementGroup.setLayout(new GridLayout());
   pageIncrementGroup.setText(ControlExample
       .getResourceString("Page_Increment"));
   pageIncrementGroup
       .setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   pageIncrementScale = new Scale(pageIncrementGroup, SWT.NONE);
   pageIncrementScale.setMaximum(100);
   pageIncrementScale.setSelection(10);
   pageIncrementScale.setPageIncrement(10);
   pageIncrementScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   pageIncrementScale.setLayoutData(data);
   /* Add the listeners */
   pageIncrementScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetPageIncrement();
     }
   });
 }
 /**
  * Create a group of widgets to control the digits attribute of the example
  * widget.
  */
 void createDigitsGroup() {
   /* Create the group */
   Group digitsGroup = new Group(controlGroup, SWT.NONE);
   digitsGroup.setLayout(new GridLayout());
   digitsGroup.setText(ControlExample.getResourceString("Digits"));
   digitsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   digitsScale = new Scale(digitsGroup, SWT.NONE);
   digitsScale.setMaximum(8);
   digitsScale.setSelection(0);
   digitsScale.setPageIncrement(10);
   digitsScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   digitsScale.setLayoutData(data);
   /* Add the listeners */
   digitsScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       setWidgetDigits();
     }
   });
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   super.createTabFolderPage(tabFolder);
   /*
    * Add a resize listener to the tabFolderPage so that if the user types
    * into the example widget to change its preferred size, and then
    * resizes the shell, we recalculate the preferred size correctly.
    */
   tabFolderPage.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent e) {
       setExampleWidgetSize();
     }
   });
   return tabFolderPage;
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   orientationButtons = false;
   super.createStyleGroup();
   /* Create the extra widgets */
   readOnlyButton = new Button(styleGroup, SWT.CHECK);
   readOnlyButton.setText("SWT.READ_ONLY");
   wrapButton = new Button(styleGroup, SWT.CHECK);
   wrapButton.setText("SWT.WRAP");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { spinner1 };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Spinner";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   readOnlyButton.setSelection((spinner1.getStyle() & SWT.READ_ONLY) != 0);
   wrapButton.setSelection((spinner1.getStyle() & SWT.WRAP) != 0);
   setWidgetIncrement();
   setWidgetPageIncrement();
   setWidgetDigits();
 }
 /**
  * Sets the increment of the "Example" widgets.
  */
 void setWidgetIncrement() {
   spinner1.setIncrement(incrementScale.getSelection());
 }
 /**
  * Sets the minimim of the "Example" widgets.
  */
 void setWidgetMaximum() {
   spinner1.setMaximum(maximumScale.getSelection());
 }
 /**
  * Sets the minimim of the "Example" widgets.
  */
 void setWidgetMinimum() {
   spinner1.setMinimum(minimumScale.getSelection());
 }
 /**
  * Sets the page increment of the "Example" widgets.
  */
 void setWidgetPageIncrement() {
   spinner1.setPageIncrement(pageIncrementScale.getSelection());
 }
 /**
  * Sets the digits of the "Example" widgets.
  */
 void setWidgetDigits() {
   spinner1.setDigits(digitsScale.getSelection());
 }
 /**
  * Sets the selection of the "Example" widgets.
  */
 void setWidgetSelection() {
   spinner1.setSelection(selectionScale.getSelection());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class SliderTab extends RangeTab {

 /* Example widgets and groups that contain them */
 Scale scale1;
 Slider slider1;
 Group sliderGroup, scaleGroup;
 /* Scale widgets added to the "Control" group */
 Scale incrementScale, pageIncrementScale, thumbScale;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 SliderTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   super.createControlWidgets();
   createThumbGroup();
   createIncrementGroup();
   createPageIncrementGroup();
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the slider */
   sliderGroup = new Group(exampleGroup, SWT.NONE);
   sliderGroup.setLayout(new GridLayout());
   sliderGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   sliderGroup.setText("Slider");
   /* Create a group for the scale */
   scaleGroup = new Group(exampleGroup, SWT.NONE);
   scaleGroup.setLayout(new GridLayout());
   scaleGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   scaleGroup.setText("Scale");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (horizontalButton.getSelection())
     style |= SWT.HORIZONTAL;
   if (verticalButton.getSelection())
     style |= SWT.VERTICAL;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   scale1 = new Scale(scaleGroup, style);
   scale1.setMaximum(100);
   scale1.setSelection(50);
   scale1.setIncrement(5);
   scale1.setPageIncrement(10);
   slider1 = new Slider(sliderGroup, style);
   slider1.setMaximum(100);
   slider1.setSelection(50);
   slider1.setIncrement(5);
   slider1.setPageIncrement(10);
   slider1.setThumb(10);
 }
 /**
  * Create a group of widgets to control the increment attribute of the
  * example widget.
  */
 void createIncrementGroup() {
   /* Create the group */
   Group incrementGroup = new Group(controlGroup, SWT.NONE);
   incrementGroup.setLayout(new GridLayout());
   incrementGroup.setText(ControlExample.getResourceString("Increment"));
   incrementGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   incrementScale = new Scale(incrementGroup, SWT.NONE);
   incrementScale.setMaximum(100);
   incrementScale.setSelection(5);
   incrementScale.setPageIncrement(10);
   incrementScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   incrementScale.setLayoutData(data);
   /* Add the listeners */
   incrementScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       setWidgetIncrement();
     }
   });
 }
 /**
  * Create a group of widgets to control the page increment attribute of the
  * example widget.
  */
 void createPageIncrementGroup() {
   /* Create the group */
   Group pageIncrementGroup = new Group(controlGroup, SWT.NONE);
   pageIncrementGroup.setLayout(new GridLayout());
   pageIncrementGroup.setText(ControlExample
       .getResourceString("Page_Increment"));
   pageIncrementGroup
       .setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   pageIncrementScale = new Scale(pageIncrementGroup, SWT.NONE);
   pageIncrementScale.setMaximum(100);
   pageIncrementScale.setSelection(10);
   pageIncrementScale.setPageIncrement(10);
   pageIncrementScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   pageIncrementScale.setLayoutData(data);
   /* Add the listeners */
   pageIncrementScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetPageIncrement();
     }
   });
 }
 /**
  * Create a group of widgets to control the thumb attribute of the example
  * widget.
  */
 void createThumbGroup() {
   /* Create the group */
   Group thumbGroup = new Group(controlGroup, SWT.NONE);
   thumbGroup.setLayout(new GridLayout());
   thumbGroup.setText(ControlExample.getResourceString("Thumb"));
   thumbGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create the scale widget */
   thumbScale = new Scale(thumbGroup, SWT.NONE);
   thumbScale.setMaximum(100);
   thumbScale.setSelection(10);
   thumbScale.setPageIncrement(10);
   thumbScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   thumbScale.setLayoutData(data);
   /* Add the listeners */
   thumbScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetThumb();
     }
   });
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { scale1, slider1 };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   if (SWT.getPlatform().equals("carbon"))
     return "S/S";
   return "Slider/Scale";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   setWidgetIncrement();
   setWidgetPageIncrement();
   setWidgetThumb();
 }
 /**
  * Sets the increment of the "Example" widgets.
  */
 void setWidgetIncrement() {
   slider1.setIncrement(incrementScale.getSelection());
   scale1.setIncrement(incrementScale.getSelection());
 }
 /**
  * Sets the minimim of the "Example" widgets.
  */
 void setWidgetMaximum() {
   slider1.setMaximum(maximumScale.getSelection());
   scale1.setMaximum(maximumScale.getSelection());
 }
 /**
  * Sets the minimim of the "Example" widgets.
  */
 void setWidgetMinimum() {
   slider1.setMinimum(minimumScale.getSelection());
   scale1.setMinimum(minimumScale.getSelection());
 }
 /**
  * Sets the page increment of the "Example" widgets.
  */
 void setWidgetPageIncrement() {
   slider1.setPageIncrement(pageIncrementScale.getSelection());
   scale1.setPageIncrement(pageIncrementScale.getSelection());
 }
 /**
  * Sets the selection of the "Example" widgets.
  */
 void setWidgetSelection() {
   slider1.setSelection(selectionScale.getSelection());
   scale1.setSelection(selectionScale.getSelection());
 }
 /**
  * Sets the thumb of the "Example" widgets.
  */
 void setWidgetThumb() {
   slider1.setThumb(thumbScale.getSelection());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

abstract class ScrollableTab extends Tab {

 /* Style widgets added to the "Style" group */
 Button singleButton, multiButton, horizontalButton, verticalButton,
     borderButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ScrollableTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   singleButton = new Button(styleGroup, SWT.RADIO);
   singleButton.setText("SWT.SINGLE");
   multiButton = new Button(styleGroup, SWT.RADIO);
   multiButton.setText("SWT.MULTI");
   horizontalButton = new Button(styleGroup, SWT.CHECK);
   horizontalButton.setText("SWT.H_SCROLL");
   horizontalButton.setSelection(true);
   verticalButton = new Button(styleGroup, SWT.CHECK);
   verticalButton.setText("SWT.V_SCROLL");
   verticalButton.setSelection(true);
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   Control[] controls = getExampleWidgets();
   if (controls.length != 0) {
     singleButton
         .setSelection((controls[0].getStyle() & SWT.SINGLE) != 0);
     multiButton.setSelection((controls[0].getStyle() & SWT.MULTI) != 0);
     horizontalButton
         .setSelection((controls[0].getStyle() & SWT.H_SCROLL) != 0);
     verticalButton
         .setSelection((controls[0].getStyle() & SWT.V_SCROLL) != 0);
     borderButton
         .setSelection((controls[0].getStyle() & SWT.BORDER) != 0);
   }
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class SashTab extends Tab {

 /* Example widgets and groups that contain them */
 Sash hSash, vSash;
 Composite sashComp;
 Group sashGroup;
 List list1, list2, list3;
 Text text;
 Button smoothButton;
 static String[] ListData0 = {
     ControlExample.getResourceString("ListData0_0"),
     ControlExample.getResourceString("ListData0_1"),
     ControlExample.getResourceString("ListData0_2"),
     ControlExample.getResourceString("ListData0_3"),
     ControlExample.getResourceString("ListData0_4"),
     ControlExample.getResourceString("ListData0_5"),
     ControlExample.getResourceString("ListData0_6"),
     ControlExample.getResourceString("ListData0_7"),
     ControlExample.getResourceString("ListData0_8") };
 static String[] ListData1 = {
     ControlExample.getResourceString("ListData1_0"),
     ControlExample.getResourceString("ListData1_1"),
     ControlExample.getResourceString("ListData1_2"),
     ControlExample.getResourceString("ListData1_3"),
     ControlExample.getResourceString("ListData1_4"),
     ControlExample.getResourceString("ListData1_5"),
     ControlExample.getResourceString("ListData1_6"),
     ControlExample.getResourceString("ListData1_7"),
     ControlExample.getResourceString("ListData1_8") };
 /* Constants */
 static final int SASH_WIDTH = 3;
 static final int SASH_LIMIT = 20;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 SashTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   exampleGroup
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
   exampleGroup.setLayout(new FillLayout());
   /* Create a group for the sash widgets */
   sashGroup = new Group(exampleGroup, SWT.NONE);
   FillLayout layout = new FillLayout();
   layout.marginHeight = layout.marginWidth = 5;
   sashGroup.setLayout(layout);
   sashGroup.setText("Sash");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /*
    * Create the page. This example does not use layouts.
    */
   sashComp = new Composite(sashGroup, SWT.BORDER);
   /* Create the list and text widgets */
   list1 = new List(sashComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
   list1.setItems(ListData0);
   list2 = new List(sashComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
   list2.setItems(ListData1);
   text = new Text(sashComp, SWT.MULTI | SWT.BORDER);
   text.setText(ControlExample.getResourceString("Multi_line"));
   /* Create the sashes */
   int style = getDefaultStyle();
   if (smoothButton.getSelection())
     style |= SWT.SMOOTH;
   vSash = new Sash(sashComp, SWT.VERTICAL | style);
   hSash = new Sash(sashComp, SWT.HORIZONTAL | style);
   /* Add the listeners */
   hSash.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Rectangle rect = vSash.getParent().getClientArea();
       event.y = Math.min(Math.max(event.y, SASH_LIMIT), rect.height
           - SASH_LIMIT);
       if (event.detail != SWT.DRAG) {
         hSash
             .setBounds(event.x, event.y, event.width,
                 event.height);
         layout();
       }
     }
   });
   vSash.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Rectangle rect = vSash.getParent().getClientArea();
       event.x = Math.min(Math.max(event.x, SASH_LIMIT), rect.width
           - SASH_LIMIT);
       if (event.detail != SWT.DRAG) {
         vSash
             .setBounds(event.x, event.y, event.width,
                 event.height);
         layout();
       }
     }
   });
   sashComp.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent event) {
       resized();
     }
   });
 }
 /**
  * Creates the "Size" group. The "Size" group contains controls that allow
  * the user to change the size of the example widgets.
  */
 void createSizeGroup() {
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   smoothButton = new Button(styleGroup, SWT.CHECK);
   smoothButton.setText("SWT.SMOOTH");
 }
 void disposeExampleWidgets() {
   sashComp.dispose();
   sashComp = null;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { hSash, vSash };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Sash";
 }
 /**
  * Layout the list and text widgets according to the new positions of the
  * sashes..events.SelectionEvent
  */
 void layout() {
   Rectangle clientArea = sashComp.getClientArea();
   Rectangle hSashBounds = hSash.getBounds();
   Rectangle vSashBounds = vSash.getBounds();
   list1.setBounds(0, 0, vSashBounds.x, hSashBounds.y);
   list2.setBounds(vSashBounds.x + vSashBounds.width, 0, clientArea.width
       - (vSashBounds.x + vSashBounds.width), hSashBounds.y);
   text.setBounds(0, hSashBounds.y + hSashBounds.height, clientArea.width,
       clientArea.height - (hSashBounds.y + hSashBounds.height));
   /**
    * If the horizontal sash has been moved then the vertical sash is
    * either too long or too short and its size must be adjusted.
    */
   vSashBounds.height = hSashBounds.y;
   vSash.setBounds(vSashBounds);
 }
 /**
  * Sets the size of the "Example" widgets.
  */
 void setExampleWidgetSize() {
   sashGroup.layout(true);
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   smoothButton.setSelection((hSash.getStyle() & SWT.SMOOTH) != 0);
 }
 /**
  * Handle the shell resized event.
  */
 void resized() {
   /* Get the client area for the shell */
   Rectangle clientArea = sashComp.getClientArea();
   /*
    * Make list 1 half the width and half the height of the tab leaving
    * room for the sash. Place list 1 in the top left quadrant of the tab.
    */
   Rectangle list1Bounds = new Rectangle(0, 0,
       (clientArea.width - SASH_WIDTH) / 2,
       (clientArea.height - SASH_WIDTH) / 2);
   list1.setBounds(list1Bounds);
   /*
    * Make list 2 half the width and half the height of the tab leaving
    * room for the sash. Place list 2 in the top right quadrant of the tab.
    */
   list2.setBounds(list1Bounds.width + SASH_WIDTH, 0, clientArea.width
       - (list1Bounds.width + SASH_WIDTH), list1Bounds.height);
   /*
    * Make the text area the full width and half the height of the tab
    * leaving room for the sash. Place the text area in the bottom half of
    * the tab.
    */
   text.setBounds(0, list1Bounds.height + SASH_WIDTH, clientArea.width,
       clientArea.height - (list1Bounds.height + SASH_WIDTH));
   /* Position the sashes */
   vSash.setBounds(list1Bounds.width, 0, SASH_WIDTH, list1Bounds.height);
   hSash.setBounds(0, list1Bounds.height, clientArea.width, SASH_WIDTH);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class SashFormTab extends Tab {

 /* Example widgets and groups that contain them */
 Group sashFormGroup;
 SashForm form;
 List list1, list2;
 Text text;
 /* Style widgets added to the "Style" group */
 Button horizontalButton, verticalButton, smoothButton;
 static String[] ListData0 = {
     ControlExample.getResourceString("ListData0_0"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_1"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_2"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_3"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_4"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_5"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_6"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData0_7") }; //$NON-NLS-1$
 static String[] ListData1 = {
     ControlExample.getResourceString("ListData1_0"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_1"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_2"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_3"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_4"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_5"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_6"), //$NON-NLS-1$
     ControlExample.getResourceString("ListData1_7") }; //$NON-NLS-1$
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 SashFormTab(ControlExample instance) {
   super(instance);
 }
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the sashform widget */
   sashFormGroup = new Group(exampleGroup, SWT.NONE);
   sashFormGroup.setLayout(new GridLayout());
   sashFormGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   sashFormGroup.setText("SashForm");
 }
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (smoothButton.getSelection())
     style |= SWT.SMOOTH;
   /* Create the example widgets */
   form = new SashForm(sashFormGroup, style);
   list1 = new List(form, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
   list1.setItems(ListData0);
   list2 = new List(form, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
   list2.setItems(ListData1);
   text = new Text(form, SWT.MULTI | SWT.BORDER);
   text.setText(ControlExample.getResourceString("Multi_line")); //$NON-NLS-1$
   form.setWeights(new int[] { 1, 1, 1 });
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   horizontalButton = new Button(styleGroup, SWT.RADIO);
   horizontalButton.setText("SWT.HORIZONTAL");
   horizontalButton.setSelection(true);
   verticalButton = new Button(styleGroup, SWT.RADIO);
   verticalButton.setText("SWT.VERTICAL");
   verticalButton.setSelection(false);
   smoothButton = new Button(styleGroup, SWT.CHECK);
   smoothButton.setText("SWT.SMOOTH");
   smoothButton.setSelection(false);
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { form };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "SashForm"; //$NON-NLS-1$
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   horizontalButton.setSelection((form.getStyle() & SWT.H_SCROLL) != 0);
   verticalButton.setSelection((form.getStyle() & SWT.V_SCROLL) != 0);
   smoothButton.setSelection((form.getStyle() & SWT.SMOOTH) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

abstract class RangeTab extends Tab {

 /* Style widgets added to the "Style" group */
 Button horizontalButton, verticalButton;
 boolean orientationButtons = true;
 /* Scale widgets added to the "Control" group */
 Scale minimumScale, selectionScale, maximumScale;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 RangeTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   /* Create controls specific to this example */
   createMinimumGroup();
   createMaximumGroup();
   createSelectionGroup();
 }
 /**
  * Create a group of widgets to control the maximum attribute of the example
  * widget.
  */
 void createMaximumGroup() {
   /* Create the group */
   Group maximumGroup = new Group(controlGroup, SWT.NONE);
   maximumGroup.setLayout(new GridLayout());
   maximumGroup.setText(ControlExample.getResourceString("Maximum"));
   maximumGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create a scale widget */
   maximumScale = new Scale(maximumGroup, SWT.NONE);
   maximumScale.setMaximum(100);
   maximumScale.setSelection(100);
   maximumScale.setPageIncrement(10);
   maximumScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   maximumScale.setLayoutData(data);
   /* Add the listeners */
   maximumScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetMaximum();
     }
   });
 }
 /**
  * Create a group of widgets to control the minimum attribute of the example
  * widget.
  */
 void createMinimumGroup() {
   /* Create the group */
   Group minimumGroup = new Group(controlGroup, SWT.NONE);
   minimumGroup.setLayout(new GridLayout());
   minimumGroup.setText(ControlExample.getResourceString("Minimum"));
   minimumGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
   /* Create a scale widget */
   minimumScale = new Scale(minimumGroup, SWT.NONE);
   minimumScale.setMaximum(100);
   minimumScale.setSelection(0);
   minimumScale.setPageIncrement(10);
   minimumScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   minimumScale.setLayoutData(data);
   /* Add the listeners */
   minimumScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetMinimum();
     }
   });
 }
 /**
  * Create a group of widgets to control the selection attribute of the
  * example widget.
  */
 void createSelectionGroup() {
   /* Create the group */
   Group selectionGroup = new Group(controlGroup, SWT.NONE);
   selectionGroup.setLayout(new GridLayout());
   GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
   selectionGroup.setLayoutData(gridData);
   selectionGroup.setText(ControlExample.getResourceString("Selection"));
   /* Create a scale widget */
   selectionScale = new Scale(selectionGroup, SWT.NONE);
   selectionScale.setMaximum(100);
   selectionScale.setSelection(50);
   selectionScale.setPageIncrement(10);
   selectionScale.setIncrement(5);
   GridData data = new GridData(GridData.FILL_HORIZONTAL);
   data.widthHint = 100;
   selectionScale.setLayoutData(data);
   /* Add the listeners */
   selectionScale.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetSelection();
     }
   });
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   if (orientationButtons) {
     horizontalButton = new Button(styleGroup, SWT.RADIO);
     horizontalButton.setText("SWT.HORIZONTAL");
     verticalButton = new Button(styleGroup, SWT.RADIO);
     verticalButton.setText("SWT.VERTICAL");
   }
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   setWidgetMinimum();
   setWidgetMaximum();
   setWidgetSelection();
   Control[] controls = getExampleWidgets();
   if (controls.length != 0) {
     if (orientationButtons) {
       horizontalButton
           .setSelection((controls[0].getStyle() & SWT.HORIZONTAL) != 0);
       verticalButton
           .setSelection((controls[0].getStyle() & SWT.VERTICAL) != 0);
     }
     borderButton
         .setSelection((controls[0].getStyle() & SWT.BORDER) != 0);
   }
 }
 /**
  * Sets the maximum of the "Example" widgets.
  */
 abstract void setWidgetMaximum();
 /**
  * Sets the minimim of the "Example" widgets.
  */
 abstract void setWidgetMinimum();
 /**
  * Sets the selection of the "Example" widgets.
  */
 abstract void setWidgetSelection();

} /*******************************************************************************

* Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ProgressBarTab extends RangeTab {

 /* Example widgets and groups that contain them */
 ProgressBar progressBar1;
 Group progressBarGroup;
 /* Style widgets added to the "Style" group */
 Button smoothButton;
 Button indeterminateButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ProgressBarTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the progress bar */
   progressBarGroup = new Group(exampleGroup, SWT.NONE);
   progressBarGroup.setLayout(new GridLayout());
   progressBarGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   progressBarGroup.setText("ProgressBar");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (horizontalButton.getSelection())
     style |= SWT.HORIZONTAL;
   if (verticalButton.getSelection())
     style |= SWT.VERTICAL;
   if (smoothButton.getSelection())
     style |= SWT.SMOOTH;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (indeterminateButton.getSelection())
     style |= SWT.INDETERMINATE;
   /* Create the example widgets */
   progressBar1 = new ProgressBar(progressBarGroup, style);
   progressBar1.setMaximum(100);
   progressBar1.setSelection(50);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   smoothButton = new Button(styleGroup, SWT.CHECK);
   smoothButton.setText("SWT.SMOOTH");
   indeterminateButton = new Button(styleGroup, SWT.CHECK);
   indeterminateButton.setText("SWT.INDETERMINATE");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { progressBar1 };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "ProgressBar";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   if (indeterminateButton.getSelection()) {
     selectionScale.setEnabled(false);
     minimumScale.setEnabled(false);
     maximumScale.setEnabled(false);
   } else {
     selectionScale.setEnabled(true);
     minimumScale.setEnabled(true);
     maximumScale.setEnabled(true);
   }
   maximumScale.setMaximum(progressBar1.getMaximum());
   smoothButton.setSelection((progressBar1.getStyle() & SWT.SMOOTH) != 0);
   indeterminateButton
       .setSelection((progressBar1.getStyle() & SWT.INDETERMINATE) != 0);
 }
 /**
  * Sets the maximum of the "Example" widgets.
  */
 void setWidgetMaximum() {
   progressBar1.setMaximum(maximumScale.getSelection());
   updateScales();
 }
 /**
  * Sets the minimim of the "Example" widgets.
  */
 void setWidgetMinimum() {
   progressBar1.setMinimum(minimumScale.getSelection());
   updateScales();
 }
 /**
  * Sets the selection of the "Example" widgets.
  */
 void setWidgetSelection() {
   progressBar1.setSelection(selectionScale.getSelection());
   updateScales();
 }
 /**
  * Update the scale widgets to reflect the actual value set on the "Example"
  * widget.
  */
 void updateScales() {
   minimumScale.setSelection(progressBar1.getMinimum());
   selectionScale.setSelection(progressBar1.getSelection());
   maximumScale.setSelection(progressBar1.getMaximum());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class MenuTab extends Tab {

 /* Widgets added to the "Menu Style", "MenuItem Style" and "Other" groups */
 Button barButton, dropDownButton, popUpButton, noRadioGroupButton,
     leftToRightButton, rightToLeftButton;
 Button checkButton, cascadeButton, pushButton, radioButton,
     separatorButton;
 Button imagesButton, acceleratorsButton, mnemonicsButton, subMenuButton,
     subSubMenuButton;
 Button createButton, closeAllButton;
 Group menuItemStyleGroup;
 /* Variables used to track the open shells */
 int shellCount = 0;
 Shell[] shells = new Shell[4];
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 MenuTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Close all the example shells.
  */
 void closeAllShells() {
   for (int i = 0; i < shellCount; i++) {
     if (shells[i] != null & !shells[i].isDisposed()) {
       shells[i].dispose();
     }
   }
   shellCount = 0;
 }
 /**
  * Handle the Create button selection event.
  * 
  * @param event
  *            org.eclipse.swt.events.SelectionEvent
  */
 public void createButtonSelected(SelectionEvent event) {
   /*
    * Remember the example shells so they can be disposed by the user.
    */
   if (shellCount >= shells.length) {
     Shell[] newShells = new Shell[shells.length + 4];
     System.arraycopy(shells, 0, newShells, 0, shells.length);
     shells = newShells;
   }
   int orientation = 0;
   if (leftToRightButton.getSelection())
     orientation |= SWT.LEFT_TO_RIGHT;
   if (rightToLeftButton.getSelection())
     orientation |= SWT.RIGHT_TO_LEFT;
   int radioBehavior = 0;
   if (noRadioGroupButton.getSelection())
     radioBehavior |= SWT.NO_RADIO_GROUP;
   /* Create the shell and menu(s) */
   Shell shell = new Shell(SWT.SHELL_TRIM | orientation);
   shells[shellCount] = shell;
   if (barButton.getSelection()) {
     /* Create menu bar. */
     Menu menuBar = new Menu(shell, SWT.BAR | radioBehavior);
     shell.setMenuBar(menuBar);
     hookListeners(menuBar);
     if (dropDownButton.getSelection() && cascadeButton.getSelection()) {
       /* Create cascade button and drop-down menu in menu bar. */
       MenuItem item = new MenuItem(menuBar, SWT.CASCADE);
       item.setText(getMenuItemText("Cascade"));
       if (imagesButton.getSelection())
         item.setImage(instance.images[ControlExample.ciOpenFolder]);
       hookListeners(item);
       Menu dropDownMenu = new Menu(shell, SWT.DROP_DOWN
           | radioBehavior);
       item.setMenu(dropDownMenu);
       hookListeners(dropDownMenu);
       /* Create various menu items, depending on selections. */
       createMenuItems(dropDownMenu, subMenuButton.getSelection(),
           subSubMenuButton.getSelection());
     }
   }
   if (popUpButton.getSelection()) {
     /* Create pop-up menu. */
     Menu popUpMenu = new Menu(shell, SWT.POP_UP | radioBehavior);
     shell.setMenu(popUpMenu);
     hookListeners(popUpMenu);
     /* Create various menu items, depending on selections. */
     createMenuItems(popUpMenu, subMenuButton.getSelection(),
         subSubMenuButton.getSelection());
   }
   /* Set the size, title and open the shell. */
   shell.setSize(300, 100);
   shell.setText(ControlExample.getResourceString("Title") + shellCount);
   shell.addPaintListener(new PaintListener() {
     public void paintControl(PaintEvent e) {
       e.gc.drawString(ControlExample
           .getResourceString("PopupMenuHere"), 20, 20);
     }
   });
   shell.open();
   shellCount++;
 }
 /**
  * Creates the "Control" group.
  */
 void createControlGroup() {
   /*
    * Create the "Control" group. This is the group on the right half of
    * each example tab. For MenuTab, it consists of the Menu style group,
    * the MenuItem style group and the "other" group.
    */
   controlGroup = new Group(tabFolderPage, SWT.NONE);
   controlGroup.setLayout(new GridLayout(2, true));
   controlGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   controlGroup.setText(ControlExample.getResourceString("Parameters"));
   /* Create a group for the menu style controls */
   styleGroup = new Group(controlGroup, SWT.NONE);
   styleGroup.setLayout(new GridLayout());
   styleGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   styleGroup.setText(ControlExample.getResourceString("Menu_Styles"));
   /* Create a group for the menu item style controls */
   menuItemStyleGroup = new Group(controlGroup, SWT.NONE);
   menuItemStyleGroup.setLayout(new GridLayout());
   menuItemStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   menuItemStyleGroup.setText(ControlExample
       .getResourceString("MenuItem_Styles"));
   /* Create a group for the "other" controls */
   otherGroup = new Group(controlGroup, SWT.NONE);
   otherGroup.setLayout(new GridLayout());
   otherGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   otherGroup.setText(ControlExample.getResourceString("Other"));
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   /* Create the menu style buttons */
   barButton = new Button(styleGroup, SWT.CHECK);
   barButton.setText("SWT.BAR");
   dropDownButton = new Button(styleGroup, SWT.CHECK);
   dropDownButton.setText("SWT.DROP_DOWN");
   popUpButton = new Button(styleGroup, SWT.CHECK);
   popUpButton.setText("SWT.POP_UP");
   noRadioGroupButton = new Button(styleGroup, SWT.CHECK);
   noRadioGroupButton.setText("SWT.NO_RADIO_GROUP");
   leftToRightButton = new Button(styleGroup, SWT.RADIO);
   leftToRightButton.setText("SWT.LEFT_TO_RIGHT");
   leftToRightButton.setSelection(true);
   rightToLeftButton = new Button(styleGroup, SWT.RADIO);
   rightToLeftButton.setText("SWT.RIGHT_TO_LEFT");
   /* Create the menu item style buttons */
   cascadeButton = new Button(menuItemStyleGroup, SWT.CHECK);
   cascadeButton.setText("SWT.CASCADE");
   checkButton = new Button(menuItemStyleGroup, SWT.CHECK);
   checkButton.setText("SWT.CHECK");
   pushButton = new Button(menuItemStyleGroup, SWT.CHECK);
   pushButton.setText("SWT.PUSH");
   radioButton = new Button(menuItemStyleGroup, SWT.CHECK);
   radioButton.setText("SWT.RADIO");
   separatorButton = new Button(menuItemStyleGroup, SWT.CHECK);
   separatorButton.setText("SWT.SEPARATOR");
   /* Create the "other" buttons */
   imagesButton = new Button(otherGroup, SWT.CHECK);
   imagesButton.setText(ControlExample.getResourceString("Images"));
   acceleratorsButton = new Button(otherGroup, SWT.CHECK);
   acceleratorsButton.setText(ControlExample
       .getResourceString("Accelerators"));
   mnemonicsButton = new Button(otherGroup, SWT.CHECK);
   mnemonicsButton.setText(ControlExample.getResourceString("Mnemonics"));
   subMenuButton = new Button(otherGroup, SWT.CHECK);
   subMenuButton.setText(ControlExample.getResourceString("SubMenu"));
   subSubMenuButton = new Button(otherGroup, SWT.CHECK);
   subSubMenuButton
       .setText(ControlExample.getResourceString("SubSubMenu"));
   /*
    * Create the "create" and "closeAll" buttons (and a "filler" label to
    * place them)
    */
   new Label(controlGroup, SWT.NONE);
   createButton = new Button(controlGroup, SWT.NONE);
   createButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
   createButton.setText(ControlExample.getResourceString("Create_Shell"));
   closeAllButton = new Button(controlGroup, SWT.NONE);
   closeAllButton.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_BEGINNING));
   closeAllButton.setText(ControlExample
       .getResourceString("Close_All_Shells"));
   /* Add the listeners */
   createButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       createButtonSelected(e);
     }
   });
   closeAllButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       closeAllShells();
     }
   });
   subMenuButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       subSubMenuButton.setEnabled(subMenuButton.getSelection());
     }
   });
   /* Set the default state */
   barButton.setSelection(true);
   dropDownButton.setSelection(true);
   popUpButton.setSelection(true);
   cascadeButton.setSelection(true);
   checkButton.setSelection(true);
   pushButton.setSelection(true);
   radioButton.setSelection(true);
   separatorButton.setSelection(true);
   subSubMenuButton.setEnabled(subMenuButton.getSelection());
 }
 /* Create various menu items, depending on selections. */
 void createMenuItems(Menu menu, boolean createSubMenu,
     boolean createSubSubMenu) {
   MenuItem item;
   if (pushButton.getSelection()) {
     item = new MenuItem(menu, SWT.PUSH);
     item.setText(getMenuItemText("Push"));
     if (acceleratorsButton.getSelection())
       item.setAccelerator(SWT.MOD1 + SWT.MOD2 + "P");
     if (imagesButton.getSelection())
       item.setImage(instance.images[ControlExample.ciClosedFolder]);
     hookListeners(item);
   }
   if (separatorButton.getSelection()) {
     new MenuItem(menu, SWT.SEPARATOR);
   }
   if (checkButton.getSelection()) {
     item = new MenuItem(menu, SWT.CHECK);
     item.setText(getMenuItemText("Check"));
     if (acceleratorsButton.getSelection())
       item.setAccelerator(SWT.MOD1 + SWT.MOD2 + "C");
     if (imagesButton.getSelection())
       item.setImage(instance.images[ControlExample.ciOpenFolder]);
     hookListeners(item);
   }
   if (radioButton.getSelection()) {
     item = new MenuItem(menu, SWT.RADIO);
     item.setText(getMenuItemText("1Radio"));
     if (acceleratorsButton.getSelection())
       item.setAccelerator(SWT.MOD1 + SWT.MOD2 + "1");
     if (imagesButton.getSelection())
       item.setImage(instance.images[ControlExample.ciTarget]);
     item.setSelection(true);
     hookListeners(item);
     item = new MenuItem(menu, SWT.RADIO);
     item.setText(getMenuItemText("2Radio"));
     if (acceleratorsButton.getSelection())
       item.setAccelerator(SWT.MOD1 + SWT.MOD2 + "2");
     if (imagesButton.getSelection())
       item.setImage(instance.images[ControlExample.ciTarget]);
     hookListeners(item);
   }
   if (createSubMenu && cascadeButton.getSelection()) {
     /* Create cascade button and drop-down menu for the sub-menu. */
     item = new MenuItem(menu, SWT.CASCADE);
     item.setText(getMenuItemText("Cascade"));
     if (imagesButton.getSelection())
       item.setImage(instance.images[ControlExample.ciOpenFolder]);
     hookListeners(item);
     Menu subMenu = new Menu(menu.getShell(), SWT.DROP_DOWN);
     item.setMenu(subMenu);
     hookListeners(subMenu);
     createMenuItems(subMenu, createSubSubMenu, false);
   }
 }
 String getMenuItemText(String item) {
   boolean cascade = item.equals("Cascade");
   boolean mnemonic = mnemonicsButton.getSelection();
   boolean accelerator = acceleratorsButton.getSelection();
   char acceleratorKey = item.charAt(0);
   if (mnemonic && accelerator && !cascade) {
     return ControlExample.getResourceString(item + "WithMnemonic")
         + "\tCtrl+Shift+" + acceleratorKey;
   }
   if (accelerator && !cascade) {
     return ControlExample.getResourceString(item) + "\tCtrl+Shift+"
         + acceleratorKey;
   }
   if (mnemonic) {
     return ControlExample.getResourceString(item + "WithMnemonic");
   }
   return ControlExample.getResourceString(item);
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Menu";
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ListTab extends ScrollableTab {

 /* Example widgets and groups that contain them */
 List list1;
 Group listGroup;
 static String[] ListData1 = {
     ControlExample.getResourceString("ListData1_0"),
     ControlExample.getResourceString("ListData1_1"),
     ControlExample.getResourceString("ListData1_2"),
     ControlExample.getResourceString("ListData1_3"),
     ControlExample.getResourceString("ListData1_4"),
     ControlExample.getResourceString("ListData1_5"),
     ControlExample.getResourceString("ListData1_6"),
     ControlExample.getResourceString("ListData1_7"),
     ControlExample.getResourceString("ListData1_8") };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ListTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the list */
   listGroup = new Group(exampleGroup, SWT.NONE);
   listGroup.setLayout(new GridLayout());
   listGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   listGroup.setText("List");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (singleButton.getSelection())
     style |= SWT.SINGLE;
   if (multiButton.getSelection())
     style |= SWT.MULTI;
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   list1 = new List(listGroup, style);
   list1.setItems(ListData1);
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { list1 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Items", "Selection", "TopIndex" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "List";
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class LinkTab extends Tab {

 /* Example widgets and groups that contain them */
 Link link1;
 Group linkGroup;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 LinkTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the list */
   linkGroup = new Group(exampleGroup, SWT.NONE);
   linkGroup.setLayout(new GridLayout());
   linkGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   linkGroup.setText("Link");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   try {
     link1 = new Link(linkGroup, style);
     link1.setText(ControlExample.getResourceString("LinkText"));
   } catch (SWTError e) {
     // temporary code for photon
     Label label = new Label(linkGroup, SWT.CENTER | SWT.WRAP);
     label.setText("Link widget not suported");
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   // temporary code for photon
   if (link1 != null)
     return new Control[] { link1 };
   return new Control[] {};
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Text" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Link";
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class LabelTab extends AlignableTab {

 /* Example widgets and groups that contain them */
 Label label1, label2, label3, label4, label5, label6;
 Group textLabelGroup, imageLabelGroup;
 /* Style widgets added to the "Style" group */
 Button wrapButton, separatorButton, horizontalButton, verticalButton,
     shadowInButton, shadowOutButton, shadowNoneButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 LabelTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the text labels */
   textLabelGroup = new Group(exampleGroup, SWT.NONE);
   GridLayout gridLayout = new GridLayout();
   textLabelGroup.setLayout(gridLayout);
   gridLayout.numColumns = 3;
   textLabelGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   textLabelGroup.setText(ControlExample.getResourceString("Text_Labels"));
   /* Create a group for the image labels */
   imageLabelGroup = new Group(exampleGroup, SWT.SHADOW_NONE);
   gridLayout = new GridLayout();
   imageLabelGroup.setLayout(gridLayout);
   gridLayout.numColumns = 3;
   imageLabelGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   imageLabelGroup.setText(ControlExample
       .getResourceString("Image_Labels"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (wrapButton.getSelection())
     style |= SWT.WRAP;
   if (separatorButton.getSelection())
     style |= SWT.SEPARATOR;
   if (horizontalButton.getSelection())
     style |= SWT.HORIZONTAL;
   if (verticalButton.getSelection())
     style |= SWT.VERTICAL;
   if (shadowInButton.getSelection())
     style |= SWT.SHADOW_IN;
   if (shadowOutButton.getSelection())
     style |= SWT.SHADOW_OUT;
   if (shadowNoneButton.getSelection())
     style |= SWT.SHADOW_NONE;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (leftButton.getSelection())
     style |= SWT.LEFT;
   if (centerButton.getSelection())
     style |= SWT.CENTER;
   if (rightButton.getSelection())
     style |= SWT.RIGHT;
   /* Create the example widgets */
   label1 = new Label(textLabelGroup, style);
   label1.setText(ControlExample.getResourceString("One"));
   label2 = new Label(textLabelGroup, style);
   label2.setText(ControlExample.getResourceString("Two"));
   label3 = new Label(textLabelGroup, style);
   if (wrapButton.getSelection()) {
     label3.setText(ControlExample.getResourceString("Wrap_Text"));
   } else {
     label3.setText(ControlExample.getResourceString("Three"));
   }
   label4 = new Label(imageLabelGroup, style);
   label4.setImage(instance.images[ControlExample.ciClosedFolder]);
   label5 = new Label(imageLabelGroup, style);
   label5.setImage(instance.images[ControlExample.ciOpenFolder]);
   label6 = new Label(imageLabelGroup, style);
   label6.setImage(instance.images[ControlExample.ciTarget]);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   wrapButton = new Button(styleGroup, SWT.CHECK);
   wrapButton.setText("SWT.WRAP");
   separatorButton = new Button(styleGroup, SWT.CHECK);
   separatorButton.setText("SWT.SEPARATOR");
   horizontalButton = new Button(styleGroup, SWT.RADIO);
   horizontalButton.setText("SWT.HORIZONTAL");
   verticalButton = new Button(styleGroup, SWT.RADIO);
   verticalButton.setText("SWT.VERTICAL");
   Group styleSubGroup = new Group(styleGroup, SWT.NONE);
   styleSubGroup.setLayout(new GridLayout());
   shadowInButton = new Button(styleSubGroup, SWT.RADIO);
   shadowInButton.setText("SWT.SHADOW_IN");
   shadowOutButton = new Button(styleSubGroup, SWT.RADIO);
   shadowOutButton.setText("SWT.SHADOW_OUT");
   shadowNoneButton = new Button(styleSubGroup, SWT.RADIO);
   shadowNoneButton.setText("SWT.SHADOW_NONE");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if ((event.widget.getStyle() & SWT.RADIO) != 0) {
         if (!((Button) event.widget).getSelection())
           return;
       }
       recreateExampleWidgets();
     }
   };
   shadowInButton.addSelectionListener(selectionListener);
   shadowOutButton.addSelectionListener(selectionListener);
   shadowNoneButton.addSelectionListener(selectionListener);
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { label1, label2, label3, label4, label5, label6 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Text" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Label";
 }
 /**
  * Sets the alignment of the "Example" widgets.
  */
 void setExampleWidgetAlignment() {
   int alignment = 0;
   if (leftButton.getSelection())
     alignment = SWT.LEFT;
   if (centerButton.getSelection())
     alignment = SWT.CENTER;
   if (rightButton.getSelection())
     alignment = SWT.RIGHT;
   label1.setAlignment(alignment);
   label2.setAlignment(alignment);
   label3.setAlignment(alignment);
   label4.setAlignment(alignment);
   label5.setAlignment(alignment);
   label6.setAlignment(alignment);
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   boolean isSeparator = (label1.getStyle() & SWT.SEPARATOR) != 0;
   wrapButton.setSelection(!isSeparator
       && (label1.getStyle() & SWT.WRAP) != 0);
   leftButton.setSelection(!isSeparator
       && (label1.getStyle() & SWT.LEFT) != 0);
   centerButton.setSelection(!isSeparator
       && (label1.getStyle() & SWT.CENTER) != 0);
   rightButton.setSelection(!isSeparator
       && (label1.getStyle() & SWT.RIGHT) != 0);
   shadowInButton.setSelection(isSeparator
       && (label1.getStyle() & SWT.SHADOW_IN) != 0);
   shadowOutButton.setSelection(isSeparator
       && (label1.getStyle() & SWT.SHADOW_OUT) != 0);
   shadowNoneButton.setSelection(isSeparator
       && (label1.getStyle() & SWT.SHADOW_NONE) != 0);
   horizontalButton.setSelection(isSeparator
       && (label1.getStyle() & SWT.HORIZONTAL) != 0);
   verticalButton.setSelection(isSeparator
       && (label1.getStyle() & SWT.VERTICAL) != 0);
   wrapButton.setEnabled(!isSeparator);
   leftButton.setEnabled(!isSeparator);
   centerButton.setEnabled(!isSeparator);
   rightButton.setEnabled(!isSeparator);
   shadowInButton.setEnabled(isSeparator);
   shadowOutButton.setEnabled(isSeparator);
   shadowNoneButton.setEnabled(isSeparator);
   horizontalButton.setEnabled(isSeparator);
   verticalButton.setEnabled(isSeparator);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class GroupTab extends Tab {

 Button titleButton;
 /* Example widgets and groups that contain them */
 Group group1;
 Group groupGroup;
 /* Style widgets added to the "Style" group */
 Button shadowEtchedInButton, shadowEtchedOutButton, shadowInButton,
     shadowOutButton, shadowNoneButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 GroupTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   titleButton = new Button(otherGroup, SWT.CHECK);
   titleButton.setText(ControlExample.getResourceString("Title_Text"));
   /* Add the listeners */
   titleButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setTitleText();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the Group */
   groupGroup = new Group(exampleGroup, SWT.NONE);
   groupGroup.setLayout(new GridLayout());
   groupGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   groupGroup.setText("Group");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (shadowEtchedInButton.getSelection())
     style |= SWT.SHADOW_ETCHED_IN;
   if (shadowEtchedOutButton.getSelection())
     style |= SWT.SHADOW_ETCHED_OUT;
   if (shadowInButton.getSelection())
     style |= SWT.SHADOW_IN;
   if (shadowOutButton.getSelection())
     style |= SWT.SHADOW_OUT;
   if (shadowNoneButton.getSelection())
     style |= SWT.SHADOW_NONE;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   group1 = new Group(groupGroup, style);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   shadowEtchedInButton = new Button(styleGroup, SWT.RADIO);
   shadowEtchedInButton.setText("SWT.SHADOW_ETCHED_IN");
   shadowEtchedInButton.setSelection(true);
   shadowEtchedOutButton = new Button(styleGroup, SWT.RADIO);
   shadowEtchedOutButton.setText("SWT.SHADOW_ETCHED_OUT");
   shadowInButton = new Button(styleGroup, SWT.RADIO);
   shadowInButton.setText("SWT.SHADOW_IN");
   shadowOutButton = new Button(styleGroup, SWT.RADIO);
   shadowOutButton.setText("SWT.SHADOW_OUT");
   shadowNoneButton = new Button(styleGroup, SWT.RADIO);
   shadowNoneButton.setText("SWT.SHADOW_NONE");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if (!((Button) event.widget).getSelection())
         return;
       recreateExampleWidgets();
     }
   };
   shadowEtchedInButton.addSelectionListener(selectionListener);
   shadowEtchedOutButton.addSelectionListener(selectionListener);
   shadowInButton.addSelectionListener(selectionListener);
   shadowOutButton.addSelectionListener(selectionListener);
   shadowNoneButton.addSelectionListener(selectionListener);
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { group1 };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Group";
 }
 /**
  * Sets the title text of the "Example" widgets.
  */
 void setTitleText() {
   if (titleButton.getSelection()) {
     group1.setText(ControlExample.getResourceString("Title_Text"));
   } else {
     group1.setText("");
   }
   setExampleWidgetSize();
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   shadowEtchedInButton
       .setSelection((group1.getStyle() & SWT.SHADOW_ETCHED_IN) != 0);
   shadowEtchedOutButton
       .setSelection((group1.getStyle() & SWT.SHADOW_ETCHED_OUT) != 0);
   shadowInButton.setSelection((group1.getStyle() & SWT.SHADOW_IN) != 0);
   shadowOutButton.setSelection((group1.getStyle() & SWT.SHADOW_OUT) != 0);
   shadowNoneButton
       .setSelection((group1.getStyle() & SWT.SHADOW_NONE) != 0);
   borderButton.setSelection((group1.getStyle() & SWT.BORDER) != 0);
   setTitleText();
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class DialogTab extends Tab {

 /* Example widgets and groups that contain them */
 Group dialogStyleGroup, resultGroup;
 Text textWidget;
 /* Style widgets added to the "Style" group */
 Combo dialogCombo;
 Button createButton;
 Button okButton, cancelButton;
 Button yesButton, noButton;
 Button retryButton;
 Button abortButton, ignoreButton;
 Button iconErrorButton, iconInformationButton, iconQuestionButton;
 Button iconWarningButton, iconWorkingButton;
 Button modelessButton, primaryModalButton, applicationModalButton,
     systemModalButton;
 Button saveButton, openButton, multiButton;
 static String[] FilterExtensions = { "*.txt", "*.bat", "*.doc", "*" };
 static String[] FilterNames = {
     ControlExample.getResourceString("FilterName_0"),
     ControlExample.getResourceString("FilterName_1"),
     ControlExample.getResourceString("FilterName_2"),
     ControlExample.getResourceString("FilterName_3") };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 DialogTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Handle a button style selection event.
  * 
  * @param event
  *            the selection event
  */
 void buttonStyleSelected(SelectionEvent event) {
   /*
    * Only certain combinations of button styles are supported for various
    * dialogs. Make sure the control widget reflects only valid
    * combinations.
    */
   boolean ok = okButton.getSelection();
   boolean cancel = cancelButton.getSelection();
   boolean yes = yesButton.getSelection();
   boolean no = noButton.getSelection();
   boolean abort = abortButton.getSelection();
   boolean retry = retryButton.getSelection();
   boolean ignore = ignoreButton.getSelection();
   okButton.setEnabled(!(yes || no || retry || abort || ignore));
   cancelButton.setEnabled(!(abort || ignore || (yes != no)));
   yesButton.setEnabled(!(ok || retry || abort || ignore || (cancel
       && !yes && !no)));
   noButton
       .setEnabled(!(ok || retry || abort || ignore || (cancel && !yes && !no)));
   retryButton.setEnabled(!(ok || yes || no));
   abortButton.setEnabled(!(ok || cancel || yes || no));
   ignoreButton.setEnabled(!(ok || cancel || yes || no));
   createButton
       .setEnabled(!(ok || cancel || yes || no || retry || abort || ignore)
           || ok
           || (ok && cancel)
           || (yes && no)
           || (yes && no && cancel)
           || (retry && cancel)
           || (abort && retry && ignore));
 }
 /**
  * Handle the create button selection event.
  * 
  * @param event
  *            org.eclipse.swt.events.SelectionEvent
  */
 void createButtonSelected(SelectionEvent event) {
   /* Compute the appropriate dialog style */
   int style = getDefaultStyle();
   if (okButton.getEnabled() && okButton.getSelection())
     style |= SWT.OK;
   if (cancelButton.getEnabled() && cancelButton.getSelection())
     style |= SWT.CANCEL;
   if (yesButton.getEnabled() && yesButton.getSelection())
     style |= SWT.YES;
   if (noButton.getEnabled() && noButton.getSelection())
     style |= SWT.NO;
   if (retryButton.getEnabled() && retryButton.getSelection())
     style |= SWT.RETRY;
   if (abortButton.getEnabled() && abortButton.getSelection())
     style |= SWT.ABORT;
   if (ignoreButton.getEnabled() && ignoreButton.getSelection())
     style |= SWT.IGNORE;
   if (iconErrorButton.getEnabled() && iconErrorButton.getSelection())
     style |= SWT.ICON_ERROR;
   if (iconInformationButton.getEnabled()
       && iconInformationButton.getSelection())
     style |= SWT.ICON_INFORMATION;
   if (iconQuestionButton.getEnabled()
       && iconQuestionButton.getSelection())
     style |= SWT.ICON_QUESTION;
   if (iconWarningButton.getEnabled() && iconWarningButton.getSelection())
     style |= SWT.ICON_WARNING;
   if (iconWorkingButton.getEnabled() && iconWorkingButton.getSelection())
     style |= SWT.ICON_WORKING;
   if (primaryModalButton.getEnabled()
       && primaryModalButton.getSelection())
     style |= SWT.PRIMARY_MODAL;
   if (applicationModalButton.getEnabled()
       && applicationModalButton.getSelection())
     style |= SWT.APPLICATION_MODAL;
   if (systemModalButton.getEnabled() && systemModalButton.getSelection())
     style |= SWT.SYSTEM_MODAL;
   if (saveButton.getEnabled() && saveButton.getSelection())
     style |= SWT.SAVE;
   if (openButton.getEnabled() && openButton.getSelection())
     style |= SWT.OPEN;
   if (multiButton.getEnabled() && multiButton.getSelection())
     style |= SWT.MULTI;
   /* Open the appropriate dialog type */
   String name = dialogCombo.getText();
   Shell shell = tabFolderPage.getShell();
   if (name.equals(ControlExample.getResourceString("ColorDialog"))) {
     ColorDialog dialog = new ColorDialog(shell, style);
     dialog.setRGB(new RGB(100, 100, 100));
     dialog.setText(ControlExample.getResourceString("Title"));
     RGB result = dialog.open();
     textWidget.append(ControlExample.getResourceString("ColorDialog")
         + Text.DELIMITER);
     textWidget.append(ControlExample.getResourceString("Result",
         new String[] { "" + result })
         + Text.DELIMITER + Text.DELIMITER);
     return;
   }
   if (name.equals(ControlExample.getResourceString("DirectoryDialog"))) {
     DirectoryDialog dialog = new DirectoryDialog(shell, style);
     dialog.setMessage(ControlExample
         .getResourceString("Example_string"));
     dialog.setText(ControlExample.getResourceString("Title"));
     String result = dialog.open();
     textWidget.append(ControlExample
         .getResourceString("DirectoryDialog")
         + Text.DELIMITER);
     textWidget.append(ControlExample.getResourceString("Result",
         new String[] { "" + result })
         + Text.DELIMITER + Text.DELIMITER);
     return;
   }
   if (name.equals(ControlExample.getResourceString("FileDialog"))) {
     FileDialog dialog = new FileDialog(shell, style);
     dialog.setFileName(ControlExample.getResourceString("readme_txt"));
     dialog.setFilterNames(FilterNames);
     dialog.setFilterExtensions(FilterExtensions);
     dialog.setText(ControlExample.getResourceString("Title"));
     String result = dialog.open();
     textWidget.append(ControlExample.getResourceString("FileDialog")
         + Text.DELIMITER);
     textWidget.append(ControlExample.getResourceString("Result",
         new String[] { "" + result })
         + Text.DELIMITER + Text.DELIMITER);
     return;
   }
   if (name.equals(ControlExample.getResourceString("FontDialog"))) {
     FontDialog dialog = new FontDialog(shell, style);
     dialog.setText(ControlExample.getResourceString("Title"));
     FontData result = dialog.open();
     textWidget.append(ControlExample.getResourceString("FontDialog")
         + Text.DELIMITER);
     textWidget.append(ControlExample.getResourceString("Result",
         new String[] { "" + result })
         + Text.DELIMITER + Text.DELIMITER);
     return;
   }
   if (name.equals(ControlExample.getResourceString("PrintDialog"))) {
     PrintDialog dialog = new PrintDialog(shell, style);
     dialog.setText(ControlExample.getResourceString("Title"));
     PrinterData result = dialog.open();
     textWidget.append(ControlExample.getResourceString("PrintDialog")
         + Text.DELIMITER);
     textWidget.append(ControlExample.getResourceString("Result",
         new String[] { "" + result })
         + Text.DELIMITER + Text.DELIMITER);
     return;
   }
   if (name.equals(ControlExample.getResourceString("MessageBox"))) {
     MessageBox dialog = new MessageBox(shell, style);
     dialog.setMessage(ControlExample
         .getResourceString("Example_string"));
     dialog.setText(ControlExample.getResourceString("Title"));
     int result = dialog.open();
     textWidget.append(ControlExample.getResourceString("MessageBox")
         + Text.DELIMITER);
     /*
      * The resulting integer depends on the original dialog style.
      * Decode the result and display it.
      */
     switch (result) {
     case SWT.OK:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.OK" }));
       break;
     case SWT.YES:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.YES" }));
       break;
     case SWT.NO:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.NO" }));
       break;
     case SWT.CANCEL:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.CANCEL" }));
       break;
     case SWT.ABORT:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.ABORT" }));
       break;
     case SWT.RETRY:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.RETRY" }));
       break;
     case SWT.IGNORE:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "SWT.IGNORE" }));
       break;
     default:
       textWidget.append(ControlExample.getResourceString("Result",
           new String[] { "" + result }));
       break;
     }
     textWidget.append(Text.DELIMITER + Text.DELIMITER);
   }
 }
 /**
  * Creates the "Control" group.
  */
 void createControlGroup() {
   /*
    * Create the "Control" group. This is the group on the right half of
    * each example tab. It consists of the style group, the display group
    * and the size group.
    */
   controlGroup = new Group(tabFolderPage, SWT.NONE);
   GridLayout gridLayout = new GridLayout();
   controlGroup.setLayout(gridLayout);
   gridLayout.numColumns = 2;
   gridLayout.makeColumnsEqualWidth = true;
   controlGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   controlGroup.setText(ControlExample.getResourceString("Parameters"));
   /*
    * Create a group to hold the dialog style combo box and create dialog
    * button.
    */
   dialogStyleGroup = new Group(controlGroup, SWT.NONE);
   dialogStyleGroup.setLayout(new GridLayout());
   GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
   gridData.horizontalSpan = 2;
   dialogStyleGroup.setLayoutData(gridData);
   dialogStyleGroup.setText(ControlExample
       .getResourceString("Dialog_Type"));
 }
 /**
  * Creates the "Control" widget children.
  */
 void createControlWidgets() {
   /* Create the combo */
   String[] strings = { ControlExample.getResourceString("ColorDialog"),
       ControlExample.getResourceString("DirectoryDialog"),
       ControlExample.getResourceString("FileDialog"),
       ControlExample.getResourceString("FontDialog"),
       ControlExample.getResourceString("PrintDialog"),
       ControlExample.getResourceString("MessageBox"), };
   dialogCombo = new Combo(dialogStyleGroup, SWT.READ_ONLY);
   dialogCombo.setItems(strings);
   dialogCombo.setText(strings[0]);
   dialogCombo.setVisibleItemCount(strings.length);
   /* Create the create dialog button */
   createButton = new Button(dialogStyleGroup, SWT.NONE);
   createButton.setText(ControlExample.getResourceString("Create_Dialog"));
   createButton.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_CENTER));
   /* Create a group for the various dialog button style controls */
   Group buttonStyleGroup = new Group(controlGroup, SWT.NONE);
   buttonStyleGroup.setLayout(new GridLayout());
   buttonStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   buttonStyleGroup.setText(ControlExample
       .getResourceString("Button_Styles"));
   /* Create the button style buttons */
   okButton = new Button(buttonStyleGroup, SWT.CHECK);
   okButton.setText("SWT.OK");
   cancelButton = new Button(buttonStyleGroup, SWT.CHECK);
   cancelButton.setText("SWT.CANCEL");
   yesButton = new Button(buttonStyleGroup, SWT.CHECK);
   yesButton.setText("SWT.YES");
   noButton = new Button(buttonStyleGroup, SWT.CHECK);
   noButton.setText("SWT.NO");
   retryButton = new Button(buttonStyleGroup, SWT.CHECK);
   retryButton.setText("SWT.RETRY");
   abortButton = new Button(buttonStyleGroup, SWT.CHECK);
   abortButton.setText("SWT.ABORT");
   ignoreButton = new Button(buttonStyleGroup, SWT.CHECK);
   ignoreButton.setText("SWT.IGNORE");
   /* Create a group for the icon style controls */
   Group iconStyleGroup = new Group(controlGroup, SWT.NONE);
   iconStyleGroup.setLayout(new GridLayout());
   iconStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   iconStyleGroup.setText(ControlExample.getResourceString("Icon_Styles"));
   /* Create the icon style buttons */
   iconErrorButton = new Button(iconStyleGroup, SWT.RADIO);
   iconErrorButton.setText("SWT.ICON_ERROR");
   iconInformationButton = new Button(iconStyleGroup, SWT.RADIO);
   iconInformationButton.setText("SWT.ICON_INFORMATION");
   iconQuestionButton = new Button(iconStyleGroup, SWT.RADIO);
   iconQuestionButton.setText("SWT.ICON_QUESTION");
   iconWarningButton = new Button(iconStyleGroup, SWT.RADIO);
   iconWarningButton.setText("SWT.ICON_WARNING");
   iconWorkingButton = new Button(iconStyleGroup, SWT.RADIO);
   iconWorkingButton.setText("SWT.ICON_WORKING");
   /* Create a group for the modal style controls */
   Group modalStyleGroup = new Group(controlGroup, SWT.NONE);
   modalStyleGroup.setLayout(new GridLayout());
   modalStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   modalStyleGroup.setText(ControlExample
       .getResourceString("Modal_Styles"));
   /* Create the modal style buttons */
   modelessButton = new Button(modalStyleGroup, SWT.RADIO);
   modelessButton.setText("SWT.MODELESS");
   primaryModalButton = new Button(modalStyleGroup, SWT.RADIO);
   primaryModalButton.setText("SWT.PRIMARY_MODAL");
   applicationModalButton = new Button(modalStyleGroup, SWT.RADIO);
   applicationModalButton.setText("SWT.APPLICATION_MODAL");
   systemModalButton = new Button(modalStyleGroup, SWT.RADIO);
   systemModalButton.setText("SWT.SYSTEM_MODAL");
   /* Create a group for the file dialog style controls */
   Group fileDialogStyleGroup = new Group(controlGroup, SWT.NONE);
   fileDialogStyleGroup.setLayout(new GridLayout());
   fileDialogStyleGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   fileDialogStyleGroup.setText(ControlExample
       .getResourceString("File_Dialog_Styles"));
   /* Create the file dialog style buttons */
   openButton = new Button(fileDialogStyleGroup, SWT.RADIO);
   openButton.setText("SWT.OPEN");
   saveButton = new Button(fileDialogStyleGroup, SWT.RADIO);
   saveButton.setText("SWT.SAVE");
   multiButton = new Button(fileDialogStyleGroup, SWT.CHECK);
   multiButton.setText("SWT.MULTI");
   /* Create the orientation group */
   if (RTL_SUPPORT_ENABLE) {
     createOrientationGroup();
   }
   /* Add the listeners */
   dialogCombo.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       dialogSelected(event);
     }
   });
   createButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       createButtonSelected(event);
     }
   });
   SelectionListener buttonStyleListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       buttonStyleSelected(event);
     }
   };
   okButton.addSelectionListener(buttonStyleListener);
   cancelButton.addSelectionListener(buttonStyleListener);
   yesButton.addSelectionListener(buttonStyleListener);
   noButton.addSelectionListener(buttonStyleListener);
   retryButton.addSelectionListener(buttonStyleListener);
   abortButton.addSelectionListener(buttonStyleListener);
   ignoreButton.addSelectionListener(buttonStyleListener);
   /* Set default values for style buttons */
   okButton.setEnabled(false);
   cancelButton.setEnabled(false);
   yesButton.setEnabled(false);
   noButton.setEnabled(false);
   retryButton.setEnabled(false);
   abortButton.setEnabled(false);
   ignoreButton.setEnabled(false);
   iconErrorButton.setEnabled(false);
   iconInformationButton.setEnabled(false);
   iconQuestionButton.setEnabled(false);
   iconWarningButton.setEnabled(false);
   iconWorkingButton.setEnabled(false);
   saveButton.setEnabled(false);
   openButton.setEnabled(false);
   openButton.setSelection(true);
   multiButton.setEnabled(false);
   iconInformationButton.setSelection(true);
   modelessButton.setSelection(true);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   exampleGroup
       .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
   /*
    * Create a group for the text widget to display the results returned by
    * the example dialogs.
    */
   resultGroup = new Group(exampleGroup, SWT.NONE);
   resultGroup.setLayout(new GridLayout());
   resultGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
   resultGroup.setText(ControlExample.getResourceString("Dialog_Result"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /*
    * Create a multi lined, scrolled text widget for output.
    */
   textWidget = new Text(resultGroup, SWT.H_SCROLL | SWT.V_SCROLL
       | SWT.BORDER);
   GridData gridData = new GridData(GridData.FILL_BOTH);
   textWidget.setLayoutData(gridData);
 }
 /**
  * The platform dialogs do not have SWT listeners.
  */
 void createListenersGroup() {
 }
 /**
  * Handle a dialog type combo selection event.
  * 
  * @param event
  *            the selection event
  */
 void dialogSelected(SelectionEvent event) {
   /* Enable/Disable the buttons */
   String name = dialogCombo.getText();
   boolean isMessageBox = name.equals(ControlExample
       .getResourceString("MessageBox"));
   boolean isFileDialog = name.equals(ControlExample
       .getResourceString("FileDialog"));
   okButton.setEnabled(isMessageBox);
   cancelButton.setEnabled(isMessageBox);
   yesButton.setEnabled(isMessageBox);
   noButton.setEnabled(isMessageBox);
   retryButton.setEnabled(isMessageBox);
   abortButton.setEnabled(isMessageBox);
   ignoreButton.setEnabled(isMessageBox);
   iconErrorButton.setEnabled(isMessageBox);
   iconInformationButton.setEnabled(isMessageBox);
   iconQuestionButton.setEnabled(isMessageBox);
   iconWarningButton.setEnabled(isMessageBox);
   iconWorkingButton.setEnabled(isMessageBox);
   saveButton.setEnabled(isFileDialog);
   openButton.setEnabled(isFileDialog);
   multiButton.setEnabled(isFileDialog);
   /* Unselect the buttons */
   if (!isMessageBox) {
     okButton.setSelection(false);
     cancelButton.setSelection(false);
     yesButton.setSelection(false);
     noButton.setSelection(false);
     retryButton.setSelection(false);
     abortButton.setSelection(false);
     ignoreButton.setSelection(false);
   }
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[0];
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Dialog";
 }
 /**
  * Recreates the "Example" widgets.
  */
 void recreateExampleWidgets() {
   if (textWidget == null) {
     super.recreateExampleWidgets();
   }
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class CTabFolderTab extends Tab {

 int lastSelectedTab = 0;
 /* Example widgets and groups that contain them */
 CTabFolder tabFolder1;
 Group tabFolderGroup, itemGroup;
 /* Style widgets added to the "Style" group */
 Button topButton, bottomButton, flatButton, closeButton;
 static String[] CTabItems1 = {
     ControlExample.getResourceString("CTabItem1_0"),
     ControlExample.getResourceString("CTabItem1_1"),
     ControlExample.getResourceString("CTabItem1_2") };
 /* Controls and resources added to the "Fonts" group */
 Button foregroundSelectionButton, backgroundSelectionButton,
     itemFontButton;
 Image foregroundSelectionImage, backgroundSelectionImage;
 Color foregroundSelectionColor, backgroundSelectionColor;
 Font itemFont;
 /* Other widgets added to the "Other" group */
 Button simpleTabButton, singleTabButton, imageButton, showMinButton,
     showMaxButton, unselectedCloseButton, unselectedImageButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 CTabFolderTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Fonts" group.
  */
 void createColorGroup() {
   /* Create the group */
   colorGroup = new Group(controlGroup, SWT.NONE);
   colorGroup.setLayout(new GridLayout(2, false));
   colorGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   colorGroup.setText(ControlExample.getResourceString("Colors"));
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Foreground_Color"));
   foregroundButton = new Button(colorGroup, SWT.PUSH);
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Background_Color"));
   backgroundButton = new Button(colorGroup, SWT.PUSH);
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Selection_Foreground_Color"));
   foregroundSelectionButton = new Button(colorGroup, SWT.PUSH);
   new Label(colorGroup, SWT.NONE).setText(ControlExample
       .getResourceString("Selection_Background_Color"));
   backgroundSelectionButton = new Button(colorGroup, SWT.PUSH);
   fontButton = new Button(colorGroup, SWT.PUSH);
   fontButton.setText(ControlExample.getResourceString("Font"));
   fontButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
       false, 2, 1));
   itemFontButton = new Button(colorGroup, SWT.PUSH);
   itemFontButton.setText(ControlExample.getResourceString("Item_Font"));
   itemFontButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
       false, 2, 1));
   Button defaultsButton = new Button(colorGroup, SWT.PUSH);
   defaultsButton.setText(ControlExample.getResourceString("Defaults"));
   Shell shell = controlGroup.getShell();
   final ColorDialog colorDialog = new ColorDialog(shell);
   final FontDialog fontDialog = new FontDialog(shell);
   /* Create images to display current colors */
   int imageSize = 12;
   Display display = shell.getDisplay();
   foregroundImage = new Image(display, imageSize, imageSize);
   backgroundImage = new Image(display, imageSize, imageSize);
   foregroundSelectionImage = new Image(display, imageSize, imageSize);
   backgroundSelectionImage = new Image(display, imageSize, imageSize);
   /* Add listeners to set the colors and font */
   foregroundButton.setImage(foregroundImage); // sets the size of the
   // button
   foregroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = foregroundColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getForeground();
       }
       if (oldColor != null)
         colorDialog.setRGB(oldColor.getRGB()); // seed dialog with
       // current color
       RGB rgb = colorDialog.open();
       if (rgb == null)
         return;
       oldColor = foregroundColor; // save old foreground color to
       // dispose when done
       foregroundColor = new Color(event.display, rgb);
       setExampleWidgetForeground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   backgroundButton.setImage(backgroundImage); // sets the size of the
   // button
   backgroundButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = backgroundColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getBackground(); // seed dialog
         // with current
         // color
       }
       if (oldColor != null)
         colorDialog.setRGB(oldColor.getRGB());
       RGB rgb = colorDialog.open();
       if (rgb == null)
         return;
       oldColor = backgroundColor; // save old background color to
       // dispose when done
       backgroundColor = new Color(event.display, rgb);
       setExampleWidgetBackground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   foregroundSelectionButton.setImage(foregroundSelectionImage); // sets
   // the
   // size
   // of
   // the
   // button
   foregroundSelectionButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = foregroundSelectionColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getForeground();
       }
       if (oldColor != null)
         colorDialog.setRGB(oldColor.getRGB()); // seed dialog with
       // current color
       RGB rgb = colorDialog.open();
       if (rgb == null)
         return;
       oldColor = foregroundSelectionColor; // save old foreground
       // color to dispose when
       // done
       foregroundSelectionColor = new Color(event.display, rgb);
       setExampleWidgetForeground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   backgroundSelectionButton.setImage(backgroundSelectionImage); // sets
   // the
   // size
   // of
   // the
   // button
   backgroundSelectionButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Color oldColor = backgroundSelectionColor;
       if (oldColor == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldColor = controls[0].getBackground(); // seed dialog
         // with current
         // color
       }
       if (oldColor != null)
         colorDialog.setRGB(oldColor.getRGB());
       RGB rgb = colorDialog.open();
       if (rgb == null)
         return;
       oldColor = backgroundSelectionColor; // save old background
       // color to dispose when
       // done
       backgroundSelectionColor = new Color(event.display, rgb);
       setExampleWidgetBackground();
       if (oldColor != null)
         oldColor.dispose();
     }
   });
   fontButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Font oldFont = font;
       if (oldFont == null) {
         Control[] controls = getExampleWidgets();
         if (controls.length > 0)
           oldFont = controls[0].getFont();
       }
       if (oldFont != null)
         fontDialog.setFontList(oldFont.getFontData()); // seed
       // dialog
       // with
       // current
       // font
       FontData fontData = fontDialog.open();
       if (fontData == null)
         return;
       oldFont = font; // dispose old font when done
       font = new Font(event.display, fontData);
       setExampleWidgetFont();
       setExampleWidgetSize();
       if (oldFont != null)
         oldFont.dispose();
     }
   });
   /* Add listeners to set the colors and font */
   itemFontButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       Font oldFont = itemFont;
       if (oldFont == null)
         oldFont = tabFolder1.getItem(0).getFont();
       fontDialog.setFontList(oldFont.getFontData());
       FontData fontData = fontDialog.open();
       if (fontData == null)
         return;
       oldFont = itemFont;
       itemFont = new Font(event.display, fontData);
       setItemFont();
       setExampleWidgetSize();
       if (oldFont != null)
         oldFont.dispose();
     }
   });
   defaultsButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent e) {
       resetColorsAndFonts();
     }
   });
   shell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent event) {
       if (foregroundImage != null)
         foregroundImage.dispose();
       if (backgroundImage != null)
         backgroundImage.dispose();
       if (foregroundColor != null)
         foregroundColor.dispose();
       if (backgroundColor != null)
         backgroundColor.dispose();
       if (font != null)
         font.dispose();
       foregroundColor = null;
       backgroundColor = null;
       font = null;
       if (foregroundSelectionImage != null)
         foregroundSelectionImage.dispose();
       if (backgroundSelectionImage != null)
         backgroundSelectionImage.dispose();
       if (foregroundSelectionColor != null)
         foregroundSelectionColor.dispose();
       if (backgroundSelectionColor != null)
         backgroundSelectionColor.dispose();
       foregroundSelectionColor = null;
       backgroundSelectionColor = null;
       if (itemFont != null)
         itemFont.dispose();
       itemFont = null;
     }
   });
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   simpleTabButton = new Button(otherGroup, SWT.CHECK);
   simpleTabButton.setText(ControlExample
       .getResourceString("Set_Simple_Tabs"));
   simpleTabButton.setSelection(true);
   simpleTabButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setSimpleTabs();
     }
   });
   singleTabButton = new Button(otherGroup, SWT.CHECK);
   singleTabButton.setText(ControlExample
       .getResourceString("Set_Single_Tabs"));
   singleTabButton.setSelection(false);
   singleTabButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setSingleTabs();
     }
   });
   showMinButton = new Button(otherGroup, SWT.CHECK);
   showMinButton.setText(ControlExample
       .getResourceString("Set_Min_Visible"));
   showMinButton.setSelection(false);
   showMinButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setMinimizeVisible();
     }
   });
   showMaxButton = new Button(otherGroup, SWT.CHECK);
   showMaxButton.setText(ControlExample
       .getResourceString("Set_Max_Visible"));
   showMaxButton.setSelection(false);
   showMaxButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setMaximizeVisible();
     }
   });
   imageButton = new Button(otherGroup, SWT.CHECK);
   imageButton.setText(ControlExample.getResourceString("Set_Image"));
   imageButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setImages();
     }
   });
   unselectedImageButton = new Button(otherGroup, SWT.CHECK);
   unselectedImageButton.setText(ControlExample
       .getResourceString("Set_Unselected_Image_Visible"));
   unselectedImageButton.setSelection(true);
   unselectedImageButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setUnselectedImageVisible();
     }
   });
   unselectedCloseButton = new Button(otherGroup, SWT.CHECK);
   unselectedCloseButton.setText(ControlExample
       .getResourceString("Set_Unselected_Close_Visible"));
   unselectedCloseButton.setSelection(true);
   unselectedCloseButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setUnselectedCloseVisible();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the CTabFolder */
   tabFolderGroup = new Group(exampleGroup, SWT.NONE);
   tabFolderGroup.setLayout(new GridLayout());
   tabFolderGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   tabFolderGroup.setText("CTabFolder");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (topButton.getSelection())
     style |= SWT.TOP;
   if (bottomButton.getSelection())
     style |= SWT.BOTTOM;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (flatButton.getSelection())
     style |= SWT.FLAT;
   if (closeButton.getSelection())
     style |= SWT.CLOSE;
   /* Create the example widgets */
   tabFolder1 = new CTabFolder(tabFolderGroup, style);
   for (int i = 0; i < CTabItems1.length; i++) {
     CTabItem item = new CTabItem(tabFolder1, SWT.NONE);
     item.setText(CTabItems1[i]);
     Text text = new Text(tabFolder1, SWT.READ_ONLY);
     text.setText(ControlExample.getResourceString("CTabItem_content")
         + ": " + i);
     item.setControl(text);
   }
   tabFolder1.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       lastSelectedTab = tabFolder1.getSelectionIndex();
     }
   });
   tabFolder1.setSelection(lastSelectedTab);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   topButton = new Button(styleGroup, SWT.RADIO);
   topButton.setText("SWT.TOP");
   topButton.setSelection(true);
   bottomButton = new Button(styleGroup, SWT.RADIO);
   bottomButton.setText("SWT.BOTTOM");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   flatButton = new Button(styleGroup, SWT.CHECK);
   flatButton.setText("SWT.FLAT");
   closeButton = new Button(styleGroup, SWT.CHECK);
   closeButton.setText("SWT.CLOSE");
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if ((event.widget.getStyle() & SWT.RADIO) != 0) {
         if (!((Button) event.widget).getSelection())
           return;
       }
       recreateExampleWidgets();
     }
   };
   topButton.addSelectionListener(selectionListener);
   bottomButton.addSelectionListener(selectionListener);
   borderButton.addSelectionListener(selectionListener);
   flatButton.addSelectionListener(selectionListener);
   closeButton.addSelectionListener(selectionListener);
 }
 /**
  * Gets the list of custom event names.
  * 
  * @return an array containing custom event names
  */
 String[] getCustomEventNames() {
   return new String[] { "CTabFolderEvent" };
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   return tabFolder1.getItems();
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { tabFolder1 };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "CTabFolder";
 }
 /**
  * Hooks the custom listener specified by eventName.
  */
 void hookCustomListener(final String eventName) {
   if (eventName == "CTabFolderEvent") {
     tabFolder1.addCTabFolder2Listener(new CTabFolder2Adapter() {
       public void close(CTabFolderEvent event) {
         log(eventName, event);
       }
     });
   }
 }
 /**
  * Sets the foreground color, background color, and font of the "Example"
  * widgets to their default settings. Also sets foreground and background
  * color of the Node 1 TreeItems to default settings.
  */
 void resetColorsAndFonts() {
   Color oldColor = foregroundSelectionColor;
   foregroundSelectionColor = null;
   if (oldColor != null)
     oldColor.dispose();
   oldColor = backgroundSelectionColor;
   backgroundSelectionColor = null;
   if (oldColor != null)
     oldColor.dispose();
   Font oldFont = itemFont;
   itemFont = null;
   if (oldFont != null)
     oldFont.dispose();
   super.resetColorsAndFonts();
 }
 void setExampleWidgetForeground() {
   if (foregroundSelectionButton == null || tabFolder1 == null)
     return;
   tabFolder1.setSelectionForeground(foregroundSelectionColor);
   // Set the foreground button"s color to match the color just set.
   Color color = foregroundSelectionColor;
   if (color == null)
     color = tabFolder1.getSelectionForeground();
   drawImage(foregroundSelectionImage, color);
   foregroundSelectionButton.setImage(foregroundSelectionImage);
   super.setExampleWidgetForeground();
 }
 void setExampleWidgetBackground() {
   if (backgroundSelectionButton == null || tabFolder1 == null)
     return;
   tabFolder1.setSelectionBackground(backgroundSelectionColor);
   // Set the background button"s color to match the color just set.
   Color color = backgroundSelectionColor;
   if (color == null)
     color = tabFolder1.getSelectionBackground();
   drawImage(backgroundSelectionImage, color);
   backgroundSelectionButton.setImage(backgroundSelectionImage);
   super.setExampleWidgetBackground();
 }
 void setExampleWidgetFont() {
   if (instance.startup)
     return;
   if (itemFontButton == null)
     return; // no font button on this tab
   CTabItem[] items = tabFolder1.getItems();
   if (items.length > 0) {
     items[0].setFont(itemFont);
   }
   super.setExampleWidgetFont();
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   setSimpleTabs();
   setSingleTabs();
   setImages();
   setMinimizeVisible();
   setMaximizeVisible();
   setUnselectedCloseVisible();
   setUnselectedImageVisible();
   setExampleWidgetSize();
 }
 /**
  * Sets the shape that the CTabFolder will use to render itself.
  */
 void setSimpleTabs() {
   tabFolder1.setSimple(simpleTabButton.getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets the number of tabs that the CTabFolder should display.
  */
 void setSingleTabs() {
   tabFolder1.setSingle(singleTabButton.getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets an image into each item of the "Example" widgets.
  */
 void setImages() {
   boolean setImage = imageButton.getSelection();
   CTabItem items[] = tabFolder1.getItems();
   for (int i = 0; i < items.length; i++) {
     if (setImage) {
       items[i]
           .setImage(instance.images[ControlExample.ciClosedFolder]);
     } else {
       items[i].setImage(null);
     }
   }
   setExampleWidgetSize();
 }
 /**
  * Sets the visibility of the minimize button
  */
 void setMinimizeVisible() {
   tabFolder1.setMinimizeVisible(showMinButton.getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets the visibility of the maximize button
  */
 void setMaximizeVisible() {
   tabFolder1.setMaximizeVisible(showMaxButton.getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets the visibility of the close button on unselected tabs
  */
 void setUnselectedCloseVisible() {
   tabFolder1.setUnselectedCloseVisible(unselectedCloseButton
       .getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets the visibility of the image on unselected tabs
  */
 void setUnselectedImageVisible() {
   tabFolder1.setUnselectedImageVisible(unselectedImageButton
       .getSelection());
   setExampleWidgetSize();
 }
 /**
  * Sets the font of CTabItem 0.
  */
 void setItemFont() {
   if (instance.startup)
     return;
   tabFolder1.getItem(0).setFont(itemFont);
   setExampleWidgetSize();
 }

} /*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class CoolBarTab extends Tab {

 /* Example widgets and group that contains them */
 CoolBar coolBar;
 CoolItem pushItem, dropDownItem, radioItem, checkItem, textItem;
 Group coolBarGroup;
 /* Style widgets added to the "Style" group */
 Button dropDownButton, flatButton;
 /* Other widgets added to the "Other" group */
 Button lockedButton;
 Point[] sizes;
 int[] wrapIndices;
 int[] order;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 CoolBarTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   lockedButton = new Button(otherGroup, SWT.CHECK);
   lockedButton.setText(ControlExample.getResourceString("Locked"));
   /* Add the listeners */
   lockedButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setWidgetLocked();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   coolBarGroup = new Group(exampleGroup, SWT.NONE);
   coolBarGroup.setLayout(new GridLayout());
   coolBarGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   coolBarGroup.setText("CoolBar");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   int style = getDefaultStyle(), itemStyle = 0;
   /* Compute the widget style */
   int toolBarStyle = SWT.FLAT;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (flatButton.getSelection())
     style |= SWT.FLAT;
   if (dropDownButton.getSelection())
     itemStyle |= SWT.DROP_DOWN;
   /*
    * Create the example widgets.
    */
   coolBar = new CoolBar(coolBarGroup, style);
   /* create the push button toolbar */
   ToolBar toolBar = new ToolBar(coolBar, toolBarStyle);
   ToolItem item = new ToolItem(toolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(toolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(toolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(toolBar, SWT.SEPARATOR);
   item = new ToolItem(toolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.PUSH");
   item = new ToolItem(toolBar, SWT.PUSH);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.PUSH");
   pushItem = new CoolItem(coolBar, itemStyle);
   pushItem.setControl(toolBar);
   Point pushSize = toolBar.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   pushSize = pushItem.ruputeSize(pushSize.x, pushSize.y);
   pushItem.setSize(pushSize);
   pushItem.setMinimumSize(item.getWidth(), pushSize.y);
   pushItem.addSelectionListener(new CoolItemSelectionListener());
   /* create the dropdown toolbar */
   toolBar = new ToolBar(coolBar, toolBarStyle);
   item = new ToolItem(toolBar, SWT.DROP_DOWN);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.DROP_DOWN");
   item.addSelectionListener(new DropDownSelectionListener());
   item = new ToolItem(toolBar, SWT.DROP_DOWN);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.DROP_DOWN");
   item.addSelectionListener(new DropDownSelectionListener());
   dropDownItem = new CoolItem(coolBar, itemStyle);
   dropDownItem.setControl(toolBar);
   Point dropSize = toolBar.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   dropSize = dropDownItem.ruputeSize(dropSize.x, dropSize.y);
   dropDownItem.setSize(dropSize);
   dropDownItem.setMinimumSize(item.getWidth(), dropSize.y);
   dropDownItem.addSelectionListener(new CoolItemSelectionListener());
   /* create the radio button toolbar */
   toolBar = new ToolBar(coolBar, toolBarStyle);
   item = new ToolItem(toolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(toolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.RADIO");
   item = new ToolItem(toolBar, SWT.RADIO);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.RADIO");
   radioItem = new CoolItem(coolBar, itemStyle);
   radioItem.setControl(toolBar);
   Point radioSize = toolBar.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   radioSize = radioItem.ruputeSize(radioSize.x, radioSize.y);
   radioItem.setSize(radioSize);
   radioItem.setMinimumSize(item.getWidth(), radioSize.y);
   radioItem.addSelectionListener(new CoolItemSelectionListener());
   /* create the check button toolbar */
   toolBar = new ToolBar(coolBar, toolBarStyle);
   item = new ToolItem(toolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciClosedFolder]);
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(toolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(toolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciOpenFolder]);
   item.setToolTipText("SWT.CHECK");
   item = new ToolItem(toolBar, SWT.CHECK);
   item.setImage(instance.images[ControlExample.ciTarget]);
   item.setToolTipText("SWT.CHECK");
   checkItem = new CoolItem(coolBar, itemStyle);
   checkItem.setControl(toolBar);
   Point checkSize = toolBar.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   checkSize = checkItem.ruputeSize(checkSize.x, checkSize.y);
   checkItem.setSize(checkSize);
   checkItem.setMinimumSize(item.getWidth(), checkSize.y);
   checkItem.addSelectionListener(new CoolItemSelectionListener());
   /* create the text */
   Text text = new Text(coolBar, SWT.BORDER | SWT.SINGLE);
   textItem = new CoolItem(coolBar, itemStyle);
   textItem.setControl(text);
   Point textSize = text.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);
   textSize = textItem.ruputeSize(textSize.x, textSize.y);
   textItem.setSize(textSize);
   textItem.setMinimumSize(textSize);
   textItem.addSelectionListener(new CoolItemSelectionListener());
   /* if we have saved state, restore it */
   if (order != null) {
     coolBar.setItemLayout(order, wrapIndices, sizes);
     /*
      * special case: because setItemLayout will restore the items to the
      * sizes the user left them at, the preferred size may not be the
      * same as the actual size. Thus we must explicitly set the
      * preferred sizes.
      */
     pushItem.setPreferredSize(pushSize);
     dropDownItem.setPreferredSize(dropSize);
     radioItem.setPreferredSize(radioSize);
     checkItem.setPreferredSize(checkSize);
     textItem.setPreferredSize(textSize);
   } else {
     coolBar.setWrapIndices(new int[] { 1, 3 });
   }
   /* add a listener to resize the group box to match the coolbar */
   coolBar.addListener(SWT.Resize, new Listener() {
     public void handleEvent(Event event) {
       exampleGroup.layout();
     }
   });
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widget */
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   flatButton = new Button(styleGroup, SWT.CHECK);
   flatButton.setText("SWT.FLAT");
   Group itemGroup = new Group(styleGroup, SWT.NONE);
   itemGroup.setLayout(new GridLayout());
   itemGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
       | GridData.VERTICAL_ALIGN_FILL));
   itemGroup.setText(ControlExample.getResourceString("Item_Styles"));
   dropDownButton = new Button(itemGroup, SWT.CHECK);
   dropDownButton.setText("SWT.DROP_DOWN");
   dropDownButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       recreateExampleWidgets();
     }
   });
 }
 /**
  * Disposes the "Example" widgets.
  */
 void disposeExampleWidgets() {
   /* store the state of the toolbar if applicable */
   if (coolBar != null) {
     sizes = coolBar.getItemSizes();
     wrapIndices = coolBar.getWrapIndices();
     order = coolBar.getItemOrder();
   }
   super.disposeExampleWidgets();
 }
 /**
  * Gets the "Example" widget children"s items, if any.
  * 
  * @return an array containing the example widget children"s items
  */
 Item[] getExampleWidgetItems() {
   return coolBar.getItems();
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { coolBar };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "CoolBar";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   borderButton.setSelection((coolBar.getStyle() & SWT.BORDER) != 0);
   flatButton.setSelection((coolBar.getStyle() & SWT.FLAT) != 0);
   dropDownButton
       .setSelection((coolBar.getItem(0).getStyle() & SWT.DROP_DOWN) != 0);
   setWidgetLocked();
 }
 /**
  * Sets the header visible state of the "Example" widgets.
  */
 void setWidgetLocked() {
   coolBar.setLocked(lockedButton.getSelection());
 }
 /**
  * Listens to widgetSelected() events on SWT.DROP_DOWN type ToolItems and
  * opens/closes a menu when appropriate.
  */
 class DropDownSelectionListener extends SelectionAdapter {
   private Menu menu = null;
   private boolean visible = false;
   public void widgetSelected(SelectionEvent event) {
     // Create the menu if it has not already been created
     if (menu == null) {
       // Lazy create the menu.
       Shell shell = tabFolderPage.getShell();
       menu = new Menu(shell);
       menu.addMenuListener(new MenuAdapter() {
         public void menuHidden(MenuEvent e) {
           visible = false;
         }
       });
       for (int i = 0; i < 9; ++i) {
         final String text = ControlExample
             .getResourceString("DropDownData_" + i);
         if (text.length() != 0) {
           MenuItem menuItem = new MenuItem(menu, SWT.NONE);
           menuItem.setText(text);
           /*
            * Add a menu selection listener so that the menu is
            * hidden when the user selects an item from the drop
            * down menu.
            */
           menuItem.addSelectionListener(new SelectionAdapter() {
             public void widgetSelected(SelectionEvent e) {
               setMenuVisible(false);
             }
           });
         } else {
           new MenuItem(menu, SWT.SEPARATOR);
         }
       }
     }
     /**
      * A selection event will be fired when a drop down tool item is
      * selected in the main area and in the drop down arrow. Examine the
      * event detail to determine where the widget was selected.
      */
     if (event.detail == SWT.ARROW) {
       /*
        * The drop down arrow was selected.
        */
       if (visible) {
         // Hide the menu to give the Arrow the appearance of being a
         // toggle button.
         setMenuVisible(false);
       } else {
         // Position the menu below and vertically aligned with the
         // the drop down tool button.
         final ToolItem toolItem = (ToolItem) event.widget;
         final ToolBar toolBar = toolItem.getParent();
         Rectangle toolItemBounds = toolItem.getBounds();
         Point point = toolBar.toDisplay(new Point(toolItemBounds.x,
             toolItemBounds.y));
         menu.setLocation(point.x, point.y + toolItemBounds.height);
         setMenuVisible(true);
       }
     } else {
       /*
        * Main area of drop down tool item selected. An application
        * would invoke the code to perform the action for the tool
        * item.
        */
     }
   }
   private void setMenuVisible(boolean visible) {
     menu.setVisible(visible);
     this.visible = visible;
   }
 }
 /**
  * Listens to widgetSelected() events on SWT.DROP_DOWN type CoolItems and
  * opens/closes a menu when appropriate.
  */
 class CoolItemSelectionListener extends SelectionAdapter {
   private Menu menu = null;
   public void widgetSelected(SelectionEvent event) {
     /**
      * A selection event will be fired when the cool item is selected by
      * its gripper or if the drop down arrow (or "chevron") is selected.
      * Examine the event detail to determine where the widget was
      * selected.
      */
     if (event.detail == SWT.ARROW) {
       /*
        * If the popup menu is already up (i.e. user pressed arrow
        * twice), then dispose it.
        */
       if (menu != null) {
         menu.dispose();
         menu = null;
         return;
       }
       /*
        * Get the cool item and convert its bounds to display
        * coordinates.
        */
       CoolItem coolItem = (CoolItem) event.widget;
       Rectangle itemBounds = coolItem.getBounds();
       itemBounds.width = event.x - itemBounds.x;
       Point pt = coolBar.toDisplay(new Point(itemBounds.x,
           itemBounds.y));
       itemBounds.x = pt.x;
       itemBounds.y = pt.y;
       /* Get the toolbar from the cool item. */
       ToolBar toolBar = (ToolBar) coolItem.getControl();
       ToolItem[] tools = toolBar.getItems();
       int toolCount = tools.length;
       /*
        * Convert the bounds of each tool item to display coordinates,
        * and determine which ones are past the bounds of the cool
        * item.
        */
       int i = 0;
       while (i < toolCount) {
         Rectangle toolBounds = tools[i].getBounds();
         pt = toolBar
             .toDisplay(new Point(toolBounds.x, toolBounds.y));
         toolBounds.x = pt.x;
         toolBounds.y = pt.y;
         Rectangle intersection = itemBounds
             .intersection(toolBounds);
         if (!intersection.equals(toolBounds))
           break;
         i++;
       }
       /*
        * Create a pop-up menu with items for each of the hidden
        * buttons.
        */
       menu = new Menu(coolBar);
       for (int j = i; j < toolCount; j++) {
         ToolItem tool = tools[j];
         Image image = tool.getImage();
         if (image == null) {
           new MenuItem(menu, SWT.SEPARATOR);
         } else {
           if ((tool.getStyle() & SWT.DROP_DOWN) != 0) {
             MenuItem menuItem = new MenuItem(menu, SWT.CASCADE);
             menuItem.setImage(image);
             String text = tool.getToolTipText();
             if (text != null)
               menuItem.setText(text);
             Menu m = new Menu(menu);
             menuItem.setMenu(m);
             for (int k = 0; k < 9; ++k) {
               text = ControlExample
                   .getResourceString("DropDownData_" + k);
               if (text.length() != 0) {
                 MenuItem mi = new MenuItem(m, SWT.NONE);
                 mi.setText(text);
                 /*
                  * Application code to perform the action
                  * for the submenu item would go here.
                  */
               } else {
                 new MenuItem(m, SWT.SEPARATOR);
               }
             }
           } else {
             MenuItem menuItem = new MenuItem(menu, SWT.NONE);
             menuItem.setImage(image);
             String text = tool.getToolTipText();
             if (text != null)
               menuItem.setText(text);
           }
           /*
            * Application code to perform the action for the menu
            * item would go here.
            */
         }
       }
       /*
        * Display the pop-up menu at the lower left corner of the arrow
        * button. Dispose the menu when the user is done with it.
        */
       pt = coolBar.toDisplay(new Point(event.x, event.y));
       menu.setLocation(pt.x, pt.y);
       menu.setVisible(true);
       Display display = coolBar.getDisplay();
       while (menu != null && !menu.isDisposed() && menu.isVisible()) {
         if (!display.readAndDispatch())
           display.sleep();
       }
       if (menu != null) {
         menu.dispose();
         menu = null;
       }
     }
   }
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class ComboTab extends Tab {

 /* Example widgets and groups that contain them */
 Combo combo1;
 Group comboGroup;
 /* Style widgets added to the "Style" group */
 Button dropDownButton, readOnlyButton, simpleButton;
 static String[] ListData = {
     ControlExample.getResourceString("ListData0_0"),
     ControlExample.getResourceString("ListData0_1"),
     ControlExample.getResourceString("ListData0_2"),
     ControlExample.getResourceString("ListData0_3"),
     ControlExample.getResourceString("ListData0_4"),
     ControlExample.getResourceString("ListData0_5"),
     ControlExample.getResourceString("ListData0_6"),
     ControlExample.getResourceString("ListData0_7"),
     ControlExample.getResourceString("ListData0_8") };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ComboTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the combo box */
   comboGroup = new Group(exampleGroup, SWT.NONE);
   comboGroup.setLayout(new GridLayout());
   comboGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   comboGroup.setText("Combo");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (dropDownButton.getSelection())
     style |= SWT.DROP_DOWN;
   if (readOnlyButton.getSelection())
     style |= SWT.READ_ONLY;
   if (simpleButton.getSelection())
     style |= SWT.SIMPLE;
   /* Create the example widgets */
   combo1 = new Combo(comboGroup, style);
   combo1.setItems(ListData);
   if (ListData.length >= 3) {
     combo1.setText(ListData[2]);
   }
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   super.createTabFolderPage(tabFolder);
   /*
    * Add a resize listener to the tabFolderPage so that if the user types
    * into the example widget to change its preferred size, and then
    * resizes the shell, we recalculate the preferred size correctly.
    */
   tabFolderPage.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent e) {
       setExampleWidgetSize();
     }
   });
   return tabFolderPage;
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   dropDownButton = new Button(styleGroup, SWT.RADIO);
   dropDownButton.setText("SWT.DROP_DOWN");
   simpleButton = new Button(styleGroup, SWT.RADIO);
   simpleButton.setText("SWT.SIMPLE");
   readOnlyButton = new Button(styleGroup, SWT.CHECK);
   readOnlyButton.setText("SWT.READ_ONLY");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { combo1 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Items", "Orientation", "Selection", "Text",
       "TextLimit", "VisibleItemCount" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Combo";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   dropDownButton.setSelection((combo1.getStyle() & SWT.DROP_DOWN) != 0);
   simpleButton.setSelection((combo1.getStyle() & SWT.SIMPLE) != 0);
   readOnlyButton.setSelection((combo1.getStyle() & SWT.READ_ONLY) != 0);
   readOnlyButton.setEnabled(!simpleButton.getSelection());
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class CLabelTab extends AlignableTab {

 /* Example widgets and groups that contain them */
 CLabel label1, label2, label3;
 Group textLabelGroup;
 /* Style widgets added to the "Style" group */
 Button shadowInButton, shadowOutButton, shadowNoneButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 CLabelTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the text labels */
   textLabelGroup = new Group(exampleGroup, SWT.NONE);
   GridLayout gridLayout = new GridLayout();
   textLabelGroup.setLayout(gridLayout);
   gridLayout.numColumns = 3;
   textLabelGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   textLabelGroup.setText(ControlExample
       .getResourceString("Custom_Labels"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (shadowInButton.getSelection())
     style |= SWT.SHADOW_IN;
   if (shadowNoneButton.getSelection())
     style |= SWT.SHADOW_NONE;
   if (shadowOutButton.getSelection())
     style |= SWT.SHADOW_OUT;
   if (leftButton.getSelection())
     style |= SWT.LEFT;
   if (centerButton.getSelection())
     style |= SWT.CENTER;
   if (rightButton.getSelection())
     style |= SWT.RIGHT;
   /* Create the example widgets */
   label1 = new CLabel(textLabelGroup, style);
   label1.setText(ControlExample.getResourceString("One"));
   label1.setImage(instance.images[ControlExample.ciClosedFolder]);
   label2 = new CLabel(textLabelGroup, style);
   label2.setImage(instance.images[ControlExample.ciTarget]);
   label3 = new CLabel(textLabelGroup, style);
   label3.setText(ControlExample.getResourceString("Example_string")
       + "\n" + ControlExample.getResourceString("One_Two_Three"));
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   shadowNoneButton = new Button(styleGroup, SWT.RADIO);
   shadowNoneButton.setText("SWT.SHADOW_NONE");
   shadowInButton = new Button(styleGroup, SWT.RADIO);
   shadowInButton.setText("SWT.SHADOW_IN");
   shadowOutButton = new Button(styleGroup, SWT.RADIO);
   shadowOutButton.setText("SWT.SHADOW_OUT");
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if ((event.widget.getStyle() & SWT.RADIO) != 0) {
         if (!((Button) event.widget).getSelection())
           return;
       }
       recreateExampleWidgets();
     }
   };
   shadowInButton.addSelectionListener(selectionListener);
   shadowOutButton.addSelectionListener(selectionListener);
   shadowNoneButton.addSelectionListener(selectionListener);
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { label1, label2, label3 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Text" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "CLabel";
 }
 /**
  * Sets the alignment of the "Example" widgets.
  */
 void setExampleWidgetAlignment() {
   int alignment = 0;
   if (leftButton.getSelection())
     alignment = SWT.LEFT;
   if (centerButton.getSelection())
     alignment = SWT.CENTER;
   if (rightButton.getSelection())
     alignment = SWT.RIGHT;
   label1.setAlignment(alignment);
   label2.setAlignment(alignment);
   label3.setAlignment(alignment);
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   leftButton.setSelection((label1.getStyle() & SWT.LEFT) != 0);
   centerButton.setSelection((label1.getStyle() & SWT.CENTER) != 0);
   rightButton.setSelection((label1.getStyle() & SWT.RIGHT) != 0);
   shadowInButton.setSelection((label1.getStyle() & SWT.SHADOW_IN) != 0);
   shadowOutButton.setSelection((label1.getStyle() & SWT.SHADOW_OUT) != 0);
   shadowNoneButton
       .setSelection((label1.getStyle() & (SWT.SHADOW_IN | SWT.SHADOW_OUT)) == 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class CComboTab extends Tab {

 /* Example widgets and groups that contain them */
 CCombo combo1;
 Group comboGroup;
 /* Style widgets added to the "Style" group */
 Button flatButton, readOnlyButton;
 static String[] ListData = {
     ControlExample.getResourceString("ListData1_0"),
     ControlExample.getResourceString("ListData1_1"),
     ControlExample.getResourceString("ListData1_2"),
     ControlExample.getResourceString("ListData1_3"),
     ControlExample.getResourceString("ListData1_4"),
     ControlExample.getResourceString("ListData1_5"),
     ControlExample.getResourceString("ListData1_6"),
     ControlExample.getResourceString("ListData1_7"),
     ControlExample.getResourceString("ListData1_8") };
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 CComboTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the combo box */
   comboGroup = new Group(exampleGroup, SWT.NONE);
   comboGroup.setLayout(new GridLayout());
   comboGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   comboGroup.setText(ControlExample.getResourceString("Custom_Combo"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (flatButton.getSelection())
     style |= SWT.FLAT;
   if (readOnlyButton.getSelection())
     style |= SWT.READ_ONLY;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   /* Create the example widgets */
   combo1 = new CCombo(comboGroup, style);
   combo1.setItems(ListData);
   if (ListData.length >= 3) {
     combo1.setText(ListData[2]);
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   readOnlyButton = new Button(styleGroup, SWT.CHECK);
   readOnlyButton.setText("SWT.READ_ONLY");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   flatButton = new Button(styleGroup, SWT.CHECK);
   flatButton.setText("SWT.FLAT");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { combo1 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Editable", "Items", "Selection", "Text",
       "TextLimit", "VisibleItemCount" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "CCombo";
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   flatButton.setSelection((combo1.getStyle() & SWT.FLAT) != 0);
   readOnlyButton.setSelection((combo1.getStyle() & SWT.READ_ONLY) != 0);
   borderButton.setSelection((combo1.getStyle() & SWT.BORDER) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

class CanvasTab extends Tab {

 static int colors[] = { SWT.COLOR_RED, SWT.COLOR_GREEN, SWT.COLOR_BLUE,
     SWT.COLOR_MAGENTA, SWT.COLOR_YELLOW, SWT.COLOR_CYAN,
     SWT.COLOR_DARK_RED, SWT.COLOR_DARK_GREEN, SWT.COLOR_DARK_BLUE,
     SWT.COLOR_DARK_MAGENTA, SWT.COLOR_DARK_YELLOW, SWT.COLOR_DARK_CYAN };
 /* Example widgets and groups that contain them */
 Canvas canvas;
 Group canvasGroup;
 /* Style widgets added to the "Style" group */
 Button horizontalButton, verticalButton, noBackgroundButton, noFocusButton,
     noMergePaintsButton, noRedrawResizeButton;
 /* Other widgets added to the "Other" group */
 Button caretButton, fillDamageButton;
 int paintCount;
 int cx, cy;
 int maxX, maxY;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 CanvasTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Other" group.
  */
 void createOtherGroup() {
   super.createOtherGroup();
   /* Create display controls specific to this example */
   caretButton = new Button(otherGroup, SWT.CHECK);
   caretButton.setText(ControlExample.getResourceString("Caret"));
   fillDamageButton = new Button(otherGroup, SWT.CHECK);
   fillDamageButton
       .setText(ControlExample.getResourceString("FillDamage"));
   /* Add the listeners */
   caretButton.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       setCaret();
     }
   });
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for the canvas widget */
   canvasGroup = new Group(exampleGroup, SWT.NONE);
   canvasGroup.setLayout(new GridLayout());
   canvasGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   canvasGroup.setText("Canvas");
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (horizontalButton.getSelection())
     style |= SWT.H_SCROLL;
   if (verticalButton.getSelection())
     style |= SWT.V_SCROLL;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (noBackgroundButton.getSelection())
     style |= SWT.NO_BACKGROUND;
   if (noFocusButton.getSelection())
     style |= SWT.NO_FOCUS;
   if (noMergePaintsButton.getSelection())
     style |= SWT.NO_MERGE_PAINTS;
   if (noRedrawResizeButton.getSelection())
     style |= SWT.NO_REDRAW_RESIZE;
   /* Create the example widgets */
   paintCount = 0;
   cx = 0;
   cy = 0;
   canvas = new Canvas(canvasGroup, style);
   canvas.addPaintListener(new PaintListener() {
     public void paintControl(PaintEvent e) {
       paintCount++;
       GC gc = e.gc;
       if (fillDamageButton.getSelection()) {
         Color color = e.display.getSystemColor(colors[paintCount
             % colors.length]);
         gc.setBackground(color);
         gc.fillRectangle(e.x, e.y, e.width, e.height);
       }
       Point size = canvas.getSize();
       gc.drawArc(cx + 1, cy + 1, size.x - 2, size.y - 2, 0, 360);
       gc.drawRectangle(cx + (size.x - 10) / 2,
           cy + (size.y - 10) / 2, 10, 10);
     }
   });
   canvas.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent event) {
       Point size = canvas.getSize();
       maxX = size.x * 3 / 2;
       maxY = size.y * 3 / 2;
       resizeScrollBars();
     }
   });
   ScrollBar bar = canvas.getHorizontalBar();
   if (bar != null) {
     bar.addSelectionListener(new SelectionAdapter() {
       public void widgetSelected(SelectionEvent event) {
         scrollHorizontal((ScrollBar) event.widget);
       }
     });
   }
   bar = canvas.getVerticalBar();
   if (bar != null) {
     bar.addSelectionListener(new SelectionAdapter() {
       public void widgetSelected(SelectionEvent event) {
         scrollVertical((ScrollBar) event.widget);
       }
     });
   }
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   horizontalButton = new Button(styleGroup, SWT.CHECK);
   horizontalButton.setText("SWT.H_SCROLL");
   horizontalButton.setSelection(true);
   verticalButton = new Button(styleGroup, SWT.CHECK);
   verticalButton.setText("SWT.V_SCROLL");
   verticalButton.setSelection(true);
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
   noBackgroundButton = new Button(styleGroup, SWT.CHECK);
   noBackgroundButton.setText("SWT.NO_BACKGROUND");
   noFocusButton = new Button(styleGroup, SWT.CHECK);
   noFocusButton.setText("SWT.NO_FOCUS");
   noMergePaintsButton = new Button(styleGroup, SWT.CHECK);
   noMergePaintsButton.setText("SWT.NO_MERGE_PAINTS");
   noRedrawResizeButton = new Button(styleGroup, SWT.CHECK);
   noRedrawResizeButton.setText("SWT.NO_REDRAW_RESIZE");
 }
 /**
  * Creates the tab folder page.
  * 
  * @param tabFolder
  *            org.eclipse.swt.widgets.TabFolder
  * @return the new page for the tab folder
  */
 Composite createTabFolderPage(TabFolder tabFolder) {
   super.createTabFolderPage(tabFolder);
   /*
    * Add a resize listener to the tabFolderPage so that if the user types
    * into the example widget to change its preferred size, and then
    * resizes the shell, we recalculate the preferred size correctly.
    */
   tabFolderPage.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent e) {
       setExampleWidgetSize();
     }
   });
   return tabFolderPage;
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { canvas };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Canvas";
 }
 /**
  * Resizes the maximum and thumb of both scrollbars.
  */
 void resizeScrollBars() {
   Rectangle clientArea = canvas.getClientArea();
   ScrollBar bar = canvas.getHorizontalBar();
   if (bar != null) {
     bar.setMaximum(maxX);
     bar.setThumb(clientArea.width);
     bar.setPageIncrement(clientArea.width);
   }
   bar = canvas.getVerticalBar();
   if (bar != null) {
     bar.setMaximum(maxY);
     bar.setThumb(clientArea.height);
     bar.setPageIncrement(clientArea.height);
   }
 }
 /**
  * Scrolls the canvas horizontally.
  * 
  * @param scrollBar
  */
 void scrollHorizontal(ScrollBar scrollBar) {
   Rectangle bounds = canvas.getClientArea();
   int x = -scrollBar.getSelection();
   if (x + maxX < bounds.width) {
     x = bounds.width - maxX;
   }
   canvas.scroll(x, cy, cx, cy, maxX, maxY, false);
   cx = x;
 }
 /**
  * Scrolls the canvas vertically.
  * 
  * @param scrollBar
  */
 void scrollVertical(ScrollBar scrollBar) {
   Rectangle bounds = canvas.getClientArea();
   int y = -scrollBar.getSelection();
   if (y + maxY < bounds.height) {
     y = bounds.height - maxY;
   }
   canvas.scroll(cx, y, cx, cy, maxX, maxY, false);
   cy = y;
 }
 /**
  * Sets or clears the caret in the "Example" widget.
  */
 void setCaret() {
   Caret oldCaret = canvas.getCaret();
   if (caretButton.getSelection()) {
     Caret newCaret = new Caret(canvas, SWT.NONE);
     Font font = canvas.getFont();
     newCaret.setFont(font);
     GC gc = new GC(canvas);
     gc.setFont(font);
     newCaret.setBounds(1, 1, 1, gc.getFontMetrics().getHeight());
     gc.dispose();
     canvas.setCaret(newCaret);
     canvas.setFocus();
   } else {
     canvas.setCaret(null);
   }
   if (oldCaret != null)
     oldCaret.dispose();
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   horizontalButton.setSelection((canvas.getStyle() & SWT.H_SCROLL) != 0);
   verticalButton.setSelection((canvas.getStyle() & SWT.V_SCROLL) != 0);
   borderButton.setSelection((canvas.getStyle() & SWT.BORDER) != 0);
   noBackgroundButton
       .setSelection((canvas.getStyle() & SWT.NO_BACKGROUND) != 0);
   noFocusButton.setSelection((canvas.getStyle() & SWT.NO_FOCUS) != 0);
   noMergePaintsButton
       .setSelection((canvas.getStyle() & SWT.NO_MERGE_PAINTS) != 0);
   noRedrawResizeButton
       .setSelection((canvas.getStyle() & SWT.NO_REDRAW_RESIZE) != 0);
   setCaret();
 }

} /*******************************************************************************

* Copyright (c) 2000, 2005 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

/**

* ButtonTab is the class that demonstrates SWT buttons.
*/

class ButtonTab extends AlignableTab {

 /* Example widgets and groups that contain them */
 Button button1, button2, button3, button4, button5, button6;
 Group textButtonGroup, imageButtonGroup;
 /* Alignment widgets added to the "Control" group */
 Button upButton, downButton;
 /* Style widgets added to the "Style" group */
 Button pushButton, checkButton, radioButton, toggleButton, arrowButton,
     flatButton;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 ButtonTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Control" group.
  */
 void createControlGroup() {
   super.createControlGroup();
   /* Create the controls */
   upButton = new Button(alignmentGroup, SWT.RADIO);
   upButton.setText(ControlExample.getResourceString("Up"));
   downButton = new Button(alignmentGroup, SWT.RADIO);
   downButton.setText(ControlExample.getResourceString("Down"));
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if (!((Button) event.widget).getSelection())
         return;
       setExampleWidgetAlignment();
     }
   };
   upButton.addSelectionListener(selectionListener);
   downButton.addSelectionListener(selectionListener);
 }
 /**
  * Creates the "Example" group.
  */
 void createExampleGroup() {
   super.createExampleGroup();
   /* Create a group for text buttons */
   textButtonGroup = new Group(exampleGroup, SWT.NONE);
   GridLayout gridLayout = new GridLayout();
   textButtonGroup.setLayout(gridLayout);
   gridLayout.numColumns = 3;
   textButtonGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   textButtonGroup.setText(ControlExample
       .getResourceString("Text_Buttons"));
   /* Create a group for the image buttons */
   imageButtonGroup = new Group(exampleGroup, SWT.NONE);
   gridLayout = new GridLayout();
   imageButtonGroup.setLayout(gridLayout);
   gridLayout.numColumns = 3;
   imageButtonGroup
       .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
           | GridData.HORIZONTAL_ALIGN_FILL
           | GridData.VERTICAL_ALIGN_FILL));
   imageButtonGroup.setText(ControlExample
       .getResourceString("Image_Buttons"));
 }
 /**
  * Creates the "Example" widgets.
  */
 void createExampleWidgets() {
   /* Compute the widget style */
   int style = getDefaultStyle();
   if (pushButton.getSelection())
     style |= SWT.PUSH;
   if (checkButton.getSelection())
     style |= SWT.CHECK;
   if (radioButton.getSelection())
     style |= SWT.RADIO;
   if (toggleButton.getSelection())
     style |= SWT.TOGGLE;
   if (flatButton.getSelection())
     style |= SWT.FLAT;
   if (borderButton.getSelection())
     style |= SWT.BORDER;
   if (leftButton.getSelection())
     style |= SWT.LEFT;
   if (rightButton.getSelection())
     style |= SWT.RIGHT;
   if (arrowButton.getSelection()) {
     style |= SWT.ARROW;
     if (upButton.getSelection())
       style |= SWT.UP;
     if (downButton.getSelection())
       style |= SWT.DOWN;
   } else {
     if (centerButton.getSelection())
       style |= SWT.CENTER;
   }
   /* Create the example widgets */
   button1 = new Button(textButtonGroup, style);
   button1.setText(ControlExample.getResourceString("One"));
   button2 = new Button(textButtonGroup, style);
   button2.setText(ControlExample.getResourceString("Two"));
   button3 = new Button(textButtonGroup, style);
   button3.setText(ControlExample.getResourceString("Three"));
   button4 = new Button(imageButtonGroup, style);
   button4.setImage(instance.images[ControlExample.ciClosedFolder]);
   button5 = new Button(imageButtonGroup, style);
   button5.setImage(instance.images[ControlExample.ciOpenFolder]);
   button6 = new Button(imageButtonGroup, style);
   button6.setImage(instance.images[ControlExample.ciTarget]);
 }
 /**
  * Creates the "Style" group.
  */
 void createStyleGroup() {
   super.createStyleGroup();
   /* Create the extra widgets */
   pushButton = new Button(styleGroup, SWT.RADIO);
   pushButton.setText("SWT.PUSH");
   checkButton = new Button(styleGroup, SWT.RADIO);
   checkButton.setText("SWT.CHECK");
   radioButton = new Button(styleGroup, SWT.RADIO);
   radioButton.setText("SWT.RADIO");
   toggleButton = new Button(styleGroup, SWT.RADIO);
   toggleButton.setText("SWT.TOGGLE");
   arrowButton = new Button(styleGroup, SWT.RADIO);
   arrowButton.setText("SWT.ARROW");
   flatButton = new Button(styleGroup, SWT.CHECK);
   flatButton.setText("SWT.FLAT");
   borderButton = new Button(styleGroup, SWT.CHECK);
   borderButton.setText("SWT.BORDER");
 }
 /**
  * Gets the "Example" widget children.
  */
 Control[] getExampleWidgets() {
   return new Control[] { button1, button2, button3, button4, button5,
       button6 };
 }
 /**
  * Returns a list of set/get API method names (without the set/get prefix)
  * that can be used to set/get values in the example control(s).
  */
 String[] getMethodNames() {
   return new String[] { "Selection", "Text" };
 }
 /**
  * Gets the text for the tab folder item.
  */
 String getTabText() {
   return "Button";
 }
 /**
  * Sets the alignment of the "Example" widgets.
  */
 void setExampleWidgetAlignment() {
   int alignment = 0;
   if (leftButton.getSelection())
     alignment = SWT.LEFT;
   if (centerButton.getSelection())
     alignment = SWT.CENTER;
   if (rightButton.getSelection())
     alignment = SWT.RIGHT;
   if (upButton.getSelection())
     alignment = SWT.UP;
   if (downButton.getSelection())
     alignment = SWT.DOWN;
   button1.setAlignment(alignment);
   button2.setAlignment(alignment);
   button3.setAlignment(alignment);
   button4.setAlignment(alignment);
   button5.setAlignment(alignment);
   button6.setAlignment(alignment);
 }
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   if (arrowButton.getSelection()) {
     upButton.setEnabled(true);
     centerButton.setEnabled(false);
     downButton.setEnabled(true);
   } else {
     upButton.setEnabled(false);
     centerButton.setEnabled(true);
     downButton.setEnabled(false);
   }
   upButton.setSelection((button1.getStyle() & SWT.UP) != 0);
   downButton.setSelection((button1.getStyle() & SWT.DOWN) != 0);
   pushButton.setSelection((button1.getStyle() & SWT.PUSH) != 0);
   checkButton.setSelection((button1.getStyle() & SWT.CHECK) != 0);
   radioButton.setSelection((button1.getStyle() & SWT.RADIO) != 0);
   toggleButton.setSelection((button1.getStyle() & SWT.TOGGLE) != 0);
   arrowButton.setSelection((button1.getStyle() & SWT.ARROW) != 0);
   flatButton.setSelection((button1.getStyle() & SWT.FLAT) != 0);
   borderButton.setSelection((button1.getStyle() & SWT.BORDER) != 0);
 }

} /*******************************************************************************

* Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
* 
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/

/**

* AlignableTab is the abstract superclass of example controls
* that can be aligned.
*/

abstract class AlignableTab extends Tab {

 /* Alignment Controls */
 Button leftButton, rightButton, centerButton;
 /* Alignment Group */
 Group alignmentGroup;
 /**
  * Creates the Tab within a given instance of ControlExample.
  */
 AlignableTab(ControlExample instance) {
   super(instance);
 }
 /**
  * Creates the "Control" group.
  */
 void createControlGroup() {
   super.createControlGroup();
   /* Create the group */
   alignmentGroup = new Group(controlGroup, SWT.NONE);
   alignmentGroup.setLayout(new GridLayout());
   alignmentGroup.setLayoutData(new GridData(
       GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
   alignmentGroup.setText(ControlExample.getResourceString("Alignment"));
   /* Create the controls */
   leftButton = new Button(alignmentGroup, SWT.RADIO);
   leftButton.setText(ControlExample.getResourceString("Left"));
   centerButton = new Button(alignmentGroup, SWT.RADIO);
   centerButton.setText(ControlExample.getResourceString("Center"));
   rightButton = new Button(alignmentGroup, SWT.RADIO);
   rightButton.setText(ControlExample.getResourceString("Right"));
   /* Add the listeners */
   SelectionListener selectionListener = new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       if (!((Button) event.widget).getSelection())
         return;
       setExampleWidgetAlignment();
     }
   };
   leftButton.addSelectionListener(selectionListener);
   centerButton.addSelectionListener(selectionListener);
   rightButton.addSelectionListener(selectionListener);
 }
 /**
  * Sets the alignment of the "Example" widgets.
  */
 abstract void setExampleWidgetAlignment();
 /**
  * Sets the state of the "Example" widgets.
  */
 void setExampleWidgetState() {
   super.setExampleWidgetState();
   Control[] controls = getExampleWidgets();
   if (controls.length != 0) {
     leftButton.setSelection((controls[0].getStyle() & SWT.LEFT) != 0);
     centerButton
         .setSelection((controls[0].getStyle() & SWT.CENTER) != 0);
     rightButton.setSelection((controls[0].getStyle() & SWT.RIGHT) != 0);
   }
 }

}


      </source>