blob: e6cc0da146f5310a8d1b8107d2f074a7d05403ab [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.ui.define.panels;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
/**
* @author Roberto E. Escobar
*/
public class ListSelectionPanel extends Composite {
private TableViewer tableViewer;
private final IBaseLabelProvider labelProvider;
private final int width;
private final int height;
public ListSelectionPanel(Composite parent, int style, int width, int height, IBaseLabelProvider labelProvider) {
super(parent, style);
this.width = width;
this.height = height;
this.labelProvider = labelProvider;
createControl(this);
}
private void createControl(Composite parent) {
GridLayout layout = new GridLayout();
layout.marginWidth = 0;
layout.marginHeight = 0;
parent.setLayout(layout);
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
tableViewer = new TableViewer(parent, getTableStyle());
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.setLabelProvider(labelProvider);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.heightHint = width;
gd.widthHint = height;
Table table = tableViewer.getTable();
table.setLayoutData(gd);
table.setFont(parent.getFont());
}
private int getTableStyle() {
return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
}
public void addDoubleClickListener(IDoubleClickListener listener) {
tableViewer.addDoubleClickListener(listener);
}
public void addSelectionChangedListener(ISelectionChangedListener listener) {
tableViewer.addSelectionChangedListener(listener);
}
public void setInput(Object input) {
tableViewer.setInput(input);
}
public void setSelection(int index) {
tableViewer.getTable().select(index);
}
public void setSorter(ViewerSorter sorter) {
tableViewer.setSorter(sorter);
}
public IStructuredSelection getSelection() {
return (IStructuredSelection) tableViewer.getSelection();
}
public int indexOf(Object object) {
int found = -1;
TableItem[] items = tableViewer.getTable().getItems();
for (int index = 0; index < items.length; index++) {
TableItem item = items[index];
if (item.getData().equals(object)) {
found = index;
break;
}
}
return found;
}
}