package org.nightlabs.jfire.trade.admin.ui.overview; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Set; import javax.jdo.FetchPlan; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.nightlabs.base.ui.layout.WeightedTableLayout; import org.nightlabs.base.ui.table.TableLabelProvider; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.jdo.JDOObjectsChangedEvent; import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectController; import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectTableComposite; import org.nightlabs.jfire.store.Unit; import org.nightlabs.jfire.store.dao.UnitDAO; import org.nightlabs.jfire.store.id.UnitID; import org.nightlabs.progress.ProgressMonitor; public class UnitTable extends ActiveJDOObjectTableComposite<UnitID, Unit> { public static final String[] FETCH_GROUP = new String[] { FetchPlan.DEFAULT, Unit.FETCH_GROUP_NAME, Unit.FETCH_GROUP_SYMBOL }; public UnitTable(Composite parent, int style) { super(parent, style); load(); } @Override protected ActiveJDOObjectController<UnitID, Unit> createActiveJDOObjectController() { return new UnitController(); } @Override protected ITableLabelProvider createLabelProvider() { return new UnitTableLabelProvider(); } @Override protected void createTableColumns(TableViewer tableViewer, Table table) { TableColumn unitSymbol; TableColumn unitName; unitSymbol = new TableColumn(table, SWT.LEFT); unitName = new TableColumn(table, SWT.LEFT); unitSymbol.setText("Symbol"); unitName.setText("Name"); table.setLayout(new WeightedTableLayout(new int[]{1,1})); table.setLinesVisible(false); } private class UnitController extends ActiveJDOObjectController<UnitID, Unit> { @Override protected Class<? extends Unit> getJDOObjectClass() { return Unit.class; } @Override protected Collection<Unit> retrieveJDOObjects(Set<UnitID> objectIDs, ProgressMonitor monitor) { return UnitDAO.sharedInstance().getUnits(objectIDs, FETCH_GROUP, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected Collection<Unit> retrieveJDOObjects(ProgressMonitor monitor) { return UnitDAO.sharedInstance().getUnits(FETCH_GROUP, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected void sortJDOObjects(List<Unit> objects) { Collections.sort(objects, new Comparator<Unit>() { @Override public int compare(Unit o1, Unit o2) { return o1.getUnitID().compareTo(o2.getUnitID()); } }); } @Override protected void onJDOObjectsChanged(JDOObjectsChangedEvent<UnitID, Unit> event) { } } class UnitTableLabelProvider extends TableLabelProvider { public String getColumnText(Object element, int columnIndex) { if (element instanceof Unit) { Unit unit = (Unit) element; switch (columnIndex) { case(0): return unit.getSymbol().getText(); case(1): return unit.getName().getText(); default: return ""; //$NON-NLS-1$ } } return null; } } }