Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / featuretable / table / renders / FormattedCellRenderer.java @ 42775

History | View | Annotate | Download (2.41 KB)

1
package org.gvsig.fmap.dal.swing.impl.featuretable.table.renders;
2

    
3
import java.awt.Component;
4
import java.text.DateFormat;
5
import java.text.DecimalFormat;
6
import java.text.NumberFormat;
7
import java.text.SimpleDateFormat;
8
import java.util.Date;
9
import javax.swing.JTable;
10
import javax.swing.SwingConstants;
11
import javax.swing.table.DefaultTableCellRenderer;
12
import org.apache.commons.lang3.StringUtils;
13
import org.gvsig.fmap.dal.swing.FeatureTableModel;
14

    
15
public class FormattedCellRenderer extends DefaultTableCellRenderer {
16

    
17
    private static final long serialVersionUID = -162038647556726890L;
18
    private final FeatureTableModel tableModel;
19
    private final DecimalFormat decimalFormat;
20
    private final SimpleDateFormat dateFormat;
21

    
22
    public FormattedCellRenderer(FeatureTableModel tableModel) {
23
        this.tableModel = tableModel;
24
        this.decimalFormat = (DecimalFormat) NumberFormat.getInstance(this.tableModel.getLocaleOfData());
25
        this.dateFormat = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.MEDIUM, this.tableModel.getLocaleOfData());
26
    }
27

    
28
    @Override
29
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
30
        super.getTableCellRendererComponent(table,value, isSelected, hasFocus,row, column);
31
        try {
32
            if ( value instanceof Number ) {
33
                String pattern = this.tableModel.getColumnFormattingPattern(column);
34
                if ( !StringUtils.isBlank(pattern) ) {
35
                    this.decimalFormat.applyPattern(pattern);
36
                    String formated = this.decimalFormat.format(value);
37
                    this.setHorizontalAlignment(SwingConstants.RIGHT);
38
                    this.setText(formated);
39
                    return this;
40
                }
41
            }
42
            if ( value instanceof Date ) {
43
                String pattern = this.tableModel.getColumnFormattingPattern(column);
44
                if ( !StringUtils.isBlank(pattern) ) {
45
                    this.dateFormat.applyPattern(pattern);
46
                    String formated = this.dateFormat.format(value);
47
                    this.setHorizontalAlignment(SwingConstants.RIGHT);
48
                    this.setText(formated);
49
                    return this;
50
                }
51
            }
52
        } catch (Exception ex) {
53
            // Do nothing, use values from default renderer
54
        }
55
        return this;
56
    }
57

    
58
}