package magic.ui.screen.duel.player.avatar; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.SwingUtilities; import magic.ui.helpers.UrlHelper; import magic.ui.ScreenController; import magic.ui.screen.interfaces.IAvatarImageConsumer; import magic.ui.screen.widget.MenuButton; import magic.ui.helpers.ImageHelper; import magic.translate.MText; import magic.ui.screen.HeaderFooterScreen; @SuppressWarnings("serial") public class AvatarImagesScreen extends HeaderFooterScreen { // translatable strings. private static final String _S1 = "Select Avatar"; private static final String _S2 = "Click to select this avatar image."; private static final String _S3 = "Avatars"; private static final String _S4 = "Cancel"; private static final String _S5 = "More avatars..."; private static final String _S6 = "Get more avatars from the Magarena forum."; private final IAvatarImageConsumer consumer; private final ContentPanel contentPanel; public AvatarImagesScreen(final IAvatarImageConsumer consumer) { super(MText.get(_S3)); this.consumer = consumer; this.contentPanel = new ContentPanel(this); setMainContent(contentPanel); setLeftFooter(MenuButton.getCloseScreenButton(MText.get(_S4))); addToFooter(MenuButton.build(this::doOpenAvatarsWebPage, MText.get(_S5), MText.get(_S6)) ); } private void doOpenAvatarsWebPage() { UrlHelper.openURL(UrlHelper.URL_AVATARS); } void displayImageSetIcons(final AvatarImageSet imageSet) { contentPanel.displayImageSetIcons(imageSet); } private void doSaveAvatarAndClose() { notifyConsumer(); ScreenController.closeActiveScreen(false); } void setSelectedAvatar(final JLabel iconLabel) { final Icon icon = iconLabel.getIcon(); final BufferedImage bi = ImageHelper.getCompatibleBufferedImage( icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TRANSLUCENT ); final Graphics g = bi.createGraphics(); // paint the Icon to the BufferedImage. icon.paintIcon(null, g, 0,0); g.dispose(); setRightFooter(MenuButton.build(this::doSaveAvatarAndClose, new ImageIcon(ImageHelper.scale(bi, 46, 46)), MText.get(_S1), MText.get(_S2)) ); } void notifyConsumer() { if (consumer != null) { SwingUtilities.invokeLater(() -> { consumer.setSelectedAvatarPath(contentPanel.getImagePath()); }); } } }