package org.nightlabs.jfire.trade.ui.overview.repository; import javax.jdo.JDOHelper; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.StructuredSelection; 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.TableContentProvider; import org.nightlabs.base.ui.table.TableLabelProvider; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.jfire.store.Repository; import org.nightlabs.jfire.trade.ui.repository.editor.RepositoryEditor; import org.nightlabs.jfire.trade.ui.repository.editor.RepositoryEditorInput; import org.nightlabs.jfire.trade.ui.resource.Messages; import org.nightlabs.jfire.transfer.id.AnchorID; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class RepositoryListComposite extends AbstractTableComposite<Repository> { public RepositoryListComposite(Composite parent, int style) { super(parent, style); getTableViewer().addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent e) { StructuredSelection s = (StructuredSelection)e.getSelection(); if (s.isEmpty()) return; Repository repository = (Repository)s.getFirstElement(); try { RCPUtil.openEditor( new RepositoryEditorInput((AnchorID) JDOHelper.getObjectId(repository)), RepositoryEditor.EDITOR_ID); } catch (Exception ex) { throw new RuntimeException(ex); } } }); } @Override protected void createTableColumns(TableViewer tableViewer, Table table) { new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.idColumn.text")); //$NON-NLS-1$ new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.repositoryNameTableColumn.text")); //$NON-NLS-1$ new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.ownerTableColumn.text")); //$NON-NLS-1$ new TableColumn(table, SWT.LEFT).setText(Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.repositoryTypeNameTableColumn.text")); //$NON-NLS-1$ table.setLayout(new WeightedTableLayout(new int[] { 20, 20, 20, 20 })); } @Override protected void setTableProvider(TableViewer tableViewer) { tableViewer.setContentProvider(new TableContentProvider()); tableViewer.setLabelProvider(new RepositoryListLabelProvider()); } class RepositoryListLabelProvider extends TableLabelProvider { public String getColumnText(Object element, int columnIndex) { if (element instanceof Repository) { Repository repository = (Repository) element; switch (columnIndex) { case(0): return repository.getAnchorID(); case(1): if (repository.getName() != null) { return repository.getName().getText(); } break; case(2): if (repository.getOwner() != null && repository.getOwner().getPerson() != null) return repository.getOwner().getPerson().getDisplayName(); break; case(3): return repository.getRepositoryType().getName().getText(); default: break; } } return ""; //$NON-NLS-1$ } } // public static String getAnchorTypeIDName(String anchorTypeID) // { // if (anchorTypeID.equals(Repository.ANCHOR_TYPE_ID_HOME)) { // return Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.homeRepositoryAnchorTypeIdName"); //$NON-NLS-1$ // } // else if (anchorTypeID.equals(Repository.ANCHOR_TYPE_ID_OUTSIDE)) { // return Messages.getString("org.nightlabs.jfire.trade.ui.overview.repository.RepositoryListComposite.outsideRepositoryAnchorTypeIdName"); //$NON-NLS-1$ // } // else // return anchorTypeID; // } }