Explorer.java Source code

Java tutorial

Introduction

Here is the source code for Explorer.java

Source

import java.io.File;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.TableColumn;

public class Explorer extends ApplicationWindow {
    public Explorer() {
        super(null);
    }

    protected Control createContents(Composite parent) {
        SashForm sash_form = new SashForm(parent, SWT.HORIZONTAL | SWT.NULL);

        TreeViewer tv = new TreeViewer(sash_form);
        tv.setContentProvider(new FileTreeContentProvider());
        tv.setLabelProvider(new FileTreeLabelProvider());
        tv.setInput(new File("C:\\"));

        final TableViewer tbv = new TableViewer(sash_form, SWT.BORDER);
        tbv.setContentProvider(new FileTableContentProvider());
        tbv.setLabelProvider(new FileTableLabelProvider());

        TableColumn column = new TableColumn(tbv.getTable(), SWT.LEFT);
        column.setText("Name");
        column.setWidth(200);
        tbv.getTable().setHeaderVisible(true);

        tv.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();

                Object selected_file = selection.getFirstElement();
                tbv.setInput(selected_file);
            }
        });

        return sash_form;
    }

    public static void main(String[] args) {
        Explorer w = new Explorer();
        w.setBlockOnOpen(true);
        w.open();
        Display.getCurrent().dispose();
    }
}

class FileTreeLabelProvider extends LabelProvider {
    public String getText(Object element) {
        return ((File) element).getName();
    }
}

class FileTreeContentProvider implements ITreeContentProvider {
    public Object[] getChildren(Object element) {
        Object[] kids = ((File) element).listFiles();
        return kids == null ? new Object[0] : kids;
    }

    public Object[] getElements(Object element) {
        return getChildren(element);
    }

    public boolean hasChildren(Object element) {
        return getChildren(element).length > 0;
    }

    public Object getParent(Object element) {
        return null;
    }

    public void dispose() {
    }

    public void inputChanged(Viewer viewer, Object old_input, Object new_input) {
    }
}

class FileTableLabelProvider implements ITableLabelProvider {
    public String getColumnText(Object obj, int i) {
        return ((File) obj).getName();
    }

    public void addListener(ILabelProviderListener ilabelproviderlistener) {
    }

    public void dispose() {
    }

    public boolean isLabelProperty(Object obj, String s) {
        return false;
    }

    public void removeListener(ILabelProviderListener ilabelproviderlistener) {
    }

    public Image getColumnImage(Object arg0, int arg1) {
        return null;
    }
}

class FileTableContentProvider implements IStructuredContentProvider {
    public Object[] getElements(Object element) {
        Object[] kids = null;
        kids = ((File) element).listFiles();
        return kids == null ? new Object[0] : kids;
    }

    public void dispose() {
    }

    public void inputChanged(Viewer viewer, Object old_object, Object new_object) {
    }
}