package uk.ac.reload.editor.style;

//M:
class PreferencesCellRenderer extends javax.swing.table.DefaultTableCellRenderer{

   //Relación entre clase de value y TableCellRenderes adecuados para su presentación en la celda de una JTable
    private java.util.HashMap<Class,javax.swing.table.TableCellRenderer> oRenders;
    
    public PreferencesCellRenderer() {
        
         oRenders = new java.util.HashMap<Class,javax.swing.table.TableCellRenderer>();
         
         //File render
         FileRender filerender = new FileRender();
         oRenders.put(filerender.getTypeRender(),filerender);
         
         //Font render
          FontRender fontrender = new FontRender();
         oRenders.put(fontrender.getTypeRender(),fontrender);
         
         //Color render
          ColorRender colorrender = new ColorRender();
         oRenders.put(colorrender.getTypeRender(),colorrender);
         
    }

    //Método que devuelve el componente adecuadamente renderizado para su
    //presentación en la tabla. 
    public java.awt.Component getTableCellRendererComponent(javax.swing.JTable oTable,Object oValueToAssign,boolean isSelected,boolean hasFocus,int iRow,int iColumn) {
        //Averiguamos el render para la clase dada
        Value value = ((PreferencesTableModel)oTable.getModel()).getValue(iRow);
        javax.swing.table.TableCellRenderer oRender = oRenders.get(value.getValueClass());
        
        java.awt.Component oComponent;
        //Pasamos el control al render adecuado
        oComponent = oRender.getTableCellRendererComponent(oTable,oValueToAssign,isSelected,hasFocus,iRow,iColumn);
       
        return(oComponent);
    }
}
