Java tutorial
/******************************************************************************* * 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; } }