Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / tables / mi / BooleanEditingSupport.java
index 7d21714..c3318b5 100644 (file)
@@ -5,19 +5,22 @@ import org.eclipse.jface.viewers.CheckboxCellEditor;
 import org.eclipse.jface.viewers.EditingSupport;
 import org.eclipse.jface.viewers.TableViewer;
 
-import net.mograsim.machine.mi.MicroInstruction;
-import net.mograsim.machine.mi.parameters.BooleanImmediate;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.machine.mi.MicroInstructionDefinition;
+import net.mograsim.machine.mi.parameters.BooleanClassification;
 
 public class BooleanEditingSupport extends EditingSupport
 {
        private final CheckboxCellEditor editor;
+       private final BooleanClassification boolClass;
        private final TableViewer viewer;
        private final int index;
 
-       public BooleanEditingSupport(TableViewer viewer, int index)
+       public BooleanEditingSupport(TableViewer viewer, MicroInstructionDefinition definition, int index)
        {
                super(viewer);
                this.viewer = viewer;
+               this.boolClass = (BooleanClassification) definition.getParameterClassification(index);
                editor = new CheckboxCellEditor(viewer.getTable());
                this.index = index;
        }
@@ -37,13 +40,13 @@ public class BooleanEditingSupport extends EditingSupport
        @Override
        protected Object getValue(Object element)
        {
-               return ((BooleanImmediate) ((MicroInstruction) element).getParameter(index)).getBooleanValue();
+               return ((InstructionTableRow) element).data.getParameter(index).getValue().getMSBit(0).equals(Bit.ONE);
        }
 
        @Override
        protected void setValue(Object element, Object value)
        {
-               ((MicroInstruction) element).setParameter(index, new BooleanImmediate((Boolean) value));
+               ((InstructionTableRow) element).data.setParameter(index, boolClass.get((Boolean) value));
                viewer.update(element, null);
        }