Package ch.fusun.baron.basic.client.ui.player

Source Code of ch.fusun.baron.basic.client.ui.player.SelectionTable

package ch.fusun.baron.basic.client.ui.player;

import java.util.List;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;

public class SelectionTable<T> {

  private final TableViewer tableViewer;

  private StructuredSelection selection = null;

  private final ColumnProvider<T>[] columnProviders;

  public SelectionTable(Composite parent, ColumnProvider<T>[] columnProviders) {
    this.columnProviders = columnProviders;
    tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL
        | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    Table table = tableViewer.getTable();
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    createColumns(parent, tableViewer);
    tableViewer
        .addSelectionChangedListener(new ISelectionChangedListener() {

          @Override
          public void selectionChanged(SelectionChangedEvent event) {
            selection = (StructuredSelection) event.getSelection();
          }
        });
  }

  private void createColumns(final Composite parent,
      final TableViewer tableViewer) {
    String[] titles = new String[columnProviders.length];
    int[] bounds = new int[columnProviders.length];

    int i = 0;
    TableViewerColumn col;
    for (final ColumnProvider<T> provider : columnProviders) {
      titles[i] = provider.getTitle();
      bounds[i] = provider.getBounds();
      i++;

      // First column is for the first name
      col = createTableViewerColumn(tableViewer, provider.getTitle(),
          provider.getBounds(), i);
      col.setLabelProvider(new ColumnLabelProvider() {
        @SuppressWarnings("unchecked")
        @Override
        public String getText(Object element) {
          return provider.getText((T) element);
        }

        @SuppressWarnings("unchecked")
        @Override
        public Image getImage(Object element) {
          return provider.getImage((T) element);
        }
      });
    }
  }

  /**
   * @return The selection made
   */
  public T getSelection() {
    return (T) selection.getFirstElement();
  }

  public void setInput(List<T> elements) {
    tableViewer.setInput(elements);
  }

  private static TableViewerColumn createTableViewerColumn(
      TableViewer viewer, String title, int bound, final int colNumber) {
    final TableViewerColumn viewerColumn = new TableViewerColumn(viewer,
        SWT.NONE);
    final TableColumn column = viewerColumn.getColumn();
    column.setText(title);
    column.setWidth(bound);
    column.setResizable(true);
    column.setMoveable(true);
    return viewerColumn;

  }

}
TOP

Related Classes of ch.fusun.baron.basic.client.ui.player.SelectionTable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.