org.eclipse.mdht.uml.fhir.ui.properties.FHIRTableViewer.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.mdht.uml.fhir.ui.properties.FHIRTableViewer.java

Source

/*******************************************************************************
 * Copyright (c) 2015 David A Carlson
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     David A Carlson (Clinical Cloud Solutions, LLC) - initial API and implementation
 *
 *******************************************************************************/
package org.eclipse.mdht.uml.fhir.ui.properties;

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

import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.mdht.uml.common.ui.util.AdapterFactoryCellModifier;
import org.eclipse.mdht.uml.edit.provider.UML2ExtendedAdapterFactory;
import org.eclipse.mdht.uml.fhir.provider.FHIRItemProviderAdapterFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Table;

public abstract class FHIRTableViewer extends TableViewer {
    private AdapterFactory adapterFactory = null;
    private AdapterFactoryContentProvider adapterFactoryContentProvider = null;
    private AdapterFactoryLabelProvider adapterFactoryLabelProvider = null;
    private ICellModifier adapterFactoryCellModifier = null;

    public FHIRTableViewer(Table table) {
        super(table);

        createColumns();
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        getAdapterFactory();
        setContentProvider(adapterFactoryContentProvider);
        setLabelProvider(adapterFactoryLabelProvider);
        //         setCellModifier(adapterFactoryCellModifier);
    }

    protected AdapterFactory getAdapterFactory() {
        if (adapterFactory == null) {
            List<AdapterFactory> factories = new ArrayList<AdapterFactory>();
            factories.add(new FHIRItemProviderAdapterFactory());
            factories.add(new UML2ExtendedAdapterFactory());

            adapterFactory = new ComposedAdapterFactory(factories);
            adapterFactoryContentProvider = createContentProvider(adapterFactory);
            adapterFactoryLabelProvider = createLabelProvider(adapterFactory);
            adapterFactoryCellModifier = createCellModifier(adapterFactory);
        }

        return adapterFactory;
    }

    protected AdapterFactoryContentProvider createContentProvider(AdapterFactory adapterFactory) {
        return new AdapterFactoryContentProvider(adapterFactory);
    }

    protected AdapterFactoryLabelProvider createLabelProvider(AdapterFactory adapterFactory) {
        return new AdapterFactoryLabelProvider(adapterFactory);
    }

    protected ICellModifier createCellModifier(AdapterFactory adapterFactory) {
        return new AdapterFactoryCellModifier(adapterFactory);
    }

    protected void createColumns() {
        // implemented by subclass
    }

    protected TableViewerColumn createTableViewerColumn(String header, int width, int idx) {
        TableViewerColumn column = new TableViewerColumn(this, SWT.LEFT, idx);
        column.getColumn().setText(header);
        column.getColumn().setWidth(width);
        column.getColumn().setResizable(true);
        column.getColumn().setMoveable(true);

        return column;
    }

    public List<EObject> getSelectedElements() {
        List<EObject> selectedElements = new ArrayList<EObject>();
        ISelection selection = getSelection();
        if (selection instanceof IStructuredSelection) {
            for (Object selected : ((IStructuredSelection) selection).toList()) {
                if (selected instanceof EObject) {
                    selectedElements.add((EObject) selected);
                }
            }
        }

        return selectedElements;
    }
}