summaryrefslogtreecommitdiffstats
path: root/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
diff options
context:
space:
mode:
Diffstat (limited to 'examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java')
-rwxr-xr-xexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java937
1 files changed, 0 insertions, 937 deletions
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
deleted file mode 100755
index b733a704fe..0000000000
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
+++ /dev/null
@@ -1,937 +0,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 Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.examples.controlexample;
-
-
-import org.eclipse.swt.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.events.*;
-
-/**
- * <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;
-
- static final String [] EVENT_NAMES = {
- "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"
- };
-
- /**
- * 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(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
- controlGroup.setText (ControlExample.getResourceString("Parameters"));
-
- /* Create individual groups inside the "Control" group */
- createStyleGroup ();
- createOtherGroup ();
- 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);
- }
- }
-
- /**
- * 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 (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
- 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);
- GridLayout gridLayout = new GridLayout ();
- exampleGroup.setLayout (gridLayout);
- exampleGroup.setLayoutData (new GridData (GridData.FILL_BOTH));
- }
-
- /**
- * 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);
- }
- }
- });
- Label filler = new Label(dialog, SWT.NONE);
- 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));
- GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
- gridData.horizontalSpan = 2;
- listenersGroup.setLayoutData (gridData);
- 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;
- }
- }
- });
- }
-
- 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 + 1, listener);
- }
- }
- }
-
- /**
- * Logs an untyped event to the event console.
- */
- void log(Event event) {
- String toString = EVENT_NAMES[event.type - 1] + ": ";
- 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.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 += new MenuEvent (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 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 (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);
- }
- /*
- * Force the entire widget tree to layout,
- * even when the child sizes may not have
- * changed.
- */
- int seenCount = 0;
- Composite [] seen = new Composite [4];
- for (int i=0; i<controls.length; i++) {
- Control control = controls [i];
- while (control != exampleGroup) {
- Composite parent = control.getParent ();
- int index = 0;
- while (index < seenCount) {
- if (seen [index] == parent) break;
- index++;
- }
- if (index == seenCount) parent.layout ();
- if (seenCount == seen.length) {
- Composite [] newSeen = new Composite [seen.length + 4];
- System.arraycopy (seen, 0, newSeen, 0, seen.length);
- seen = newSeen;
- }
- seen [seenCount++] = parent;
- control = control.getParent ();
- }
- }
- }
-
- /**
- * 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 ();
- }
-
- /**
- * 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 ());
- }
- }
-}