From 8daa6fa100d6932d2d4f932830ad2ab34c1b809d Mon Sep 17 00:00:00 2001 From: oihanealbizuri Date: Fri, 12 Jul 2019 15:39:25 +0200 Subject: [PATCH 1/3] Show cost with 2 decimals. Fixes #1659 --- .../ganttproject/GPTreeTableBase.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java index 6f03caceaf..a8f22d0fc8 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,6 +71,7 @@ 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.text.DecimalFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -96,6 +98,15 @@ public void applyComponentOrientation(ComponentOrientation o) { } }; + class DecimalRenderer extends DefaultTableCellRenderer { + private final DecimalFormat myFormatter = new DecimalFormat("#0.00"); + + 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) { @@ -926,7 +937,11 @@ private TableCellRenderer createCellRenderer(Class columnClass) { // renderer = TableCellRenderers.getNewDefaultRenderer(columnClass); // // } - return getTreeTable().getDefaultRenderer(columnClass); + if (Double.class.equals(columnClass)){ + return new DecimalRenderer(); + } else { + return getTreeTable().getDefaultRenderer(columnClass); + } } private TableCellEditor createCellEditor(Class columnClass) { From dcd2247e307b047575a08dc77af60a26d03ba34d Mon Sep 17 00:00:00 2001 From: oihanealbizuri Date: Fri, 8 Nov 2019 17:00:36 +0100 Subject: [PATCH 2/3] Decimals --- .../ganttproject/GPTreeTableBase.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java index a8f22d0fc8..c683a24fad 100644 --- a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java +++ b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java @@ -72,6 +72,7 @@ of the License, or (at your option) any later version. import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.DecimalFormat; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -99,7 +100,8 @@ public void applyComponentOrientation(ComponentOrientation o) { }; class DecimalRenderer extends DefaultTableCellRenderer { - private final DecimalFormat myFormatter = new DecimalFormat("#0.00"); + // private final DecimalFormat myFormatter = new DecimalFormat("#0.00"); + private final DecimalFormat myFormatter = new DecimalFormat(NumberFormat.getCurrencyInstance(getDefaultLocale().toString())); public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { value = myFormatter.format((Number)value); @@ -916,12 +918,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); @@ -936,12 +946,8 @@ private TableCellRenderer createCellRenderer(Class columnClass) { // { // renderer = TableCellRenderers.getNewDefaultRenderer(columnClass); // - // } - if (Double.class.equals(columnClass)){ - return new DecimalRenderer(); - } else { - return getTreeTable().getDefaultRenderer(columnClass); - } + //} + return getTreeTable().getDefaultRenderer(columnClass); } private TableCellEditor createCellEditor(Class columnClass) { From b3f0503a95220ac86bc052bc5f968ac156f112a1 Mon Sep 17 00:00:00 2001 From: oihanealbizuri Date: Mon, 2 Dec 2019 18:49:07 +0100 Subject: [PATCH 3/3] DecimalFormatter using Locale --- biz.ganttproject.app.localization | 2 +- .../net/sourceforge/ganttproject/GPTreeTableBase.java | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/biz.ganttproject.app.localization b/biz.ganttproject.app.localization index 7356de973e..14dd2cb93a 160000 --- a/biz.ganttproject.app.localization +++ b/biz.ganttproject.app.localization @@ -1 +1 @@ -Subproject commit 7356de973e5b45426d2c76b5580198cfd08a24fb +Subproject commit 14dd2cb93ad17671f4cf7461c721d79be0140125 diff --git a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java index c683a24fad..f2f8d32879 100644 --- a/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java +++ b/ganttproject/src/net/sourceforge/ganttproject/GPTreeTableBase.java @@ -73,15 +73,8 @@ of the License, or (at your option) any later version. import java.awt.event.MouseEvent; import java.text.DecimalFormat; import java.text.NumberFormat; -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.util.*; import java.util.List; -import java.util.ListIterator; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -101,7 +94,7 @@ public void applyComponentOrientation(ComponentOrientation o) { class DecimalRenderer extends DefaultTableCellRenderer { // private final DecimalFormat myFormatter = new DecimalFormat("#0.00"); - private final DecimalFormat myFormatter = new DecimalFormat(NumberFormat.getCurrencyInstance(getDefaultLocale().toString())); + 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);