de.itemis.tooling.terminology.ui.search.EObjectDescriptionCheckboxTableViewer.java Source code

Java tutorial

Introduction

Here is the source code for de.itemis.tooling.terminology.ui.search.EObjectDescriptionCheckboxTableViewer.java

Source

/*******************************************************************************
 * Copyright (c) 2013 itemis AG (http://www.itemis.eu).
 * 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
 ******************************************************************************/
package de.itemis.tooling.terminology.ui.search;

import java.util.Arrays;
import java.util.List;

import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.ui.label.AbstractLabelProvider;

public class EObjectDescriptionCheckboxTableViewer extends CheckboxTableViewer {

    public EObjectDescriptionCheckboxTableViewer(Table table) {
        super(table);
        setLabelProvider(new AbstractLabelProvider() {
            @Override
            protected Object doGetText(Object element) {
                if (element instanceof IEObjectDescription) {
                    return ((IEObjectDescription) element).getQualifiedName().toString();
                }
                return super.doGetText(element);
            }
        });
    }

    @Override
    //make every selection event a check event
    public void handleSelect(SelectionEvent event) {
        if (event.detail != SWT.CHECK) {
            if (event.item instanceof TableItem) {
                TableItem ti = (TableItem) event.item;
                ti.setChecked(!ti.getChecked());
                event.detail = SWT.CHECK;
            }
        }
        super.handleSelect(event);
    }

    public static EObjectDescriptionCheckboxTableViewer newCheckList(Composite parent, int style) {
        Table table = new Table(parent, SWT.CHECK | style);
        return new EObjectDescriptionCheckboxTableViewer(table);
    }

    void setDescriptions(Iterable<IEObjectDescription> possibleValues) {
        for (IEObjectDescription ieObjectDescription : possibleValues) {
            add(ieObjectDescription);
        }
    }

    public void setCheckedNames(String[] selected) {
        List<String> list = Arrays.asList(selected);
        TableItem[] items = getTable().getItems();
        for (TableItem tableItem : items) {
            if (tableItem.getData() instanceof IEObjectDescription) {
                IEObjectDescription desc = (IEObjectDescription) tableItem.getData();
                if (list.contains(desc.getQualifiedName().toString())) {
                    setChecked(tableItem.getData(), true);
                }
            }
        }
    }

    public IEObjectDescription[] getChecked() {
        Object[] checkedElements = getCheckedElements();
        IEObjectDescription[] result = new IEObjectDescription[checkedElements.length];
        for (int i = 0; i < result.length; i++) {
            result[i] = ((IEObjectDescription) checkedElements[i]);
        }
        return result;
    }

    public String[] getCheckedNames() {
        IEObjectDescription[] checked = getChecked();
        String[] selected = new String[checked.length];
        for (int i = 0; i < checked.length; i++) {
            selected[i] = checked[i].getQualifiedName().toString();
        }
        return selected;
    }
}