nu.bibi.breadcrumb.files.FileBreadcrumbViewer.java Source code

Java tutorial

Introduction

Here is the source code for nu.bibi.breadcrumb.files.FileBreadcrumbViewer.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Laurent Muller.
 * 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:
 *     Laurent Muller - initial API and implementation
 *******************************************************************************/
package nu.bibi.breadcrumb.files;

import java.io.File;

import nu.bibi.breadcrumb.BreadcrumbViewer;

import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

/**
 * File Breadcrumb Viewer.
 * <p>
 * This breadcrumb displays the system files with "My Computer" as input. User
 * can set the input with a given {@link File}.
 * </p>
 * The default values for filling, displaying and comparing values are:
 * <ul>
 * <li>Content provider: {@link FileContentProvider#DEFAULT}</li>
 * <li>Label provider: {@link FileLabelProvider}</li>
 * <li>Viewer comparator: {@link FileViewerComparator#DEFAULT}</li>
 * </ul>
 * 
 * @see Computer
 * @see File
 * @author Laurent Muller
 * @version 1.0
 */
public class FileBreadcrumbViewer extends BreadcrumbViewer {

    /*
     * the image file registry
     */
    private final ImageFileRegistry registry;

    /**
     * Create a new <code>FileBreadcrumbViewer</code>.
     * <p>
     * Style is one of:
     * <ul>
     * <li>SWT.NONE</li>
     * <li>SWT.VERTICAL</li>
     * <li>SWT.HORIZONTAL</li>
     * </ul>
     * 
     * @param parent
     *            the container for the viewer
     * @param style
     *            the style flag used for this viewer
     */
    public FileBreadcrumbViewer(final Composite parent, final int style) {
        super(parent, style);

        registry = new ImageFileRegistry(parent.getDisplay());
        parent.addListener(SWT.Dispose, new Listener() {
            @Override
            public void handleEvent(final Event event) {
                registry.dispose();
            }
        });

        setLabelProvider(new FileLabelProvider(registry));
        setContentProvider(new FileContentProvider());
        setComparator(FileViewerComparator.DEFAULT);
        setToolTipLabelProvider(getLabelProvider());
    }

    /**
     * Gets the image file registry.
     * 
     * @return the image file registry.
     */
    public ImageFileRegistry getImageFileRegistry() {
        return registry;
    }

    /*
     * (non-Javadoc)
     * @see nu.bibi.breadcrumb.BreadcrumbViewer#configureDropDownViewer(org.eclipse.jface.viewers.TreeViewer, java.lang.Object)
     */
    @Override
    protected void configureDropDownViewer(final TreeViewer viewer, final Object input) {
        // copy values
        viewer.setContentProvider(getContentProvider());
        viewer.setLabelProvider(getLabelProvider());
        viewer.setComparator(getComparator());
        viewer.setFilters(getFilters());
        viewer.setSelection(getSelection());
        ColumnViewerToolTipSupport.enableFor(viewer);
    }
}