package org.rr.jeborker.gui.cell;
import java.awt.BorderLayout;
import java.awt.Component;
import java.util.List;
import java.util.logging.Level;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import org.rr.commons.log.LoggerFactory;
import org.rr.commons.swing.SwingUtils;
import org.rr.commons.swing.components.StarRater;
import org.rr.commons.utils.CommonUtils;
public class StarRatingPropertyRenderer extends JPanel implements TableCellRenderer {
private static final long serialVersionUID = -9177633701463286482L;
private StarRater starRater;
public StarRatingPropertyRenderer() {
starRater = new StarRater();
this.setLayout(new BorderLayout());
this.add(starRater, BorderLayout.CENTER);
}
@SuppressWarnings("rawtypes")
public void setRatingValue(Object value) {
if(value instanceof List) {
value = ((List)value).get(0);
}
Number number = CommonUtils.toNumber(value);
if(number !=null) {
float rating = number.floatValue() / 2f;
((StarRater)starRater).setRating(rating);
} else {
LoggerFactory.log(Level.WARNING, this, "could not parse the entered value \""+String.valueOf(value)+"\"as Number.");
}
}
public void setValue(Object value) {
this.setRatingValue(value);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setValue(value);
SwingUtils.setColor(this, isSelected);
return this;
}
}