/** * */ package org.marketcetera.photon.views.fixmessagedetail; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.marketcetera.photon.EclipseUtils; import ca.odell.glazedlists.gui.TableFormat; class FIXMessageDetailLabelProvider implements TableFormat<FIXMessageDetailTableRow>, ITableLabelProvider { private Table underlyingTable; public FIXMessageDetailLabelProvider(Table underlyingTable) { this.underlyingTable = underlyingTable; createTableColumns(); } private void createZeroFirstColumn() { TableColumn zeroFirstColumn = new TableColumn(underlyingTable, SWT.LEFT); zeroFirstColumn.setWidth(0); zeroFirstColumn.setResizable(false); zeroFirstColumn.setMoveable(false); zeroFirstColumn.setText(""); //$NON-NLS-1$ zeroFirstColumn.setImage(null); } private void createTableColumns() { createZeroFirstColumn(); FIXMessageDetailColumnType[] columns = FIXMessageDetailColumnType .values(); for (FIXMessageDetailColumnType columnInfo : columns) { int alignment = SWT.LEFT; if (columnInfo == FIXMessageDetailColumnType.Field) { alignment = SWT.RIGHT; } else if (columnInfo == FIXMessageDetailColumnType.Tag) { alignment = SWT.CENTER; } TableColumn column = new TableColumn(underlyingTable, alignment); column.setText(columnInfo.getName()); int width = getColumnWidthHint(columnInfo.getNumChars()); column.setWidth(width); } } private int getColumnWidthHint(int numChars) { return EclipseUtils.getTextAreaSize(underlyingTable, null, numChars, 1.0).x; } public Image getColumnImage(Object element, int columnIndex) { return null; } public String getColumnText(Object element, int columnIndex) { if (element == null || !(element instanceof FIXMessageDetailTableRow)) { return null; } FIXMessageDetailTableRow row = (FIXMessageDetailTableRow) element; Object columnValue = row.getColumnValue(columnIndex); if(columnValue == null) { return null; } return columnValue.toString(); } public void addListener(ILabelProviderListener listener) { } public void dispose() { } public boolean isLabelProperty(Object element, String property) { return true; } public void removeListener(ILabelProviderListener listener) { } public int getColumnCount() { return underlyingTable.getColumnCount(); } public String getColumnName(int index) { TableColumn column = underlyingTable.getColumn(index); return column.getText(); } public Object getColumnValue(FIXMessageDetailTableRow row, int columnIndex) { return row.getColumnValue(columnIndex); } }