| /******************************************************************************* |
| * Copyright (c) 2012 Original authors and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Original authors and others - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.nebula.widgets.nattable.extension.glazedlists; |
| |
| import java.util.Comparator; |
| |
| import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; |
| import org.eclipse.nebula.widgets.nattable.config.NullComparator; |
| import org.eclipse.nebula.widgets.nattable.data.IColumnAccessor; |
| import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor; |
| import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyResolver; |
| import org.eclipse.nebula.widgets.nattable.layer.ILayer; |
| import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell; |
| import org.eclipse.nebula.widgets.nattable.sort.SortConfigAttributes; |
| |
| import ca.odell.glazedlists.gui.AdvancedTableFormat; |
| |
| public class NatColumnTableFormat<R> implements AdvancedTableFormat<R> { |
| |
| private final IColumnPropertyResolver columnPropertyResolver; |
| private IColumnAccessor<R> columnAccessor; |
| private IConfigRegistry configRegistry; |
| private final ILayer columnHeaderDataLayer; |
| |
| public NatColumnTableFormat( |
| IColumnPropertyAccessor<R> columnPropertyAccessor, |
| IConfigRegistry configRegistry, ILayer dataLayer) { |
| this(columnPropertyAccessor, columnPropertyAccessor, configRegistry, |
| dataLayer); |
| } |
| |
| public NatColumnTableFormat(IColumnAccessor<R> columnAccessor, |
| IColumnPropertyResolver columnPropertyResolver, |
| IConfigRegistry configRegistry, ILayer columnHeaderDataLayer) { |
| this.columnPropertyResolver = columnPropertyResolver; |
| this.columnAccessor = columnAccessor; |
| this.configRegistry = configRegistry; |
| this.columnHeaderDataLayer = columnHeaderDataLayer; |
| } |
| |
| @Override |
| public Class<?> getColumnClass(int col) { |
| return null; |
| } |
| |
| @Override |
| public Comparator<?> getColumnComparator(final int col) { |
| ILayerCell cell = this.columnHeaderDataLayer.getCellByPosition(col, 0); |
| if (cell == null) { |
| return null; |
| } |
| Comparator<?> comparator = this.configRegistry.getConfigAttribute( |
| SortConfigAttributes.SORT_COMPARATOR, cell.getDisplayMode(), |
| cell.getConfigLabels().getLabels()); |
| |
| return (comparator instanceof NullComparator) ? null : comparator; |
| } |
| |
| @Override |
| public String getColumnName(int col) { |
| return this.columnPropertyResolver.getColumnProperty(col); |
| } |
| |
| @Override |
| public int getColumnCount() { |
| return this.columnAccessor.getColumnCount(); |
| } |
| |
| @Override |
| public Object getColumnValue(R rowObj, int col) { |
| return this.columnAccessor.getDataValue(rowObj, col); |
| } |
| |
| } |