/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.gui.renderer; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; import javax.swing.JLabel; import javax.swing.table.DefaultTableCellRenderer; /** * Renderer pour des Objets Number affichant au format English avec s�parateur (,) pour Formulaire Liste * * @version 1.0 */ public class NumberFormatRenderer extends DefaultTableCellRenderer { Locale locale = Locale.ENGLISH; private static NumberFormat NUMBER_FORMAT_2DEC; private static NumberFormat NUMBER_FORMAT_5DEC; private static NumberFormat NUMBER_FORMAT_6DEC; private static NumberFormat NUMBER_FORMAT_8DEC; private static NumberFormat NUMBER_FORMAT_15DEC; private static NumberFormat NUMBER_FORMAT_DEFAULT; /** * Constructor for the NumberFormatRenderer object */ public NumberFormatRenderer() { initNumberFormat(); setHorizontalAlignment(JLabel.RIGHT); } private void initNumberFormat() { NUMBER_FORMAT_2DEC = new DecimalFormat("#####0.00", new DecimalFormatSymbols(locale)); NUMBER_FORMAT_5DEC = new DecimalFormat("#####0.00000", new DecimalFormatSymbols(locale)); NUMBER_FORMAT_6DEC = new DecimalFormat("#####0.000000", new DecimalFormatSymbols(Locale.FRANCE)); NUMBER_FORMAT_8DEC = new DecimalFormat("#####0.00000000", new DecimalFormatSymbols(Locale.FRANCE)); NUMBER_FORMAT_15DEC = new DecimalFormat("#####0.000000000000000", new DecimalFormatSymbols(Locale.FRANCE)); NUMBER_FORMAT_DEFAULT = NumberFormat.getNumberInstance(Locale.FRANCE); } /** * Constructor for the NumberFormatRenderer object */ public NumberFormatRenderer(Locale locale) { this.locale = locale; initNumberFormat(); setHorizontalAlignment(JLabel.RIGHT); } /** * Sets the Value attribute of the GenericTableModel object * * @param value The new Value value */ @Override public void setValue(Object value) { if (value == null) { setText(""); } //pas de formattage si Integer (Id) else if (value instanceof java.lang.Integer) { setText(value.toString()); } else { BigDecimal number = new BigDecimal(value.toString()); switch (number.scale()) { case 2: setText(NUMBER_FORMAT_2DEC.format(value)); break; case 5: setText(NUMBER_FORMAT_5DEC.format(value)); break; case 6: setText(NUMBER_FORMAT_6DEC.format(value)); break; case 8: setText(NUMBER_FORMAT_8DEC.format(value)); break; case 15: setText(NUMBER_FORMAT_15DEC.format(value)); break; default: setText(NUMBER_FORMAT_DEFAULT.format(value)); } } } }