org.rulez.magwas.zenta.templates.wizard.ModelViewsTreeViewer.java Source code

Java tutorial

Introduction

Here is the source code for org.rulez.magwas.zenta.templates.wizard.ModelViewsTreeViewer.java

Source

/**
 * This program and the accompanying materials
 * are made available under the terms of the License
 * which accompanies this distribution in the file LICENSE.txt
 */
package org.rulez.magwas.zenta.templates.wizard;

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

import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.rulez.magwas.zenta.editor.ui.ZentaLabelProvider;
import org.rulez.magwas.zenta.model.IFolder;
import org.rulez.magwas.zenta.model.INameable;

/**
 * Tree Viewer to Preview Model Views
 * 
 * @author Phillip Beauvoir
 */
public class ModelViewsTreeViewer extends TreeViewer {

    public ModelViewsTreeViewer(Composite parent, int style) {
        super(parent, style | SWT.BORDER);
        setContentProvider(new ModelViewsTreeViewerContentProvider());
        setLabelProvider(new ModelViewsTreeViewerLabelProvider());

        // Sort
        setSorter(new ViewerSorter() {
            @Override
            public int category(Object element) {
                if (element instanceof IFolder) {
                    return 0;
                }
                if (element instanceof EObject) {
                    return 1;
                }
                return 0;
            }
        });

    }

    /**
     *  Content Provider
     */
    private class ModelViewsTreeViewerContentProvider implements ITreeContentProvider {

        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
        }

        public void dispose() {
        }

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

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof IFolder) {
                List<Object> list = new ArrayList<Object>();

                // Folders
                list.addAll(((IFolder) parentElement).getFolders());

                // Elements
                list.addAll(((IFolder) parentElement).getElements());

                return list.toArray();
            }

            return new Object[0];
        }

        public Object getParent(Object element) {
            if (element instanceof EObject) {
                return ((EObject) element).eContainer();
            }
            return null;
        }

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

            return false;
        }
    }

    private class ModelViewsTreeViewerLabelProvider extends LabelProvider {

        @Override
        public String getText(Object element) {
            if (element instanceof INameable) {
                return ((INameable) element).getName();
            }
            return ""; //$NON-NLS-1$
        }

        @Override
        public Image getImage(Object element) {
            return ZentaLabelProvider.INSTANCE.getImage(element);
        }
    }
}