diff --git a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java index b331be04be..a6e8b56e4a 100644 --- a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java +++ b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java @@ -58,6 +58,7 @@ of the License, or (at your option) any later version. import javax.swing.event.TableColumnModelListener; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; @@ -70,15 +71,10 @@ of the License, or (at your option) any later version. import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.EventObject; -import java.util.GregorianCalendar; -import java.util.LinkedList; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.*; import java.util.List; -import java.util.ListIterator; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -96,6 +92,16 @@ public void applyComponentOrientation(ComponentOrientation o) { } }; + class DecimalRenderer extends DefaultTableCellRenderer { + // private final DecimalFormat myFormatter = new DecimalFormat("#0.00"); + private final DecimalFormat myFormatter = new DecimalFormat(NumberFormat.getNumberInstance(GanttLanguage.getInstance().getLocale()).toString()); + + public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + value = myFormatter.format((Number)value); + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } + } + private GPAction myEditCellAction = new GPAction("tree.edit") { @Override public void actionPerformed(ActionEvent e) { @@ -911,12 +917,20 @@ protected List getDefaultColumns() { protected TableColumnExt newTableColumnExt(int modelIndex) { TableColumnExt result = new TableColumnExt(modelIndex); Class columnClass = getTreeTableModel().getColumnClass(modelIndex); - TableCellRenderer renderer = createCellRenderer(columnClass); + String columnName = getTreeTableModel().getColumnName(modelIndex).toLowerCase(); + TableCellRenderer renderer; + Boolean costColumn = false; + if (Double.class.equals(columnClass) && columnName.equals("cost")) { + renderer = new DecimalRenderer(); + costColumn = true; + } else { + renderer = createCellRenderer(columnClass); + } if (renderer != null) { result.setCellRenderer(renderer); } TableCellEditor editor = createCellEditor(columnClass); - if (editor != null) { + if (editor != null && !costColumn) { result.setCellEditor(editor); } else { System.err.println("no editor for column=" + modelIndex + " class=" + columnClass); @@ -931,7 +945,7 @@ private TableCellRenderer createCellRenderer(Class columnClass) { // { // renderer = TableCellRenderers.getNewDefaultRenderer(columnClass); // - // } + //} return getTreeTable().getDefaultRenderer(columnClass); }