/** * PlanetCellRenderer.java * Created On 2006, Apr 1, 2006 1:23:07 PM * @author E. Rajasekar */ package app.astrosoft.ui.table; import java.awt.Color; import java.awt.Component; import java.util.EnumMap; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import app.astrosoft.consts.DisplayFormat; import app.astrosoft.consts.DisplayStrings; import app.astrosoft.consts.Planet; import app.astrosoft.ui.util.UIConsts; public class PlanetCellRenderer implements TableCellRenderer { private TableCellRenderer tableCellRenderer; private boolean highlightRetrogrades; private boolean expandRetrogrades; private DisplayFormat planetFormat; private EnumMap<Planet, Boolean> planetDir; public PlanetCellRenderer(TableCellRenderer tableCellRenderer, DisplayFormat planetFormat, boolean highlightRetrogrades, boolean expandRetrogrades, EnumMap<Planet, Boolean> planetDir) { this.tableCellRenderer = tableCellRenderer; this.highlightRetrogrades = highlightRetrogrades; this.expandRetrogrades = expandRetrogrades; this.planetFormat = planetFormat; this.planetDir = planetDir; } public PlanetCellRenderer(TableCellRenderer tableCellRenderer) { this(tableCellRenderer, DisplayFormat.SYMBOL, false, false, null); } public PlanetCellRenderer(TableCellRenderer tableCellRenderer, boolean highlightRetrogrades, boolean expandRetrogrades, EnumMap<Planet, Boolean> planetDir) { this(tableCellRenderer, DisplayFormat.SYMBOL, highlightRetrogrades, expandRetrogrades, planetDir); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = tableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (value != null && value instanceof Planet && c instanceof JLabel){ JLabel l = new JLabel(((JLabel)c).getText()); Planet p = (Planet)value; l.setFont(c.getFont()); l.setText(p.toString(planetFormat)); Color fgClr = null; if (p.isAsc()){ fgClr = Color.RED; } if(p == Planet.Moon){ fgClr = Color.MAGENTA; } if (highlightRetrogrades){ if (planetDir.containsKey(p) && planetDir.get(p)){ fgClr = UIConsts.GREENISH_BLUE; if(expandRetrogrades){ l.setText(p.toString(planetFormat) + " (" + DisplayStrings.RETRO_SYM + ")"); } } } if (fgClr != null){ l.setForeground(fgClr); }else{ l.setForeground(table.getForeground()); } return l; } return c; } }