blob: 191efd6c32fd72952cee722e2d7fc568d07bcb30 [file] [log] [blame]
package org.eclipse.swt.examples.controlexample;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved
*/
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import java.text.*;
import java.util.*;
public class ControlExample {
private static ResourceBundle resourceBundle =
ResourceBundle.getBundle("examples_control");
private ShellTab shellTab;
private TabFolder tabFolder;
static final int
ciClosedFolder = 0,
ciOpenFolder = 1,
ciTarget = 2;
static final String[] imageLocations = {
"closedFolder.gif",
"openFolder.gif",
"target.gif" };
Image images[];
/**
* 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.NULL);
Tab [] tabs = new Tab [] {
new ButtonTab (this),
new ComboTab (this),
new CoolBarTab (this),
new DialogTab (this),
new LabelTab (this),
new ListTab (this),
new ProgressBarTab (this),
new SashTab (this),
shellTab = new ShellTab(this),
new SliderTab (this),
new TableTab (this),
new TextTab (this),
new ToolBarTab (this),
new TreeTab (this),
};
for (int i=0; i<tabs.length; i++) {
TabItem item = new TabItem (tabFolder, SWT.NULL);
item.setText (tabs [i].getTabText ());
item.setControl (tabs [i].createTabFolderPage (tabFolder));
}
}
/**
* Grabs input focus.
*/
public void setFocus() {
tabFolder.setFocus();
}
/**
* 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();
}
/**
* 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"));
shell.open();
while (! shell.isDisposed()) {
if (! display.readAndDispatch()) display.sleep();
}
instance.dispose();
}
/**
* 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) {
try {
return resourceBundle.getString(key);
} catch (MissingResourceException e) {
return key;
} catch (NullPointerException e) {
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
*/
private void initResources() {
final Class clazz = ControlExample.class;
if (resourceBundle != null) {
try {
if (images == null) {
images = new Image[imageLocations.length];
for (int i = 0; i < imageLocations.length; ++i) {
ImageData source = new ImageData(clazz.getResourceAsStream(
imageLocations[i]));
ImageData mask = source.getTransparencyMask();
images[i] = new Image(null, source, mask);
}
}
return;
} catch (Throwable t) {
}
}
String error = (resourceBundle != null) ?
getResourceString("error.CouldNotLoadResources") :
"Unable to load resources";
freeResources();
throw new RuntimeException(error);
}
/**
* Frees the resources
*/
private 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;
}
}
}