package com.dgex.offspring.application.ui.blocks; import nxt.Block; import org.apache.log4j.Logger; import org.eclipse.jface.viewers.ILazyContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import com.dgex.offspring.nxtCore.service.INxtService; public class BlockLazyContentProvider implements ILazyContentProvider { private static Logger logger = Logger .getLogger(BlockLazyContentProvider.class); private final TableViewer viewer; private INxtService nxt; public BlockLazyContentProvider(TableViewer viewer) { this.viewer = viewer; } @Override public void dispose() { this.nxt = null; } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { this.nxt = (INxtService) newInput; } @Override public void updateElement(int index) { /* * To *reverse* the index is to have the *last* block returned when block 0 * is requested and the first block returned when the last row is requested. * The total number of blocks is always in nxt.getBlockCount(). */ int height = (nxt.getBlockCount() - index) - 1; Block block = nxt.getBlockAtHeight(height); // logger.info("index=" + index + " height=" + height + " block=" + block); if (block != null) viewer.replace(block, index); } }