package org.nightlabs.jfire.auth.ui; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; import javax.jdo.FetchPlan; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.nightlabs.base.ui.layout.WeightedTableLayout; import org.nightlabs.base.ui.table.TableLabelProvider; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.auth.ui.resource.Messages; import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectController; import org.nightlabs.jfire.base.ui.jdo.ActiveJDOObjectTableComposite; import org.nightlabs.jfire.security.dao.UserManagementSystemDAO; import org.nightlabs.jfire.security.integration.UserManagementSystem; import org.nightlabs.jfire.security.integration.UserManagementSystemType; import org.nightlabs.jfire.security.integration.id.UserManagementSystemID; import org.nightlabs.progress.ProgressMonitor; /** * Active JDO Table for representing {@link UserManagementSystem}s showing their names, types and leading status. * * @author Denis Dudnik <deniska.dudnik[at]gmail{dot}com> * */ public class UserManagementSystemActiveJDOTable extends ActiveJDOObjectTableComposite<UserManagementSystemID, UserManagementSystem>{ /** * The fetch groups of {@link UserManagementSystem} data. */ public static final String[] USER_MANAGEMENT_SYSTEM_FETCH_GROUPS = new String[]{ FetchPlan.DEFAULT, UserManagementSystem.FETCH_GROUP_NAME, UserManagementSystem.FETCH_GROUP_TYPE, UserManagementSystemType.FETCH_GROUP_NAME }; private class UserManagementSystemController extends ActiveJDOObjectController<UserManagementSystemID, UserManagementSystem> { @Override protected Class<? extends UserManagementSystem> getJDOObjectClass() { return UserManagementSystem.class; } @Override protected Collection<UserManagementSystem> retrieveJDOObjects(Set<UserManagementSystemID> objectIDs, ProgressMonitor monitor) { return UserManagementSystemDAO.sharedInstance().getUserManagementSystems( objectIDs, USER_MANAGEMENT_SYSTEM_FETCH_GROUPS, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected Collection<UserManagementSystem> retrieveJDOObjects(ProgressMonitor monitor) { return UserManagementSystemDAO.sharedInstance().getAllUserManagementSystems( USER_MANAGEMENT_SYSTEM_FETCH_GROUPS, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected void sortJDOObjects(List<UserManagementSystem> objects) { Collections.sort(objects); } } /** * {@inheritDoc} */ public UserManagementSystemActiveJDOTable(Composite parent, int style) { super(parent, style); } /** * {@inheritDoc} */ @Override protected void createTableColumns(TableViewer tableViewer, Table table) { new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.auth.ui.UserManagementSystemTable.columnName")); //$NON-NLS-1$ new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.auth.ui.UserManagementSystemTable.columnType")); //$NON-NLS-1$ new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.auth.ui.UserManagementSystemTable.columnLeading")); //$NON-NLS-1$ table.setLayout(new WeightedTableLayout(new int[] {40, 40, 20})); } @Override protected ActiveJDOObjectController<UserManagementSystemID, UserManagementSystem> createActiveJDOObjectController() { return new UserManagementSystemController(); } @Override protected ITableLabelProvider createLabelProvider() { return new UserManagementSystemTableLabelProvider(); } class UserManagementSystemTableLabelProvider extends TableLabelProvider { public UserManagementSystemTableLabelProvider() { super(); } public String getColumnText(Object element, int columnIndex) { if (element instanceof String){ return (String) element; }else if (element instanceof UserManagementSystem) { UserManagementSystem userManagementSystem = (UserManagementSystem) element; switch (columnIndex) { case(0): String name = userManagementSystem.getClass().getSimpleName(); if (userManagementSystem.getName() != null && userManagementSystem.getName().getText() != null && !userManagementSystem.getName().getText().isEmpty()){ name = userManagementSystem.getName().getText(); } return name; case(1): UserManagementSystemType<?> type = userManagementSystem.getType(); String typeName = type.getClass().getSimpleName(); if (type.getName() != null && type.getName().getText() != null && !type.getName().getText().isEmpty()){ typeName = type.getName().getText(); } return typeName; case(2): return userManagementSystem.isLeading() ? Messages.getString("org.nightlabs.jfire.auth.ui.UserManagementSystemTable.leadingLabel_yes") : Messages.getString("org.nightlabs.jfire.auth.ui.UserManagementSystemTable.leadingLabel_no"); //$NON-NLS-1$ //$NON-NLS-2$ } } return null; } } }