Look.java Source code

Java tutorial

Introduction

Here is the source code for Look.java

Source

//Send questions, comments, bug reports, etc. to the authors:

//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

/**
 * This class demonstrates ViewForm
 */
public class Look {
    // Images used in the ViewForm
    private Image lookImage;
    private Image menuImage;

    // Counter for titles of ViewForms
    private int count = 0;

    /**
     * Runs the application
     */
    public void run() {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Look");

        // Load the images
        lookImage = new Image(display, this.getClass().getResourceAsStream("java2s.gif"));
        menuImage = new Image(display, this.getClass().getResourceAsStream("java2s.gif"));

        createContents(shell);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }

        // We created the images, so we must dispose
        if (lookImage != null)
            lookImage.dispose();
        if (menuImage != null)
            menuImage.dispose();
        display.dispose();
    }

    /**
     * Creates the main window's contents
     * 
     * @param parent the main window
     */
    public void createContents(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        // Pressing the "New Document" button will create a new ViewForm
        Button button = new Button(parent, SWT.PUSH);
        button.setText("New Document");

        // Create the composite that holds the ViewForms
        final Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
        composite.setLayout(new FillLayout());

        // Add the event handler to create the ViewForms
        button.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                createViewFormHelper(composite, "Document " + (++count));
                composite.layout();
            }
        });
    }

    /**
     * Helper function for creating the ViewForms
     * 
     * @param parent the parent Composite
     * @param text the title text
     */
    private void createViewFormHelper(final Composite parent, String text) {
        // Create the ViewForm
        final ViewForm vf = new ViewForm(parent, SWT.BORDER);

        // Create the CLabel for the top left, which will have an image and text
        CLabel label = new CLabel(vf, SWT.NONE);
        label.setText(text);
        label.setImage(lookImage);
        label.setAlignment(SWT.LEFT);
        vf.setTopLeft(label);

        // Create the downward-pointing arrow to display the menu
        // and set it as the top center
        final ToolBar tbMenu = new ToolBar(vf, SWT.FLAT);
        final ToolItem itemMenu = new ToolItem(tbMenu, SWT.PUSH);
        itemMenu.setImage(menuImage);
        vf.setTopCenter(tbMenu);

        // Create the close button and set it as the top right
        ToolBar tbClose = new ToolBar(vf, SWT.FLAT);
        ToolItem itemClose = new ToolItem(tbClose, SWT.PUSH);
        itemClose.setText("X");
        itemClose.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                vf.dispose();
                parent.layout();
            }
        });
        vf.setTopRight(tbClose);

        // Create the content--a multi-line text box
        final Text textArea = new Text(vf, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
        vf.setContent(textArea);

        /* Create the menu to display when the down arrow is pressed */

        final Menu menu = new Menu(tbMenu);
        MenuItem clear = new MenuItem(menu, SWT.NONE);
        clear.setText("Clear");
        clear.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                textArea.setText("");
            }
        });

        // Add the handler to display the menu
        itemMenu.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                // Place the menu right below the toolbar button
                Rectangle rect = itemMenu.getBounds();
                menu.setLocation(tbMenu.toDisplay(rect.x, rect.y + rect.height));
                menu.setVisible(true);
            }
        });
    }

    /**
     * The application entry point
     * 
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new Look().run();
    }
}