/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package feuille.karaoke.renderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.SystemColor;
import javax.swing.BorderFactory;
import javax.swing.JTable;
import javax.swing.border.Border;
/**
*
* @author Unknown User
*/
public class tablePresetRenderer extends javax.swing.JLabel
implements javax.swing.table.TableCellRenderer {
private Color cFore = Color.black;
private Color cLayer = Color.white;
private Color cLayers = Color.lightGray;
Border unselectedBorder = null;
Border selectedBorder = null;
Border selectedBorderWithoutFocus = null;
Font fontText = new Font("Arial Unicode MS",Font.PLAIN,12);
// TODO firstlayer
private int firstLayer = 0;
public enum Column{
LAYER(0), COMMANDS(1);
private int id;
Column(int id){
this.id = id;
}
public int getId(){
return id;
}
}
public tablePresetRenderer(){
setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
//Obtient le texte et le transmet au JLabel (renderer)
String s = (String)value;
// System.out.println("--------------- COLUMN --> "+column);
if(column == table.getColumn(Column.COMMANDS.getId()).getModelIndex()){// Show rendered text / Affiche le texte avec le rendu
setText(withTextRender(s));
}else if(column == table.getColumn(Column.LAYER.getId()).getModelIndex()){// Show line's number / Affiche le numéro de la ligne
setText(withLineID(row));
}else{
setText(s);
}
//Puis d�fini les couleurs d'une case par d�faut
setForeground(cFore);
setBackground(isSelected==true? SystemColor.activeCaption : Color.white);
//D�fini les bordures de la s�lection
if (isSelected && hasFocus){
if (selectedBorder == null){
selectedBorder = BorderFactory.createMatteBorder(
1,1,1,1, SystemColor.activeCaption.darker());
}
setBorder(selectedBorder);
}else if (isSelected && !hasFocus){
if (selectedBorderWithoutFocus == null){
selectedBorderWithoutFocus = BorderFactory.createMatteBorder(
1,1,1,1, SystemColor.activeCaption);
}
setBorder(selectedBorderWithoutFocus);
}else{
unselectedBorder = BorderFactory.createMatteBorder(
1,1,1,1, Color.black);
setBorder(unselectedBorder);
}
return this;
}
public String withTextRender(String text){
String str;
str = text;
return str;
}
public String withLineID(int rowId){
String str = String.valueOf(firstLayer+rowId+1);
if(str.length()==1){
str = "00"+str;
}else if(str.length()==2){
str = "0"+str;
}
return str;
}
/** D�finit la police du texte
* @param f un objet <b>Font</b> */
@Override
public void setFont(Font f){
fontText = f;
}
/** D�finit la police du texte
* @param nom Le nom de la police
* @param fontStyle Le style de la police, BOLD, ITALIC, PLAIN ou BOLD+ITALIC
* @param size La taille de police */
public void setFont(String nom, int fontStyle, int size){
fontText = new Font(nom,fontStyle,size);
}
/** Obtiend la police du texte */
@Override
public Font getFont(){
return fontText;
}
private void setFirstLayer(String firstLayer){
this.firstLayer = Integer.parseInt(firstLayer);
}
}