1 package net.mograsim.plugin.tables.mi;
3 import org.eclipse.jface.viewers.CellEditor;
4 import org.eclipse.jface.viewers.ComboBoxCellEditor;
5 import org.eclipse.jface.viewers.EditingSupport;
6 import org.eclipse.jface.viewers.TableViewer;
7 import org.eclipse.swt.SWT;
9 import net.mograsim.machine.mi.MicroInstruction;
10 import net.mograsim.machine.mi.MicroInstructionDefinition;
11 import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
12 import net.mograsim.machine.mi.parameters.Mnemonic;
13 import net.mograsim.machine.mi.parameters.MnemonicFamily;
15 public class MnemonicEditingSupport extends EditingSupport
17 private final ComboBoxCellEditor editor;
18 private final MnemonicFamily family;
19 private final int index;
20 private InstructionTableContentProvider provider;
22 public MnemonicEditingSupport(TableViewer viewer, MicroInstructionDefinition definition, int index,
23 InstructionTableContentProvider provider)
26 family = (MnemonicFamily) definition.getParameterClassifications()[index];
27 editor = new ComboBoxCellEditor(viewer.getTable(), family.getStringValues(), SWT.READ_ONLY);
29 editor.setValidator(new MnemonicCellEditorValidator(family));
30 this.provider = provider;
34 protected boolean canEdit(Object element)
40 protected CellEditor getCellEditor(Object element)
46 protected Object getValue(Object element)
48 InstructionTableRow row = ((InstructionTableRow) element);
49 return ((Mnemonic) row.data.getCell(row.address).getParameter(index)).ordinal();
53 protected void setValue(Object element, Object value)
55 InstructionTableRow row = ((InstructionTableRow) element);
56 MicroInstructionParameter[] params = row.data.getCell(row.address).getParameters();
57 params[index] = family.get((Integer) value);
58 row.data.setCell(row.address, MicroInstruction.create(params));
59 provider.update(row.address);