How to create CustomControl in SWT
/*******************************************************************************
* 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);
}
}
}
Related examples in the same category