93 lines
2.4 KiB
Java
93 lines
2.4 KiB
Java
|
|
package net.filebot.ui.subtitle;
|
|
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Insets;
|
|
|
|
import javax.swing.Icon;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JList;
|
|
import javax.swing.border.CompoundBorder;
|
|
|
|
import net.filebot.ResourceManager;
|
|
import net.filebot.util.ui.AbstractFancyListCellRenderer;
|
|
import net.filebot.util.ui.DashedSeparator;
|
|
import net.miginfocom.swing.MigLayout;
|
|
|
|
|
|
class SubtitlePackageCellRenderer extends AbstractFancyListCellRenderer {
|
|
|
|
private final JLabel titleLabel = new JLabel();
|
|
private final JLabel languageLabel = new JLabel();
|
|
|
|
|
|
public SubtitlePackageCellRenderer() {
|
|
super(new Insets(5, 5, 5, 5));
|
|
setHighlightingEnabled(false);
|
|
|
|
setLayout(new MigLayout("fill, nogrid, insets 0"));
|
|
|
|
add(languageLabel, "hidemode 3, w 85px!");
|
|
add(titleLabel);
|
|
|
|
setBorder(new CompoundBorder(new DashedSeparator(2, 4, Color.lightGray, Color.white), getBorder()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public void configureListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
|
|
super.configureListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
|
|
|
SubtitlePackage subtitle = (SubtitlePackage) value;
|
|
|
|
titleLabel.setText(subtitle.getName());
|
|
titleLabel.setIcon(getIcon(subtitle));
|
|
|
|
if (languageLabel.isVisible()) {
|
|
languageLabel.setText(subtitle.getLanguage().getName());
|
|
languageLabel.setIcon(ResourceManager.getFlagIcon(subtitle.getLanguage().getCode()));
|
|
}
|
|
|
|
titleLabel.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
|
|
languageLabel.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
|
|
|
|
// don't paint border on last element
|
|
setBorderPainted(index < list.getModel().getSize() - 1);
|
|
}
|
|
|
|
|
|
private Icon getIcon(SubtitlePackage subtitle) {
|
|
switch (subtitle.getDownload().getPhase()) {
|
|
case PENDING:
|
|
return ResourceManager.getIcon("bullet.green");
|
|
case WAITING:
|
|
return ResourceManager.getIcon("worker.pending");
|
|
case DOWNLOADING:
|
|
return ResourceManager.getIcon("package.fetch");
|
|
case EXTRACTING:
|
|
return ResourceManager.getIcon("package.extract");
|
|
case DONE:
|
|
return ResourceManager.getIcon("status.ok");
|
|
}
|
|
|
|
// unreachable
|
|
return null;
|
|
}
|
|
|
|
|
|
public JLabel getLanguageLabel() {
|
|
return languageLabel;
|
|
}
|
|
|
|
|
|
@Override
|
|
public void validate() {
|
|
// validate children, yet avoid flickering of the mouse cursor
|
|
synchronized (getTreeLock()) {
|
|
validateTree();
|
|
}
|
|
}
|
|
|
|
}
|