MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
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.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class MainClass extends ApplicationWindow {
    public MainClass() {
        super(null);
        setBlockOnOpen(true);
        open();
        Display.getCurrent().dispose();

    }

    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText("File Tree");
        shell.setSize(400, 400);
    }

    protected Control createContents(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayout(new GridLayout(1, false));
        Button preserveCase = new Button(composite, SWT.CHECK);
        preserveCase.setText("&Preserve case");
        final TreeViewer tv = new TreeViewer(composite);
        tv.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
        tv.setContentProvider(new FileTreeContentProvider());
        tv.setLabelProvider(new FileTreeLabelProvider());
        tv.setInput("root");

        preserveCase.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                boolean preserveCase = ((Button) event.widget).getSelection();
                FileTreeLabelProvider ftlp = (FileTreeLabelProvider) tv.getLabelProvider();
                ftlp.setPreserveCase(preserveCase);
            }
        });
        return composite;
    }

    public static void main(String[] args) {
        new MainClass();
    }
}

class FileTreeLabelProvider implements ILabelProvider {
    private List listeners = new ArrayList();

    private Image file;

    private Image dir;

    boolean preserveCase;

    public FileTreeLabelProvider() {
        try {
            file = new Image(null, new FileInputStream("file.gif"));
            dir = new Image(null, new FileInputStream("directory.gif"));
        } catch (FileNotFoundException e) {
        }
    }

    public void setPreserveCase(boolean preserveCase) {
        this.preserveCase = preserveCase;
        LabelProviderChangedEvent event = new LabelProviderChangedEvent(this);
        for (int i = 0, n = listeners.size(); i < n; i++) {
            ILabelProviderListener ilpl = (ILabelProviderListener) listeners.get(i);
            ilpl.labelProviderChanged(event);
        }
    }

    public Image getImage(Object arg0) {
        return ((File) arg0).isDirectory() ? dir : file;
    }

    public String getText(Object arg0) {
        String text = ((File) arg0).getName();
        if (text.length() == 0) {
            text = ((File) arg0).getPath();
        }
        return preserveCase ? text : text.toUpperCase();
    }

    public void addListener(ILabelProviderListener arg0) {
        listeners.add(arg0);
    }

    public void dispose() {
        if (dir != null)
            dir.dispose();
        if (file != null)
            file.dispose();
    }

    public boolean isLabelProperty(Object arg0, String arg1) {
        return false;
    }

    public void removeListener(ILabelProviderListener arg0) {
        listeners.remove(arg0);
    }
}

class FileTreeContentProvider implements ITreeContentProvider {
    public Object[] getChildren(Object arg0) {
        return ((File) arg0).listFiles();
    }

    public Object getParent(Object arg0) {
        return ((File) arg0).getParentFile();
    }

    public boolean hasChildren(Object arg0) {
        Object[] obj = getChildren(arg0);
        return obj == null ? false : obj.length > 0;
    }

    public Object[] getElements(Object arg0) {
        return File.listRoots();
    }

    public void dispose() {
    }

    public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
    }
}