import org.eclipse.jface.viewers.ILazyContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
public class LazyTableViewer extends TableViewer
{
+ public static Color highlightColor = Display.getDefault().getSystemColor(SWT.COLOR_YELLOW);
public LazyTableViewer(Composite parent, int style)
{
super(table);
}
+ public void highlightRow(int index, boolean highlight)
+ {
+ Table table = getTable();
+ if (index < 0 || index >= table.getItemCount())
+ return;
+ table.getItem(index).setBackground(highlight ? highlightColor : table.getBackground());
+ System.out.println("Infinite loop!!!");
+ ((ILazyContentProvider) getContentProvider()).updateElement(index);
+ }
+
@Override
public void setContentProvider(IContentProvider provider)
{
super.setContentProvider(provider);
}
- public void refreshLazy()
+ @Override
+ public void refresh()
{
Table t = getTable();
ILazyContentProvider provider = (ILazyContentProvider) getContentProvider();
doClearAll();
int startIndex = t.getTopIndex();
int numRows = t.getBounds().height / t.getItemHeight();
- int endIndex = startIndex + numRows + 5;
+ int endIndex = Integer.min(startIndex + numRows + 5, doGetItemCount());
for (int i = startIndex; i < endIndex; i++)
{