]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/parts/JcrUsersTable.java
1 package org
.argeo
.eclipse
.ui
.parts
;
4 public class JcrUsersTable
{
7 * Composite that contains a JFace table to display users that are stored in JCR
8 * following the Argeo Conventions (See {@link ArgeoNames}
10 // public class JcrUsersTable extends Composite implements ArgeoNames {
11 // // private final static Log log =
12 // // LogFactory.getLog(UserTableComposite.class);
14 // private static final long serialVersionUID = -7385959046279360420L;
16 // private Session session;
18 // private boolean hasFilter;
19 // private boolean hasSelectionColumn;
20 // private int tableStyle;
22 // private TableViewer usersViewer;
23 // private Text filterTxt;
24 // private String filterHelpMsg = "Type filter criterion "
25 // + "separated by a space";
27 // private Font italic;
30 // /** Overwrite to display other columns */
31 // public List<JcrColumnDefinition> getColumnsDef() {
32 // List<JcrColumnDefinition> columnDefs = new ArrayList<JcrColumnDefinition>();
35 // columnDefs.add(new JcrColumnDefinition(ARGEO_USER_ID,
36 // PropertyType.STRING, "User ID", 100));
38 // columnDefs.add(new JcrColumnDefinition(Property.JCR_TITLE,
39 // PropertyType.STRING, "Name", 150));
42 // columnDefs.add(new JcrColumnDefinition(ARGEO_PRIMARY_EMAIL,
43 // PropertyType.STRING, "E-mail", 150));
46 // columnDefs.add(new JcrColumnDefinition(Property.JCR_DESCRIPTION,
47 // PropertyType.STRING, "Description", 200));
52 // public JcrUsersTable(Composite parent, int style, Session session) {
53 // super(parent, SWT.NO_FOCUS);
54 // this.tableStyle = style;
55 // this.session = session;
61 // * choose to add a field to filter results or not
62 // * @param addSelection
63 // * choose to add a column to select some of the displayed results
66 // public void populate(boolean addFilter, boolean addSelection) {
68 // Composite parent = this;
69 // italic = EclipseUiUtils.getItalicFont(parent);
70 // bold = EclipseUiUtils.getBoldFont(parent);
71 // hasFilter = addFilter;
72 // hasSelectionColumn = addSelection;
75 // GridLayout layout = EclipseUiUtils.noSpaceGridLayout();
76 // layout.verticalSpacing = 5;
77 // this.setLayout(layout);
79 // createFilterPart(parent);
80 // usersViewer = createTableViewer(parent);
81 // // EclipseUiSpecificUtils.enableToolTipSupport(usersViewer);
82 // usersViewer.setContentProvider(new UsersContentProvider());
83 // refreshFilteredList();
86 // public List<Node> getSelectedUsers() {
87 // if (hasSelectionColumn) {
88 // Object[] elements = ((CheckboxTableViewer) usersViewer)
89 // .getCheckedElements();
91 // List<Node> result = new ArrayList<Node>();
92 // for (Object obj : elements) {
93 // result.add((Node) obj);
97 // throw new EclipseUiException("Unvalid request: no selection column "
98 // + "has been created for the current table");
101 // /** Returns the User table viewer, typically to add doubleclick listener */
102 // public TableViewer getTableViewer() {
103 // return usersViewer;
106 // /** Returns filter String or null */
107 // protected String getFilterString() {
108 // return hasFilter ? filterTxt.getText() : null;
111 // private TableViewer createTableViewer(final Composite parent) {
112 // int style = tableStyle | SWT.H_SCROLL | SWT.V_SCROLL;
113 // if (hasSelectionColumn)
114 // style = style | SWT.CHECK;
116 // Table table = new Table(parent, style);
117 // table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
119 // TableViewer viewer;
120 // if (hasSelectionColumn)
121 // viewer = new CheckboxTableViewer(table);
123 // viewer = new TableViewer(table);
124 // table.setLinesVisible(true);
125 // table.setHeaderVisible(true);
127 // TableViewerColumn column;
129 // if (hasSelectionColumn) {
131 // column = ViewerUtils.createTableViewerColumn(viewer, "", SWT.NONE,
133 // column.setLabelProvider(new ColumnLabelProvider() {
134 // private static final long serialVersionUID = 1L;
137 // public String getText(Object element) {
141 // SelectionAdapter selectionAdapter = new SelectionAdapter() {
142 // private static final long serialVersionUID = 1L;
144 // boolean allSelected = false;
147 // public void widgetSelected(SelectionEvent e) {
148 // allSelected = !allSelected;
149 // ((CheckboxTableViewer) usersViewer)
150 // .setAllChecked(allSelected);
153 // column.getColumn().addSelectionListener(selectionAdapter);
156 // // Create other columns
157 // List<JcrColumnDefinition> colDefs = getColumnsDef();
159 // NodeViewerComparator comparator = new NodeViewerComparator();
161 // for (JcrColumnDefinition colDef : colDefs) {
162 // column = ViewerUtils.createTableViewerColumn(viewer,
163 // colDef.getHeaderLabel(), SWT.NONE, colDef.getColumnSize());
164 // column.setLabelProvider(new CLProvider(colDef.getPropertyName()));
165 // column.getColumn().addSelectionListener(
166 // JcrUiUtils.getNodeSelectionAdapter(i,
167 // colDef.getPropertyType(), colDef.getPropertyName(),
168 // comparator, viewer));
172 // // IMPORTANT: initialize comparator before setting it
173 // JcrColumnDefinition firstCol = colDefs.get(0);
174 // comparator.setColumn(firstCol.getPropertyType(),
175 // firstCol.getPropertyName());
176 // viewer.setComparator(comparator);
181 // private class CLProvider extends SimpleJcrNodeLabelProvider {
183 // private static final long serialVersionUID = 1L;
185 // public CLProvider(String propertyName) {
186 // super(propertyName);
189 // public String getToolTipText(Object element) {
190 // return getText(element);
194 // // public Font getFont(Object elem) {
196 // // String username = getProperty(elem, ARGEO_USER_ID);
197 // // if (username.equals(session.getUserID()))
201 // // Node userProfile = (Node) elem;
202 // // if (!userProfile.getProperty(ARGEO_ENABLED).getBoolean())
206 // // } catch (RepositoryException e) {
207 // // throw new EclipseUiException("Cannot get font for " + username, e);
213 // public boolean setFocus() {
214 // usersViewer.getTable().setFocus();
219 // public void dispose() {
223 // public void refresh() {
224 // refreshFilteredList();
227 // private String getProperty(Object element, String name) {
229 // Node userProfile = (Node) element;
230 // return userProfile.hasProperty(name) ? userProfile
231 // .getProperty(name).getString() : "";
232 // } catch (RepositoryException e) {
233 // throw new EclipseUiException("Cannot get property " + name, e);
237 // private class UsersContentProvider implements IStructuredContentProvider {
238 // private static final long serialVersionUID = 1L;
240 // public Object[] getElements(Object inputElement) {
241 // return (Object[]) inputElement;
244 // public void dispose() {
247 // public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
251 // /* MANAGE FILTER */
252 // private void createFilterPart(Composite parent) {
253 // // Text Area for the filter
254 // filterTxt = new Text(parent, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH
255 // | SWT.ICON_CANCEL);
256 // filterTxt.setMessage(filterHelpMsg);
257 // filterTxt.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
258 // | GridData.HORIZONTAL_ALIGN_FILL));
259 // filterTxt.addModifyListener(new ModifyListener() {
260 // private static final long serialVersionUID = 1L;
262 // public void modifyText(ModifyEvent event) {
263 // refreshFilteredList();
269 // * Refresh the user list: caller might overwrite in order to display a
270 // * subset of all users, typically to remove current user from the list
272 // protected void refreshFilteredList() {
275 // nodes = JcrUtils.nodeIteratorToList(listFilteredElements(session,
276 // hasFilter ? filterTxt.getText() : null));
277 // usersViewer.setInput(nodes.toArray());
278 // } catch (RepositoryException e) {
279 // throw new EclipseUiException("Unable to list users", e);
284 // * Build repository request : caller might overwrite in order to display a
285 // * subset of all users
287 // protected NodeIterator listFilteredElements(Session session, String filter)
288 // throws RepositoryException {
289 // QueryManager queryManager = session.getWorkspace().getQueryManager();
290 // QueryObjectModelFactory factory = queryManager.getQOMFactory();
292 // Selector source = factory.selector(ArgeoTypes.ARGEO_USER_PROFILE,
293 // ArgeoTypes.ARGEO_USER_PROFILE);
295 // // Dynamically build constraint depending on the filter String
296 // Constraint defaultC = null;
297 // if (filter != null && !"".equals(filter.trim())) {
298 // String[] strs = filter.trim().split(" ");
299 // for (String token : strs) {
300 // StaticOperand so = factory.literal(session.getValueFactory()
301 // .createValue("*" + token + "*"));
302 // Constraint currC = factory.fullTextSearch(
303 // source.getSelectorName(), null, so);
304 // if (defaultC == null)
307 // defaultC = factory.and(defaultC, currC);
311 // Ordering order = factory.ascending(factory.propertyValue(
312 // source.getSelectorName(), ARGEO_USER_ID));
313 // Ordering[] orderings = { order };
315 // QueryObjectModel query = factory.createQuery(source, defaultC,
318 // QueryResult result = query.execute();
319 // return result.getNodes();