X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2FLazyTableViewer.java;fp=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2FLazyTableViewer.java;h=e00742f9d427b40fce5f5effea786d25382578a1;hb=c9d1646a7969181829b65dabb5db89ea7a2da69d;hp=0000000000000000000000000000000000000000;hpb=7958e659b3ea9aac43c1a67a0b2921c5323e4c84;p=Mograsim.git diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java new file mode 100644 index 00000000..e00742f9 --- /dev/null +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java @@ -0,0 +1,50 @@ +package net.mograsim.plugin.tables; + +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ILazyContentProvider; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; + +public class LazyTableViewer extends TableViewer +{ + + public LazyTableViewer(Composite parent, int style) + { + super(parent, style | SWT.VIRTUAL); + } + + public LazyTableViewer(Composite parent) + { + super(parent); + } + + public LazyTableViewer(Table table) + { + super(table); + } + + @Override + public void setContentProvider(IContentProvider provider) + { + if (!(provider instanceof ILazyContentProvider)) + throw new IllegalArgumentException("Content provider must be an ILazyContentProvider"); + super.setContentProvider(provider); + } + + public void refreshLazy() + { + Table t = getTable(); + ILazyContentProvider provider = (ILazyContentProvider) getContentProvider(); + doClearAll(); + int startIndex = t.getTopIndex(); + int numRows = t.getBounds().height / t.getItemHeight(); + int endIndex = startIndex + numRows + 5; + + for (int i = startIndex; i < endIndex; i++) + { + provider.updateElement(i); + } + } +}