Merge remote-tracking branch 'origin/development' into development
[Mograsim.git] / 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.machine.mi.MicroInstruction;
9 import net.mograsim.machine.mi.parameters.BooleanImmediate;
10
11 public class BooleanEditingSupport extends EditingSupport
12 {
13         private final CheckboxCellEditor editor;
14         private final TableViewer viewer;
15         private final int index;
16
17         public BooleanEditingSupport(TableViewer viewer, int index)
18         {
19                 super(viewer);
20                 this.viewer = viewer;
21                 editor = new CheckboxCellEditor(viewer.getTable());
22                 this.index = index;
23         }
24
25         @Override
26         protected boolean canEdit(Object element)
27         {
28                 return true;
29         }
30
31         @Override
32         protected CellEditor getCellEditor(Object element)
33         {
34                 return editor;
35         }
36
37         @Override
38         protected Object getValue(Object element)
39         {
40                 return ((BooleanImmediate) ((MicroInstruction) element).getParameter(index)).getBooleanValue();
41         }
42
43         @Override
44         protected void setValue(Object element, Object value)
45         {
46                 ((MicroInstruction) element).setParameter(index, new BooleanImmediate((Boolean) value));
47                 viewer.update(element, null);
48         }
49
50 }