package org.nightlabs.jfire.auth.ui.preference;
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.UserManagementSystemType;
/**
* Table for representing existent {@link UserManagementSystemType}s.
*
* @author Denis Dudnik <deniska.dudnik[at]gmail{dot}com>
*
*/
public class UserManagementSystemTypeTable extends AbstractTableComposite<UserManagementSystemType<?>>{
/**
* {@inheritDoc}
*/
public UserManagementSystemTypeTable(Composite parent, int style) {
super(parent, style);
}
/**
* {@inheritDoc}
*/
public UserManagementSystemTypeTable(Composite parent, int style, boolean initTable) {
super(parent, style, initTable);
}
/**
* {@inheritDoc}
*/
public UserManagementSystemTypeTable(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.preference.UserManagementSystemTypeTable.columnName")); //$NON-NLS-1$
new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.auth.ui.preference.UserManagementSystemTypeTable.columnClass")); //$NON-NLS-1$
table.setLayout(new WeightedTableLayout(new int[] {50, 50}));
}
/**
* {@inheritDoc}
*/
@Override
protected void setTableProvider(TableViewer tableViewer) {
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.setLabelProvider(new UserManagementSystemTypeTableLabelProvider());
}
class UserManagementSystemTypeTableLabelProvider extends TableLabelProvider {
public UserManagementSystemTypeTableLabelProvider() {
super();
}
public String getColumnText(Object element, int columnIndex) {
if (element instanceof String){
return (String) element;
}else if (element instanceof UserManagementSystemType) {
UserManagementSystemType<?> userManagementSystemType = (UserManagementSystemType<?>) element;
switch (columnIndex) {
case(0):
String name = userManagementSystemType.getClass().getSimpleName();
if (userManagementSystemType.getName() != null
&& userManagementSystemType.getName().getText() != null
&& !userManagementSystemType.getName().getText().isEmpty()){
name = userManagementSystemType.getName().getText();
}
return name;
case(1):
return userManagementSystemType.getClass().getSimpleName();
}
}
return null;
}
}
}