package org.appwork.utils.swing.table.columns; import javax.swing.BorderFactory; import javax.swing.JComponent; import org.appwork.utils.swing.renderer.RenderLabel; import org.appwork.utils.swing.table.ExtColumn; import org.appwork.utils.swing.table.ExtDefaultRowSorter; import org.appwork.utils.swing.table.ExtTable; import org.appwork.utils.swing.table.ExtTableModel; public abstract class ExtLongColumn<E> extends ExtColumn<E> { private static final long serialVersionUID = -6917352290094392921L; private final RenderLabel label; public ExtLongColumn(final String name) { this(name, null); } public ExtLongColumn(String name, ExtTableModel<E> table) { super(name, table); label = new RenderLabel(); label.setBorder(null); label.setOpaque(false); label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); this.setRowSorter(new ExtDefaultRowSorter<E>() { @Override public int compare(E o1, E o2) { long l1=getLong(o1); long l2=getLong(o2); if (l1==l2) return 0; if (this.isSortOrderToggle()) { return l1 > l2 ? -1 : 1; } else { return l1 < l2 ? -1 : 1; } } }); } protected abstract long getLong(E value); @Override public Object getCellEditorValue() { return null; } @Override public boolean isEditable(E obj) { return false; } @Override public boolean isEnabled(E obj) { return true; } @Override public boolean isSortable(Object obj) { return true; } @Override public void setValue(Object value, E object) { } @Override public JComponent getRendererComponent(ExtTable<E> table, E value, boolean isSelected, boolean hasFocus, int row, int column) { label.setText(getLong(value) + ""); label.setEnabled(isEnabled(value)); return label; } }