import java.util.Arrays;
import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter;
import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TableViewerEditor;
+import org.eclipse.jface.viewers.TableViewerFocusCellManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
public InstructionTable(Composite parent, DisplaySettings displaySettings)
{
- viewer = new LazyTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
+ viewer = new LazyTableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
this.displaySettings = displaySettings;
Table table = viewer.getTable();
table.setLinesVisible(true);
viewer.setUseHashlookup(true);
+ TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer));
+
+ ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer)
+ {
+ @Override
+ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event)
+ {
+ return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
+ || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
+ || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR)
+ || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
+ }
+ };
+ int features = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
+ | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION;
+ TableViewerEditor.create(viewer, focusCellManager, actSupport, features);
+
GridData viewerData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
viewerData.horizontalSpan = 3;
viewer.getTable().setLayoutData(viewerData);
private void createColumns()
{
+ viewer.getTable().setVisible(false);
+
int size = miDef.size();
columns = new TableViewerColumn[size + 1];
}
calculateOptimalColumnSize(i + 1, columnTitles[i], longestPossibleContents);
}
+
+ viewer.getTable().setVisible(true);
}
private static String calculateColumnTitle(int startBit, int endBit)
public void bindMicroInstructionMemory(MicroInstructionMemory memory)
{
this.memory = memory;
- this.miDef = memory.getDefinition().getMicroInstructionDefinition();
- setViewerInput(memory);
+ if (memory != null)
+ {
+ this.miDef = memory.getDefinition().getMicroInstructionDefinition();
+ setViewerInput(memory);
+ }
}
private static final String[] HEX_DIGITS = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
provider = new IntegerColumnLabelProvider(displaySettings, index);
break;
case MNEMONIC:
-// viewerColumn.setEditingSupport(editingSupport)
support = new MnemonicEditingSupport(viewer, miDef, index, this.provider);
provider = new ParameterLabelProvider(index);
break;