Java tutorial
/******************************************************************************* * 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.Combo; import org.eclipse.swt.widgets.Composite; 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.computeSize(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 ******************************************************************************/ /** * <code>Tab</code> 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.computeSize (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.computeSize(SWT.DEFAULT, SWT.DEFAULT); pushSize = pushItem.computeSize(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.computeSize(SWT.DEFAULT, SWT.DEFAULT); dropSize = dropDownItem.computeSize(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.computeSize(SWT.DEFAULT, SWT.DEFAULT); radioSize = radioItem.computeSize(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.computeSize(SWT.DEFAULT, SWT.DEFAULT); checkSize = checkItem.computeSize(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.computeSize(SWT.DEFAULT, SWT.DEFAULT); textSize = textItem.computeSize(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 ******************************************************************************/ /** * <code>ButtonTab</code> 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 ******************************************************************************/ /** * <code>AlignableTab</code> 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); } } }