package org.appwork.utils.swing.table.columns; import java.text.DecimalFormat; 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 ExtEuroColumn<E> extends ExtColumn<E> { private static final long serialVersionUID = 3468695684952592989L; private RenderLabel label; final private DecimalFormat format = new DecimalFormat("0.00"); public ExtEuroColumn(String name, ExtTableModel<E> table) { super(name, table); this.label = new RenderLabel(); label.setBorder(null); label.setOpaque(false); label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); this.setRowSorter(new ExtDefaultRowSorter<E>() { /** * sorts the icon by hashcode */ @Override public int compare(Object o1, Object o2) { if (getCent(o1) == getCent(o2)) return 0; if (this.isSortOrderToggle()) { return getCent(o1) > getCent(o2) ? -1 : 1; } else { return getCent(o1) < getCent(o2) ? -1 : 1; } } }); } abstract protected long getCent(Object o2); @Override public Object getCellEditorValue() { return null; } @Override public boolean isEditable(Object obj) { return false; } @Override public boolean isEnabled(Object obj) { return true; } @Override public boolean isSortable(Object obj) { return true; } @Override public void setValue(Object value, Object object) { } @Override public JComponent getRendererComponent(ExtTable<E> table, E value, boolean isSelected, boolean hasFocus, int row, int column) { try { label.setText(format.format(getCent(value) / 100.0f) + " €"); } catch (Exception e) { label.setText(format.format("0.0f") + " €"); } label.setEnabled(isEnabled(value)); return label; } }