-
- refreshFilteredList();
- }
-
- protected TableViewer createTableViewer(final Composite parent) {
-
- Table table = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- TableViewer viewer = new TableViewer(table);
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- // pass a mapping between col index and property name to the comparator.
- List<String> propertiesList = new ArrayList<String>();
-
- // User ID
- TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText("User ID");
- column.getColumn().setWidth(100);
- column.getColumn().addSelectionListener(getSelectionAdapter(0));
- propertiesList.add(ARGEO_USER_ID);
- column.setLabelProvider(new CLProvider() {
- public String getText(Object elem) {
- return getProperty(elem, ARGEO_USER_ID);
- // if (username.equals(session.getUserID()))
- // return "[" + username + "]";
- // else
- // return username;
- }
- });
-
- // Displayed name
- column = new TableViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText("Name");
- column.getColumn().setWidth(150);
- column.getColumn().addSelectionListener(getSelectionAdapter(1));
- propertiesList.add(Property.JCR_TITLE);
- column.setLabelProvider(new CLProvider() {
- public String getText(Object elem) {
- return getProperty(elem, Property.JCR_TITLE);
- }
- });
-
- // E-mail
- column = new TableViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText("E-mail");
- column.getColumn().setWidth(150);
- column.getColumn().addSelectionListener(getSelectionAdapter(2));
- propertiesList.add(ARGEO_PRIMARY_EMAIL);
- column.setLabelProvider(new CLProvider() {
- public String getText(Object elem) {
- return getProperty(elem, ARGEO_PRIMARY_EMAIL);
- }
- });
-
- // Description
- column = new TableViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText("Description");
- column.getColumn().setWidth(200);
- column.getColumn().addSelectionListener(getSelectionAdapter(3));
- propertiesList.add(Property.JCR_DESCRIPTION);
- column.setLabelProvider(new CLProvider() {
- public String getText(Object elem) {
- return getProperty(elem, Property.JCR_DESCRIPTION);
- }
- });
-
- viewer.setComparator(new UsersViewerComparator(propertiesList));
-
- return viewer;
- }
-
- private class CLProvider extends ColumnLabelProvider {
-
- public String getToolTipText(Object element) {
- return getText(element);
- }
-
- @Override
- public Font getFont(Object elem) {
- // self
- String username = getProperty(elem, ARGEO_USER_ID);
- if (username.equals(session.getUserID()))
- return bold;
-
- // disabled
- try {
- Node userProfile = (Node) elem;
- // Node userProfile = userHome.getNode(ARGEO_PROFILE);
- if (!userProfile.getProperty(ARGEO_ENABLED).getBoolean())
- return italic;
- else
- return null;
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot get font for " + username, e);
- }
- }
-
- }
-
- private SelectionAdapter getSelectionAdapter(final int index) {
- SelectionAdapter selectionAdapter = new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- UsersViewerComparator comparator = (UsersViewerComparator) viewer
- .getComparator();
-
- if (index == comparator.getSortColumn()) {
- comparator.setAscending(!comparator.isAscending());
- }
- comparator.setSortColumn(index);
- viewer.getTable().setSortColumn(
- viewer.getTable().getColumn(index));
- viewer.getTable().setSortDirection(
- comparator.isAscending() ? SWT.UP : SWT.DOWN);
- viewer.refresh(false);
- }
- };
- return selectionAdapter;
- }
-
- private class UsersViewerComparator extends ViewerComparator {
-
- private List<String> propertyList;
- private int sortColumn = 0;
- private boolean ascending = true;
- // use this to enable two levels sort
- @SuppressWarnings("unused")
- private int lastSortColumn = 0;
- @SuppressWarnings("unused")
- private boolean lastAscending = true;
-
- public UsersViewerComparator(List<String> propertyList) {
- super();
- this.propertyList = propertyList;
- }
-
- public int compare(Viewer viewer, Object e1, Object e2) {
- String s1 = getProperty(e1, propertyList.get(sortColumn));
- String s2 = getProperty(e2, propertyList.get(sortColumn));
- int result = super.compare(viewer, s1, s2);
- return ascending ? result : (-1) * result;
- }
-
- /**
- * @return Returns the sortColumn.
- */
- public int getSortColumn() {
- return sortColumn;
- }
-
- /**
- * @param sortColumn
- * The sortColumn to set.
- */
- public void setSortColumn(int sortColumn) {
- if (this.sortColumn != sortColumn) {
- lastSortColumn = this.sortColumn;
- lastAscending = this.ascending;
- this.sortColumn = sortColumn;
- }
- }
-
- /**
- * @return Returns the ascending.
- */
- public boolean isAscending() {
- return ascending;
- }
-
- /**
- * @param ascending
- * The ascending to set.
- */
- public void setAscending(boolean ascending) {
- this.ascending = ascending;
- }