Mercurial > hg > release > thermostat-1.0
changeset 407:47fec5c94cef
Fix sorting and formatting of histogram table.
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-June/001932.html
PR 944
author | Roman Kennke <rkennke@redhat.com> |
---|---|
date | Thu, 21 Jun 2012 12:26:40 +0200 |
parents | 941f350c71e3 |
children | 9fb6f2c51ec0 |
files | client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/HeapDumpController.java client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/Histogram.java client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/swing/HistogramPanel.java |
diffstat | 3 files changed, 42 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/HeapDumpController.java Wed Jun 20 17:06:38 2012 +0200 +++ b/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/HeapDumpController.java Thu Jun 21 12:26:40 2012 +0200 @@ -160,15 +160,13 @@ HeapInfo info = dump.getInfo(); InputStream stream = heapDAO.getHistogram(info); - List<String[]> instances = new ArrayList<>(); + List<Object[]> instances = new ArrayList<>(); if (stream != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); String line = null; try { - DecimalFormat formatter = new DecimalFormat("###,###.###"); - boolean startParsing = false; while ((line = reader.readLine()) != null) { if (line.startsWith("-")) { @@ -181,19 +179,17 @@ if (startParsing) { - String[] data = new String[3]; + Object[] data = new Object[3]; StringTokenizer tokenizer = new StringTokenizer(line); tokenizer.nextToken(); - long number = Long.parseLong(tokenizer.nextToken()); - String token = formatter.format(number); - data[1] = token; + Long number = Long.valueOf(Long.parseLong(tokenizer.nextToken())); + data[1] = number; - number = Long.parseLong(tokenizer.nextToken()); - token = formatter.format(number); - data[2] = token; + number = Long.valueOf(Long.parseLong(tokenizer.nextToken())); + data[2] = number; - token = DescriptorConverter.toJavaType(tokenizer.nextToken()); + String token = DescriptorConverter.toJavaType(tokenizer.nextToken()); data[0] = token; instances.add(data);
--- a/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/Histogram.java Wed Jun 20 17:06:38 2012 +0200 +++ b/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/Histogram.java Thu Jun 21 12:26:40 2012 +0200 @@ -42,7 +42,7 @@ private String[] header; - private List<String[]> data; + private List<Object[]> data; Histogram(String[] header) { this.header = header; @@ -52,11 +52,11 @@ return header; } - void setData(List<String[]> data) { + void setData(List<Object[]> data) { this.data = data; } - public List<String[]> getData() { + public List<Object[]> getData() { return data; } }
--- a/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/swing/HistogramPanel.java Wed Jun 20 17:06:38 2012 +0200 +++ b/client/heapdumper/src/main/java/com/redhat/thermostat/client/heap/swing/HistogramPanel.java Thu Jun 21 12:26:40 2012 +0200 @@ -36,12 +36,16 @@ package com.redhat.thermostat.client.heap.swing; +import java.text.DecimalFormat; + +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.BoxLayout; import javax.swing.JScrollPane; import com.redhat.thermostat.client.heap.Histogram; import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class HistogramPanel extends JPanel { @@ -59,11 +63,27 @@ JTable table = new JTable(new HistogramTableModel(histogram)); table.setFillsViewportHeight(true); table.setAutoCreateRowSorter(true); - + table.setDefaultRenderer(Long.class, new NiceNumberFormatter()); JScrollPane scrollPane = new JScrollPane(table); headerPanel.setContent(scrollPane); } + @SuppressWarnings("serial") + private final class NiceNumberFormatter extends DefaultTableCellRenderer { + + private final DecimalFormat formatter = new DecimalFormat("###,###.###"); + + private NiceNumberFormatter() { + setHorizontalAlignment(JLabel.RIGHT); + } + + @Override + protected void setValue(Object v) { + String formatted = formatter.format(v); + setText(formatted); + } + } + private class HistogramTableModel extends DefaultTableModel { private Histogram histogram; @@ -78,10 +98,19 @@ } return ""; } - + + @Override + public Class<?> getColumnClass(int column) { + if (column == 0) { + return String.class; + } else { + return Long.class; + } + } + @Override public Object getValueAt(int row, int column) { - String result = null; + Object result = null; if (histogram != null) { result = histogram.getData().get(row)[column]; }