org.rulez.magwas.zenta.templates.dialog.TemplatesTreeViewer.java Source code

Java tutorial

Introduction

Here is the source code for org.rulez.magwas.zenta.templates.dialog.TemplatesTreeViewer.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.dialog;

import java.util.List;

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.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.rulez.magwas.zenta.editor.ui.IZentaImages;
import org.rulez.magwas.zenta.templates.model.ITemplate;
import org.rulez.magwas.zenta.templates.model.ITemplateGroup;

/**
 * Templates Tree Viewer
 * 
 * @author Phillip Beauvoir
 */
public class TemplatesTreeViewer extends TreeViewer {

    /**
     * @param parent
     * @param style
     */
    public TemplatesTreeViewer(Composite parent, int style) {
        super(parent, style);
        setContentProvider(new TemplatesTreeViewerContentProvider());
        setLabelProvider(new TemplatesTreeViewerLabelProvider());
        setSorter(new ViewerSorter());
    }

    /**
     *  Content Provider
     */
    private class TemplatesTreeViewerContentProvider 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 List<?>) {
                return ((List<?>) parentElement).toArray();
            }

            if (parentElement instanceof ITemplateGroup) {
                return ((ITemplateGroup) parentElement).getTemplates().toArray();
            }

            return new Object[0];
        }

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

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

            return false;
        }
    }

    private class TemplatesTreeViewerLabelProvider extends LabelProvider {

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

        @Override
        public Image getImage(Object element) {
            if (element instanceof ITemplateGroup) {
                return IZentaImages.ImageFactory.getImage(IZentaImages.ECLIPSE_IMAGE_FOLDER);
            }
            if (element instanceof ITemplate) {
                return ((ITemplate) element).getImage();
            }

            return null;
        }
    }
}