workcraft/workcraft

View on GitHub
workcraft/WorkcraftCore/src/org/workcraft/gui/properties/PropertyDeclarationRenderer.java

Summary

Maintainability
A
1 hr
Test Coverage
package org.workcraft.gui.properties;

import org.workcraft.gui.controls.FlatLabel;
import org.workcraft.utils.GuiUtils;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import java.awt.*;

public class PropertyDeclarationRenderer extends DefaultTableCellRenderer {

    private final JLabel label = new FlatLabel() {
        @Override
        public void paint(Graphics g) {
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
            super.paint(g);
        }
    };

    public PropertyDeclarationRenderer(PropertyDescriptor descriptor) {
        label.setHorizontalAlignment(LEADING);

        if ((descriptor != null) && (descriptor.getValue() == null) && descriptor.isCombinable()) {
            label.setFont(label.getFont().deriveFont(Font.BOLD));
        }
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int col) {

        JTableHeader tableHeader = table.getTableHeader();
        if (tableHeader != null) {
            label.setForeground(tableHeader.getForeground());
            label.setBackground(tableHeader.getBackground());
        }

        label.setText((value == null) ? "" : value.toString());

        boolean fits = GuiUtils.getLabelTextWidth(label) < GuiUtils.getTableColumnTextWidth(table, col);
        label.setToolTipText(fits ? null : label.getText());
        return label;
    }

}