001    /*
002     *  Licensed under the Apache License, Version 2.0 (the "License");
003     *  you may not use this file except in compliance with the License.
004     *  You may obtain a copy of the License at
005     *
006     *      http://www.apache.org/licenses/LICENSE-2.0
007     *
008     *  Unless required by applicable law or agreed to in writing, software
009     *  distributed under the License is distributed on an "AS IS" BASIS,
010     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011     *  See the License for the specific language governing permissions and
012     *  limitations under the License.
013     */
014    /*
015     * This file has been modified by Chris Pheby in accordance with Section 4.2
016     * of the Apache Software License
017     */
018    package org.jadira.dependencynavigator.gui;
019    
020    import java.awt.Color;
021    import java.awt.Component;
022    import java.awt.Font;
023    
024    import javax.swing.JTable;
025    import javax.swing.table.DefaultTableCellRenderer;
026    
027    public class SelectableTableModelRenderer extends DefaultTableCellRenderer {
028    
029        private static final long serialVersionUID = 5386816137675796795L;
030    
031        @Override
032        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
033            DefaultTableCellRenderer r = (DefaultTableCellRenderer) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
034            SelectableTableModel model = (SelectableTableModel) table.getModel();
035            r.setForeground(Color.BLACK);
036            if (model.isSelected(row)) {
037                r.setFont(r.getFont().deriveFont(Font.BOLD));
038                r.setBackground(Color.YELLOW);
039                r.setOpaque(true);
040            } else {
041                r.setFont(r.getFont().deriveFont(Font.PLAIN));
042                r.setBackground(Color.WHITE);
043                r.setOpaque(false);
044            }
045            return r;
046        }
047    }