RegistryTest.java Source code

Java tutorial

Introduction

Here is the source code for RegistryTest.java

Source

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();
    }
}