package org.nightlabs.jfire.issuetracking.ui.issue.editor; 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.issue.IssueFileAttachment; import org.nightlabs.jfire.issuetracking.ui.resource.Messages; /** * An {@link AbstractTableComposite} to deal with displaying {@link IssueFileAttachment}s. * The table currently displays two main information about the attached file: * [At column 0] -- the filename; and * [At column 1] -- the filesize in bytes. * * @author Khaireel Mohamed - khaireel at nightlabs dot de */ public class IssueFileAttachmentTable extends AbstractTableComposite<IssueFileAttachment> { /** * Creates a new instance of an IssueFileAttachmentTable. */ public IssueFileAttachmentTable(Composite parent) { this(parent, SWT.NONE, DEFAULT_STYLE_SINGLE_BORDER); } /** * Creates a new instance of an IssueFileAttachmentTable. */ public IssueFileAttachmentTable(Composite parent, int style, int viewerStyle) { super(parent, style, true, viewerStyle); // setHeaderVisible(false); } /* (non-Javadoc) * @see org.nightlabs.base.ui.table.AbstractTableComposite#createTableColumns(org.eclipse.jface.viewers.TableViewer, org.eclipse.swt.widgets.Table) */ @Override protected void createTableColumns(TableViewer tableViewer, Table table) { TableColumn tableColumn = new TableColumn(table, SWT.NONE); tableColumn.setMoveable(true); tableColumn.setText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.issue.editor.IssueFileAttachmentTable.column.filename.text")); //$NON-NLS-1$ tableColumn = new TableColumn(table, SWT.NONE); tableColumn.setMoveable(true); tableColumn.setText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.issue.editor.IssueFileAttachmentTable.column.size.text")); //$NON-NLS-1$ WeightedTableLayout layout = new WeightedTableLayout(new int[]{70, 30}); table.setLayout(layout); } /* (non-Javadoc) * @see org.nightlabs.base.ui.table.AbstractTableComposite#setTableProvider(org.eclipse.jface.viewers.TableViewer) */ @Override protected void setTableProvider(TableViewer tableViewer) { tableViewer.setLabelProvider(new IssueFileAttachmentTableLabelProvider()); tableViewer.setContentProvider(new ArrayContentProvider()); } // -----------------------------------------------------------------------------------------------------| /** * Provides the contents for the {@link IssueFileAttachmentTable}. */ private class IssueFileAttachmentTableLabelProvider extends TableLabelProvider { @Override public String getColumnText(Object element, int columnIndex) { // Note: @colunmIndex 0 -- Filename. // @colunmIndex 1 -- Filesize. if (element != null && element instanceof IssueFileAttachment) { IssueFileAttachment issueFileAttachment = (IssueFileAttachment)element; if (columnIndex == 0) return issueFileAttachment.getFileName(); if (columnIndex == 1) return IssueFileAttachmentUtil.getFileSizeString(issueFileAttachment); //$NON-NLS-1$ } return ""; //$NON-NLS-1$ } } }