package org.nightlabs.jfire.auth.ui;
import org.eclipse.jface.viewers.ArrayContentProvider;
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.AbstractTableComposite;
import org.nightlabs.base.ui.table.TableLabelProvider;
import org.nightlabs.jfire.auth.ui.resource.Messages;
import org.nightlabs.jfire.security.integration.UserManagementSystem;
import org.nightlabs.jfire.security.integration.UserManagementSystemType;
/**
* Simple table for representing {@link UserManagementSystem}s.
*
* @author Denis Dudnik <deniska.dudnik[at]gmail{dot}com>
*
*/
public class UserManagementSystemTable extends AbstractTableComposite<UserManagementSystem>{
/**
* {@inheritDoc}
*/
public UserManagementSystemTable(Composite parent, int style) {
super(parent, style);
}
/**
* {@inheritDoc}
*/
public UserManagementSystemTable(Composite parent, int style, boolean initTable) {
super(parent, style, initTable);
}
/**
* {@inheritDoc}
*/
public UserManagementSystemTable(Composite parent, int style, boolean initTable, int viewerStyle) {
super(parent, style, initTable, viewerStyle);
}
/**
* {@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}));
}
/**
* {@inheritDoc}
*/
@Override
protected void setTableProvider(TableViewer tableViewer) {
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.setLabelProvider(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;
}
}
}