1
0
mirror of https://github.com/mitb-archive/filebot synced 2025-03-09 05:51:31 -04:00

Fix NPE that crashes Swing EDT in Subtitles Panel (when search results includes odd languages)

This commit is contained in:
Reinhard Pointner 2018-11-06 02:07:40 +07:00
parent 56204e783f
commit 67e10db23d

View File

@ -1,7 +1,6 @@
package net.filebot.ui.subtitle; package net.filebot.ui.subtitle;
import java.awt.Color; import java.awt.Color;
import java.awt.Insets; import java.awt.Insets;
@ -10,18 +9,17 @@ import javax.swing.JLabel;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.border.CompoundBorder; import javax.swing.border.CompoundBorder;
import net.filebot.Language;
import net.filebot.ResourceManager; import net.filebot.ResourceManager;
import net.filebot.util.ui.AbstractFancyListCellRenderer; import net.filebot.util.ui.AbstractFancyListCellRenderer;
import net.filebot.util.ui.DashedSeparator; import net.filebot.util.ui.DashedSeparator;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer { class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
private final JLabel titleLabel = new JLabel(); private final JLabel titleLabel = new JLabel();
private final JLabel languageLabel = new JLabel(); private final JLabel languageLabel = new JLabel();
public SubtitlePackageCellRenderer() { public SubtitlePackageCellRenderer() {
super(new Insets(5, 5, 5, 5)); super(new Insets(5, 5, 5, 5));
setHighlightingEnabled(false); setHighlightingEnabled(false);
@ -34,7 +32,6 @@ class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
setBorder(new CompoundBorder(new DashedSeparator(2, 4, Color.lightGray, Color.white), getBorder())); setBorder(new CompoundBorder(new DashedSeparator(2, 4, Color.lightGray, Color.white), getBorder()));
} }
@Override @Override
public void configureListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { public void configureListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.configureListCellRendererComponent(list, value, index, isSelected, cellHasFocus); super.configureListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
@ -45,8 +42,14 @@ class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
titleLabel.setIcon(getIcon(subtitle)); titleLabel.setIcon(getIcon(subtitle));
if (languageLabel.isVisible()) { if (languageLabel.isVisible()) {
languageLabel.setText(subtitle.getLanguage().getName()); Language language = subtitle.getLanguage();
languageLabel.setIcon(ResourceManager.getFlagIcon(subtitle.getLanguage().getCode())); if (language != null) {
languageLabel.setText(language.getName());
languageLabel.setIcon(ResourceManager.getFlagIcon(language.getCode()));
} else {
languageLabel.setText("Unkown Language");
languageLabel.setIcon(ResourceManager.getFlagIcon("undefined"));
}
} }
titleLabel.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground()); titleLabel.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
@ -56,7 +59,6 @@ class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
setBorderPainted(index < list.getModel().getSize() - 1); setBorderPainted(index < list.getModel().getSize() - 1);
} }
private Icon getIcon(SubtitlePackage subtitle) { private Icon getIcon(SubtitlePackage subtitle) {
switch (subtitle.getDownload().getPhase()) { switch (subtitle.getDownload().getPhase()) {
case PENDING: case PENDING:
@ -75,12 +77,10 @@ class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
return null; return null;
} }
public JLabel getLanguageLabel() { public JLabel getLanguageLabel() {
return languageLabel; return languageLabel;
} }
@Override @Override
public void validate() { public void validate() {
// validate children, yet avoid flickering of the mouse cursor // validate children, yet avoid flickering of the mouse cursor