/*******************************************************************************
* 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);
}
}