Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.fmap.control / src / main / java / org / gvsig / fmap / mapcontrol / dal / feature / swing / table / BooleanCellRenderer.java @ 46706

History | View | Annotate | Download (2.64 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.fmap.mapcontrol.dal.feature.swing.table;
7

    
8
import java.awt.Color;
9
import java.awt.Component;
10
import javax.swing.JCheckBox;
11
import javax.swing.JLabel;
12
import javax.swing.JTable;
13
import javax.swing.UIManager;
14
import javax.swing.border.Border;
15
import javax.swing.border.EmptyBorder;
16
import javax.swing.plaf.UIResource;
17
import javax.swing.table.TableCellRenderer;
18
import org.gvsig.fmap.dal.feature.Feature;
19
import static org.gvsig.fmap.dal.feature.Feature.CHECK_BASIC;
20
import static org.gvsig.fmap.dal.feature.Feature.CHECK_REQUIREDS;
21
import org.gvsig.tools.swing.api.ToolsSwingLocator;
22

    
23
/**
24
 *
25
 * @author fdiaz
26
 */
27
public class BooleanCellRenderer extends JCheckBox implements TableCellRenderer, UIResource {
28

    
29
    private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
30
    protected final Color backgroundColorWarning;
31

    
32
    @SuppressWarnings("OverridableMethodCallInConstructor")
33
    public BooleanCellRenderer() {
34
        super();
35
        setHorizontalAlignment(JLabel.CENTER);
36
        setBorderPainted(true);
37
        this.backgroundColorWarning = ToolsSwingLocator.getToolsSwingManager().getWarningBackgroundColor();
38
    }
39

    
40
    @Override
41
    public Component getTableCellRendererComponent(JTable table, Object value,
42
            boolean isSelected, boolean hasFocus, int row, int column) {
43
        try {
44
            if (isSelected) {
45
                setForeground(table.getSelectionForeground());
46
                super.setBackground(table.getSelectionBackground());
47
            } else {
48
                ConfigurableFeatureTableModel tableModel = (ConfigurableFeatureTableModel) table.getModel();
49

    
50
                Feature feature = tableModel.getFeatureAt(row);
51
                setForeground(table.getForeground());
52
                setBackground(table.getBackground());
53
                if (tableModel.getFeatureStore().isFeatureModified(feature)) {
54
                    try {
55
                        feature.validate(Feature.CHECK_RULES_AT_FINISH | CHECK_REQUIREDS | CHECK_BASIC);
56
                    } catch (Exception ex) {
57
                        this.setBackground(this.backgroundColorWarning);
58
                    }
59
                }
60
            }
61
            setSelected((value != null && ((Boolean) value)));
62

    
63
            if (hasFocus) {
64
                setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
65
            } else {
66
                setBorder(noFocusBorder);
67
            }
68
        } catch (Exception e) {
69
            
70
        }
71

    
72
        return this;
73
    }
74
}