/* * MediathekView * Copyright (C) 2008 W. Xaver * W.Xaver[at]googlemail.com * http://zdfmediathk.sourceforge.net/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package mediathek.tool; import com.jidesoft.utils.SystemInfo; import mSearch.tool.Log; import mediathek.config.Daten; import mediathek.config.Icons; import mediathek.config.MVColor; import mediathek.daten.DatenAbo; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import java.awt.*; @SuppressWarnings("serial") public class CellRendererAbo extends DefaultTableCellRenderer { private final MVSenderIconCache senderIconCache; private static ImageIcon ja_16 = null; private static ImageIcon nein_12 = null; public CellRendererAbo() { senderIconCache = new MVSenderIconCache(); ja_16 = Icons.ICON_TABELLE_EIN; nein_12 = Icons.ICON_TABELLE_AUS; } @Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setBackground(null); setForeground(null); setFont(null); setIcon(null); setHorizontalAlignment(SwingConstants.LEADING); super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); try { int r = table.convertRowIndexToModel(row); int c = table.convertColumnIndexToModel(column); DatenAbo abo = Daten.getInstance().getListeAbo().getAboNr(r); boolean eingeschaltet = abo.aboIstEingeschaltet(); if (((MVTable) table).lineBreak) { JTextArea textArea; switch (c) { case DatenAbo.ABO_IRGENDWO: case DatenAbo.ABO_NAME: case DatenAbo.ABO_THEMA: case DatenAbo.ABO_THEMA_TITEL: case DatenAbo.ABO_TITEL: case DatenAbo.ABO_ZIELPFAD: textArea = new JTextArea(); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); textArea.setText(value.toString()); textArea.setForeground(getForeground()); textArea.setBackground(getBackground()); if (!SystemInfo.isMacOSX()) { // On OS X do not change fonts as it violates HIG... if (isSelected) { textArea.setFont(new java.awt.Font("Dialog", Font.BOLD, MVFont.fontSize)); } else { textArea.setFont(new java.awt.Font("Dialog", Font.PLAIN, MVFont.fontSize)); } } if (!eingeschaltet) { setFont(new java.awt.Font("Dialog", Font.ITALIC, getFont().getSize())); if (isSelected) { textArea.setBackground(MVColor.ABO_AUSGESCHALTET_SEL.color); } else { textArea.setBackground(MVColor.ABO_AUSGESCHALTET.color); } } return textArea; } } if (!SystemInfo.isMacOSX()) { // On OS X do not change fonts as it violates HIG... if (isSelected) { setFont(new java.awt.Font("Dialog", Font.BOLD, MVFont.fontSize)); } else { setFont(new java.awt.Font("Dialog", Font.PLAIN, MVFont.fontSize)); } } if (c == DatenAbo.ABO_NR) { setHorizontalAlignment(SwingConstants.CENTER); } if (c == DatenAbo.ABO_MINDESTDAUER) { setHorizontalAlignment(SwingConstants.CENTER); } if (!eingeschaltet) { if (!SystemInfo.isMacOSX()) { // On OS X do not change fonts as it violates HIG... setFont(new java.awt.Font("Dialog", Font.ITALIC, getFont().getSize())); } if (isSelected) { setBackground(MVColor.ABO_AUSGESCHALTET_SEL.color); } else { setBackground(MVColor.ABO_AUSGESCHALTET.color); } } switch (c) { case DatenAbo.ABO_EINGESCHALTET: setHorizontalAlignment(SwingConstants.CENTER); if (eingeschaltet) { setIcon(ja_16); } else { setIcon(nein_12); } break; case DatenAbo.ABO_MIN: setHorizontalAlignment(SwingConstants.CENTER); break; case DatenAbo.ABO_SENDER: if (((MVTable) table).iconAnzeigen) { handleSenderColumn((String) value, ((MVTable) table).iconKlein); } break; } } catch (Exception ex) { Log.errorLog(630365892, ex); } return this; } /** * Draws the sender icon in the sender model column. * * @param sender Name of the sender. */ private void handleSenderColumn(String sender, boolean small) { setHorizontalAlignment(SwingConstants.CENTER); ImageIcon icon = senderIconCache.get(sender, small); if (icon != null) { setText(""); setIcon(icon); } } }