X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2Fmi%2FMnemonicEditingSupport.java;h=7248f4f522bd2b45a5200f41219acb486bb20a26;hb=648fc6e69e09fe4467cb6bac47934be1a7dcf0d6;hp=765e434388d7b85a9feb2174d821f0c76a4aa161;hpb=7d05144c25daa53e60fc9ed9fd503546a86567f8;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/MnemonicEditingSupport.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/MnemonicEditingSupport.java index 765e4343..7248f4f5 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/MnemonicEditingSupport.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/MnemonicEditingSupport.java @@ -6,7 +6,9 @@ import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; +import net.mograsim.machine.mi.MicroInstruction; import net.mograsim.machine.mi.MicroInstructionDefinition; +import net.mograsim.machine.mi.parameters.MicroInstructionParameter; import net.mograsim.machine.mi.parameters.Mnemonic; import net.mograsim.machine.mi.parameters.MnemonicFamily; @@ -23,8 +25,10 @@ public class MnemonicEditingSupport extends EditingSupport super(viewer); family = (MnemonicFamily) definition.getParameterClassifications()[index]; editor = new ComboBoxCellEditor(viewer.getTable(), family.getStringValues(), SWT.READ_ONLY); + editor.setActivationStyle( + ComboBoxCellEditor.DROP_DOWN_ON_TRAVERSE_ACTIVATION | ComboBoxCellEditor.DROP_DOWN_ON_PROGRAMMATIC_ACTIVATION + | ComboBoxCellEditor.DROP_DOWN_ON_MOUSE_ACTIVATION | ComboBoxCellEditor.DROP_DOWN_ON_KEY_ACTIVATION); this.index = index; - editor.setValidator(new MnemonicCellEditorValidator(family)); this.provider = provider; } @@ -43,14 +47,20 @@ public class MnemonicEditingSupport extends EditingSupport @Override protected Object getValue(Object element) { - return ((Mnemonic) ((InstructionTableRow) element).data.getParameter(index)).ordinal(); + InstructionTableRow row = ((InstructionTableRow) element); + return ((Mnemonic) row.data.getCell(row.address).getParameter(index)).ordinal(); } @Override protected void setValue(Object element, Object value) { InstructionTableRow row = ((InstructionTableRow) element); - row.data.setParameter(index, family.get((Integer) value)); + MicroInstructionParameter[] params = row.data.getCell(row.address).getParameters(); + Mnemonic newParam = family.get((Integer) value); + if (newParam.equals(params[index])) + return; + params[index] = newParam; + row.data.setCell(row.address, MicroInstruction.create(params)); provider.update(row.address); }