1 package org.argeo.connect.ui.util;
2
3 import javax.jcr.Node;
4 import javax.jcr.PropertyType;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.people.PeopleException;
8 import org.eclipse.jface.viewers.CellEditor;
9 import org.eclipse.jface.viewers.CheckboxCellEditor;
10 import org.eclipse.jface.viewers.EditingSupport;
11 import org.eclipse.jface.viewers.TableViewer;
12
13
14 public abstract class BooleanEditingSupport extends EditingSupport {
15 private static final long serialVersionUID = 1L;
16 private final TableViewer viewer;
17 private final String propertyName;
18
19 public BooleanEditingSupport(TableViewer viewer, String propertyName) {
20 super(viewer);
21 this.viewer = viewer;
22 this.propertyName = propertyName;
23 }
24
25 @Override
26 protected CellEditor getCellEditor(Object element) {
27 return new CheckboxCellEditor(viewer.getTable());
28 }
29
30
31 protected abstract boolean canEdit(Object element);
32
33 @Override
34 protected Object getValue(Object element) {
35
36 try {
37 Node currNode = (Node) element;
38 if (currNode.hasProperty(propertyName)
39 && currNode.getProperty(propertyName).getValue().getType() == PropertyType.BOOLEAN)
40 return currNode.getProperty(propertyName).getBoolean();
41 } catch (RepositoryException e) {
42 throw new PeopleException("Unable to get " + propertyName + " value for node " + element, e);
43 }
44 return false;
45 }
46 }