+package jalview.fts.core;
+
+import java.awt.Component;
+import java.text.DecimalFormat;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+
+/**
+ * The class to handle the formatting of the double values for JTable cells.
+ */
+public class DecimalFormatTableCellRenderer extends
+ DefaultTableCellRenderer
+{
+ private DecimalFormat formatter;
+
+ public DecimalFormatTableCellRenderer(boolean isFormated,
+ int significantFigures)
+ {
+ String integerFormater = isFormated ? "###,##0" : "0";
+ String fractionFormater = isFormated ? "###,##0." : "0.";
+ if (significantFigures > 0)
+ {
+ StringBuilder significantFigureBuilder = new StringBuilder();
+ for (int x = 1; x <= significantFigures; ++x)
+ {
+ significantFigureBuilder.append("0");
+ }
+ formatter = new DecimalFormat(fractionFormater
+ + significantFigureBuilder.toString());
+ }
+ else
+ {
+ formatter = new DecimalFormat(integerFormater);
+ }
+ super.setHorizontalAlignment(JLabel.RIGHT);
+ }
+
+ public DecimalFormatTableCellRenderer()
+ {
+ super.setHorizontalAlignment(JLabel.RIGHT);
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table,
+ Object value, boolean isSelected, boolean hasFocus, int row,
+ int column)
+ {
+ if (value == null)
+ {
+ return null;
+ }
+
+ value = formatter.format(value);
+
+ return super.getTableCellRendererComponent(table, value, isSelected,
+ hasFocus, row, column);
+ }
+}
\ No newline at end of file