/* * Created on Apr 13, 2015 * * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE */ package org.eclipse.nebula.widgets.xviewer.example; import java.util.Collection; import java.util.Date; import java.util.Map; import org.eclipse.nebula.widgets.xviewer.IXViewerPreComputedColumn; import org.eclipse.nebula.widgets.xviewer.core.model.SortDataType; import org.eclipse.nebula.widgets.xviewer.core.model.XViewerAlign; import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn; import org.eclipse.nebula.widgets.xviewer.example.model.SomeTask; /** * @author Donald G. Dunne */ public class MyPreComputedColumn extends XViewerColumn implements IXViewerPreComputedColumn { public MyPreComputedColumn() { super(MyXViewerFactory.COLUMN_NAMESPACE + ".preComputedColumnExample", "Pre Computed Column", 130, XViewerAlign.Left, true, SortDataType.String, false, "Background loaded column that loads prior to setting inputs to XViewer."); } /** * XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending * XViewerValueColumn MUST extend this constructor so the correct sub-class is created */ @Override public MyPreComputedColumn copy() { MyPreComputedColumn newXCol = new MyPreComputedColumn(); super.copy(this, newXCol); return newXCol; } @Override public void populateCachedValues(Collection<?> objects, Map<Long, String> preComputedValueMap) { try { Thread.sleep(2000); long time = (new Date()).getTime(); for (Object obj : objects) { preComputedValueMap.put(getKey(obj), "value " + time++); } } catch (InterruptedException ex) { // do nothing } } @Override public Long getKey(Object obj) { return new Long(((SomeTask) obj).getId().hashCode()); } @Override public String getText(Object obj, Long key, String cachedValue) { return cachedValue; } }