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++)
{
private MicroInstructionMemory memory;
private DisplaySettings displaySettings;
private InstructionTableContentProvider provider;
+ private int highlighted = 0;
@SuppressWarnings("unused")
@Override
viewerData.horizontalSpan = 3;
viewer.getTable().setLayoutData(viewerData);
- displaySettings.addObserver(() -> viewer.refreshLazy());
+ displaySettings.addObserver(() -> viewer.refresh());
MachineContext.getInstance().registerObserver(this);
}
+ public void highlight(int index)
+ {
+ viewer.highlightRow(highlighted, false);
+ viewer.highlightRow(index, true);
+ viewer.getTable().setTopIndex(index);
+ }
+
@SuppressWarnings("unused")
private void setupMenuButtons(Composite parent)
{
}
col.setEditingSupport(support);
col.setLabelProvider(provider);
+ col.getColumn().setToolTipText(miDef.getParameterDescription(index).orElse(""));
}
private TableViewerColumn createTableViewerColumn(String title, int bound)