The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / tables / LazyTableViewer.java
1 package net.mograsim.plugin.tables;
2
3 import org.eclipse.jface.viewers.IContentProvider;
4 import org.eclipse.jface.viewers.ILazyContentProvider;
5 import org.eclipse.jface.viewers.TableViewer;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.graphics.Color;
8 import org.eclipse.swt.widgets.Composite;
9 import org.eclipse.swt.widgets.Display;
10 import org.eclipse.swt.widgets.Table;
11
12 public class LazyTableViewer extends TableViewer
13 {
14         public static Color highlightColor = Display.getDefault().getSystemColor(SWT.COLOR_YELLOW);
15
16         public LazyTableViewer(Composite parent, int style)
17         {
18                 super(parent, style | SWT.VIRTUAL);
19         }
20
21         public LazyTableViewer(Composite parent)
22         {
23                 super(parent);
24         }
25
26         public LazyTableViewer(Table table)
27         {
28                 super(table);
29         }
30
31         public void highlightRow(int index, boolean highlight)
32         {
33                 Table table = getTable();
34                 if (index < 0 || index >= table.getItemCount())
35                         return;
36                 table.getItem(index).setBackground(highlight ? highlightColor : table.getBackground());
37                 System.out.println("Infinite loop!!!");
38                 ((ILazyContentProvider) getContentProvider()).updateElement(index);
39         }
40
41         @Override
42         public void setContentProvider(IContentProvider provider)
43         {
44                 if (!(provider instanceof ILazyContentProvider))
45                         throw new IllegalArgumentException("Content provider must be an ILazyContentProvider");
46                 super.setContentProvider(provider);
47         }
48
49         @Override
50         public void refresh()
51         {
52                 Table t = getTable();
53                 ILazyContentProvider provider = (ILazyContentProvider) getContentProvider();
54                 doClearAll();
55                 int startIndex = t.getTopIndex();
56                 int numRows = t.getBounds().height / t.getItemHeight();
57                 int endIndex = Integer.min(startIndex + numRows + 5, doGetItemCount());
58
59                 for (int i = startIndex; i < endIndex; i++)
60                 {
61                         provider.updateElement(i);
62                 }
63         }
64 }