View Javadoc
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  /** Enable flag like editing support for various BOOLEAN properties */
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  	/** Define this depending on the context */
31  	protected abstract boolean canEdit(Object element);
32  
33  	@Override
34  	protected Object getValue(Object element) {
35  		// check if current row display a primary title
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  }