MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
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.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 {
    private ItemFilter filter = new ItemFilter();

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

    }

    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText("Food List");
    }

    protected Control createContents(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayout(new GridLayout(1, false));
        Button filterButton = new Button(composite, SWT.CHECK);
        filterButton.setText("&Show only healthy");

        final ListViewer lv = new ListViewer(composite);
        lv.setContentProvider(new ItemContentProvider());
        lv.setLabelProvider(new ItemLabelProvider());
        lv.setInput(new ItemList());

        filterButton.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                if (((Button) event.widget).getSelection())
                    lv.addFilter(filter);
                else
                    lv.removeFilter(filter);
            }
        });

        parent.pack();
        return composite;
    }

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

class MyItem {
    private String name;
    private boolean visible;

    public MyItem(String name, boolean healthy) {
        this.name = name;
        this.visible = healthy;
    }

    public boolean isVisible() {
        return visible;
    }

    public String getName() {
        return name;
    }
}

class ItemFilter extends ViewerFilter {
    public boolean select(Viewer arg0, Object arg1, Object arg2) {
        return ((MyItem) arg2).isVisible();
    }
}

class ItemList {
    private ArrayList foods;

    public ItemList() {
        foods = new ArrayList();
        foods.add(new MyItem("A", true));
        foods.add(new MyItem("B", false));
        foods.add(new MyItem("C", true));
        foods.add(new MyItem("D", false));
        foods.add(new MyItem("E", true));
        foods.add(new MyItem("F", false));
        foods.add(new MyItem("G", true));
        foods.add(new MyItem("H", false));
        foods.add(new MyItem("I", true));
        foods.add(new MyItem("K", false));
    }

    public List getFoods() {
        return Collections.unmodifiableList(foods);
    }
}

class ItemLabelProvider implements ILabelProvider {
    public Image getImage(Object arg0) {
        return null;
    }

    public String getText(Object arg0) {
        return ((MyItem) arg0).getName();
    }

    public void addListener(ILabelProviderListener arg0) {
    }

    public void dispose() {
    }

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

    public void removeListener(ILabelProviderListener arg0) {
    }
}

class ItemContentProvider implements IStructuredContentProvider {
    public Object[] getElements(Object arg0) {
        return ((ItemList) arg0).getFoods().toArray();
    }

    public void dispose() {
    }

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