package io.andrewohara.tinkertime.views.modView; import io.andrewohara.common.views.selectorPanel.SelectorView; import io.andrewohara.tinkertime.models.mod.Mod; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import com.google.inject.Inject; /** * Component which displays the Mod's image from a given URL. * * @author Andrew O'Hara */ public class ModImageView extends SelectorView.AbstractSelectorView<Mod> { private final JLabel label = new JLabel(); @Inject ModImageView(){ label.setMaximumSize(Mod.MAX_IMAGE_SIZE); } @Override public JComponent getComponent() { return label; } @Override protected void onElementChanged(Mod element) { try { if (element == null || element.getImage() == null){ throw new NoModImageException(); } label.setIcon(new ImageIcon(element.getImage())); } catch (NoModImageException e) { label.setIcon(null); } } @SuppressWarnings("serial") private static class NoModImageException extends Exception {} }