import org.eclipse.jface.resource.*;
import org.eclipse.jface.util.*;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* This class tests the various JFace registries
*/
public class RegistryTest extends ApplicationWindow implements
IPropertyChangeListener {
// Keys for the registries
private static final String FOREGROUND = "foreground";
private static final String BACKGROUND = "background";
private static final String FONT = "font";
// The label to display the colors and fonts
private Label label;
// The color registry
private static ColorRegistry CR;
// The font registry
private static FontRegistry FR;
/**
* RegistryTest constructor
*/
public RegistryTest() {
super(null);
}
/**
* Runs the application
*/
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
/**
* Creates the window's contents
*
* @param parent the parent composite
* @return Control
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new FillLayout(SWT.VERTICAL));
// Set up the registries
CR = new ColorRegistry();
CR.addListener(this);
FR = new FontRegistry();
FR.addListener(this);
// Create the label
label = new Label(composite, SWT.CENTER);
label.setText("Hello from JFace");
// Create the randomize button
Button button = new Button(composite, SWT.PUSH);
button.setText("Randomize");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
CR.put(FOREGROUND, new RGB((int) (Math.random() * 255), (int) (Math
.random() * 255), (int) (Math.random() * 255)));
CR.put(BACKGROUND, new RGB((int) (Math.random() * 255), (int) (Math
.random() * 255), (int) (Math.random() * 255)));
FontData fontData = new FontData("Times New Roman",
(int) (Math.random() * 72), SWT.BOLD);
FR.put(FONT, new FontData[] { fontData});
}
});
return composite;
}
/**
* Called when any property changes
*
* @param event the event
*/
public void propertyChange(PropertyChangeEvent event) {
// Properties have changed; set into label
if (CR.hasValueFor(FOREGROUND)) label.setForeground(CR.get(FOREGROUND));
if (CR.hasValueFor(BACKGROUND)) label.setBackground(CR.get(BACKGROUND));
if (FR.hasValueFor(FONT)) label.setFont(FR.get(FONT));
getShell().pack();
}
/**
* The application entry point
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new RegistryTest().run();
}
}
|