/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.studio.tables.grid;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;
import javax.swing.table.TableCellRenderer;
import org.apache.commons.lang3.StringEscapeUtils;
abstract class HeaderCellRenderer implements TableCellRenderer, MouseListener {
protected final Color disabledColour = new Color(230, 230, 230);
protected final JLabel columnNameLabel = new JLabel();
protected final Color selectedColour = new Color(100, 150, 200);
HeaderCellRenderer() {
initLabel(columnNameLabel);
}
/**
*
*/
protected void initLabel(JLabel label) {
label.setOpaque(true);
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
prepareLabel(value, isSelected,getColumnIsItalics(column),columnNameLabel);
return columnNameLabel;
}
protected abstract boolean getColumnIsItalics(int col);
/**
* @param value
* @param isSelected
*/
protected void prepareLabel(Object value, boolean isSelected,boolean italics, JLabel label) {
StringBuilder builder = new StringBuilder();
if (value != null) {
builder.append("<html><strong>");
if(italics){
builder.append("<em>");
}
builder.append(StringEscapeUtils.escapeHtml4(value.toString()));
if(italics){
builder.append("</em>");
}
builder.append("</strong></html>");
}
label.setText(builder.toString());
if (isSelected) {
label.setBackground(selectedColour);
} else {
label.setBackground(disabledColour);
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}