net.sourceforge.msscodefactory.cflib.v1_11.CFLib.Swing.CFStringColumnCellRenderer.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.msscodefactory.cflib.v1_11.CFLib.Swing.CFStringColumnCellRenderer.java

Source

// Description: Java 7 Swing Blob Text Display Widget.

/*
 *   CFLib
 *
 *   Copyright (c) 2014 Mark Sobkow
 *   
 *      Licensed under the Apache License, Version 2.0 (the "License");
 *      you may not use this file except in compliance with the License.
 *      You may obtain a copy of the License at
 *   
 *          http://www.apache.org/licenses/LICENSE-2.0
 *   
 *      Unless required by applicable law or agreed to in writing, software
 *      distributed under the License is distributed on an "AS IS" BASIS,
 *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *      See the License for the specific language governing permissions and
 *      limitations under the License.
 *   
 * ***********************************************************************
 *
 *   Code manufactured by MSS Code Factory
 *
 *   $Revision: 1408 $
 */

package net.sourceforge.msscodefactory.cflib.v1_11.CFLib.Swing;

import java.math.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import java.awt.*;

import javax.swing.*;
import javax.swing.table.*;

import net.sourceforge.msscodefactory.cflib.v1_11.CFLib.*;

import org.apache.commons.codec.binary.Base64;

/**
 *   CFBlobColumnCellRenderer Swing Blob Table Cell Renderer.
 */
public class CFStringColumnCellRenderer extends DefaultTableCellRenderer {
    protected Object value = null;

    public CFStringColumnCellRenderer() {
        super();
    }

    public Component getTableCellRendererComponent(JTable table, Object val, boolean isSelected, boolean hasFocus,
            int row, int column) {
        value = val;
        if (isSelected) {
            setBackground(Color.BLACK);
            setForeground(Color.LIGHT_GRAY);
        } else {
            setBackground(Color.LIGHT_GRAY);
            setForeground(Color.BLACK);
        }
        return (this);
    }

    public void paint(Graphics g) {
        if (g == null) {
            return;
        }
        Rectangle bounds = getBounds();
        g.setColor(getBackground());
        g.fill3DRect(0, 0, bounds.width, bounds.height, true);
        g.setColor(getForeground());
        String str;
        if (value instanceof String) {
            str = (String) value;
        } else {
            str = null;
        }
        if (str != null) {
            int firstNewline = str.indexOf('\n');
            if (firstNewline < 0) {
                firstNewline = str.indexOf('\r');
                if (firstNewline < 0) {
                    firstNewline = str.indexOf('\f');
                    if (firstNewline < 0) {
                        firstNewline = str.length();
                    }
                }
            }
            String firstLine = str.substring(0, firstNewline);
            FontMetrics fm = g.getFontMetrics();
            int ascent = fm.getAscent();
            int leading = fm.getLeading();
            g.drawString(firstLine, 4, leading + ascent + 4);
        }
    }

    public void setValue(Object o) {
        super.setValue(o);
        value = o;
    }
}