/**
*
*/
package org.nightlabs.jfire.reporting.ui.parameter.guifactory.jfireobjects;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.nightlabs.base.ui.table.AbstractTableComposite;
import org.nightlabs.base.ui.table.TableLabelProvider;
import org.nightlabs.jfire.workstation.Workstation;
/**
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*
*/
public class SelectedWorkstationsTable extends AbstractTableComposite<Workstation> {
public class LabelProvider extends TableLabelProvider {
@Override
public String getColumnText(Object element, int columnIndex) {
if (element instanceof Workstation) {
Workstation workstation = (Workstation) element;
return String.format(
"%s (%s)", //$NON-NLS-1$
workstation.getWorkstationID(), workstation.getDescription()
);
}
return ""; //$NON-NLS-1$
}
}
private Collection<Workstation> workstations = new ArrayList<Workstation>();
/**
* @param parent
* @param style
*/
public SelectedWorkstationsTable(Composite parent, int style) {
super(parent, style);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.table.AbstractTableComposite#createTableColumns(org.eclipse.jface.viewers.TableViewer, org.eclipse.swt.widgets.Table)
*/
@Override
protected void createTableColumns(TableViewer tableViewer, Table table) {
// TODO: FIXME: Fix Column layout on windows (column will be rendered only as wide as its header-text)
// TableLayout l = new TableLayout();
// new TableColumn(table, SWT.LEFT).setText("Selected user");
// l.addColumnData(new ColumnWeightData(10));
// table.setLayout(l);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.table.AbstractTableComposite#setTableProvider(org.eclipse.jface.viewers.TableViewer)
*/
@Override
protected void setTableProvider(TableViewer tableViewer) {
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.setLabelProvider(new LabelProvider());
tableViewer.setInput(workstations);
}
public Collection<Workstation> getSelectedWorkstations() {
return new ArrayList<Workstation>(workstations);
}
public void addWorkstation(Workstation workstation) {
if (!workstations.contains(workstation)) {
workstations.add(workstation);
setInput(workstations);
}
}
public void removeWorkstation(Workstation workstation) {
workstations.remove(workstation);
setInput(workstations);
}
public void removeSelectedWorkstations() {
Collection<Workstation> sel = getSelectedElements();
for (Workstation workstation : sel) {
workstations.remove(workstation);
}
setInput(workstations);
}
}