The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / tables / mi / BooleanEditingSupport.java
1 package net.mograsim.plugin.tables.mi;
2
3 import org.eclipse.jface.viewers.CellEditor;
4 import org.eclipse.jface.viewers.CheckboxCellEditor;
5 import org.eclipse.jface.viewers.EditingSupport;
6 import org.eclipse.jface.viewers.TableViewer;
7
8 import net.mograsim.logic.core.types.Bit;
9 import net.mograsim.machine.mi.MicroInstructionDefinition;
10 import net.mograsim.machine.mi.parameters.BooleanClassification;
11
12 public class BooleanEditingSupport extends EditingSupport
13 {
14         private final CheckboxCellEditor editor;
15         private final BooleanClassification boolClass;
16         private final TableViewer viewer;
17         private final int index;
18
19         public BooleanEditingSupport(TableViewer viewer, MicroInstructionDefinition definition, int index)
20         {
21                 super(viewer);
22                 this.viewer = viewer;
23                 this.boolClass = (BooleanClassification) definition.getParameterClassification(index);
24                 editor = new CheckboxCellEditor(viewer.getTable());
25                 this.index = index;
26         }
27
28         @Override
29         protected boolean canEdit(Object element)
30         {
31                 return true;
32         }
33
34         @Override
35         protected CellEditor getCellEditor(Object element)
36         {
37                 return editor;
38         }
39
40         @Override
41         protected Object getValue(Object element)
42         {
43                 return ((InstructionTableRow) element).data.getParameter(index).getValue().getMSBit(0).equals(Bit.ONE);
44         }
45
46         @Override
47         protected void setValue(Object element, Object value)
48         {
49                 ((InstructionTableRow) element).data.setParameter(index, boolClass.get((Boolean) value));
50                 viewer.update(element, null);
51         }
52
53 }