package magic.ui.dialog.prefs;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import magic.data.MagicIcon;
import magic.translate.MText;
import magic.ui.MagicImages;
import magic.ui.MagicSound;
import magic.ui.helpers.UrlHelper;
import magic.ui.theme.ThemeFactory;
import magic.ui.helpers.DesktopHelper;
import magic.ui.helpers.ImageHelper;
import magic.utility.MagicFileSystem;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
class ThemesActionPanel extends JPanel {
// translatable strings.
private static final String _S1 = "Open theme folder";
private static final String _S2 = "Opens the selected theme folder in file explorer.";
private static final String _S3 = "Get more themes...";
private static final String _S4 = "Opens the themes wiki page in your browser which has links to many more themes. To install, copy the theme zip file into the 'themes' folder and restart Magarena.";
private final ThemesPanel themesPanel;
ThemesActionPanel(ThemesPanel aThemesPanel, MouseListener aListener) {
this.themesPanel = aThemesPanel;
setLayout(new MigLayout("insets 0, gapx 0"));
add(getThemeFolderButton(aListener), "w 32!");
add(getMoreThemesButton(aListener), "w 32!");
}
private void doOpenThemeFolder() {
String themeName = themesPanel.getSelectedThemeName();
File themeFile = ThemeFactory.getThemeFile(themeName);
try {
if (themeFile == null || themeFile.isFile()) {
DesktopHelper.openMagicDirectory(MagicFileSystem.DataPath.THEMES);
} else {
DesktopHelper.openDirectory(themeFile);
}
} catch (IOException ex) {
System.err.println(ex);
MagicSound.BEEP.play();
}
}
private JButton getThemeFolderButton(MouseListener aListener) {
JButton btn = new JButton(getActionIcon(MagicIcon.OPEN));
btn.setToolTipText(String.format("<b>%s</b><br>%s", MText.get(_S1), MText.get(_S2)));
btn.addMouseListener(aListener);
btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
doOpenThemeFolder();
}
});
return btn;
}
private JButton getMoreThemesButton(MouseListener aListener) {
JButton btn = new JButton(getActionIcon(MagicIcon.OPTIONS));
btn.setToolTipText(String.format("<b>%s</b><br>%s", MText.get(_S3), MText.get(_S4)));
btn.addMouseListener(aListener);
btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
UrlHelper.openURL(UrlHelper.URL_THEMES);
}
});
return btn;
}
private ImageIcon getActionIcon(MagicIcon icon) {
final ImageIcon blackIcon = (ImageIcon) ImageHelper.getRecoloredIcon(MagicImages.getIcon(icon), Color.BLACK);
final BufferedImage scaledImage = ImageHelper.scale(ImageHelper.getConvertedIcon(blackIcon), 18, 18);
return new ImageIcon(scaledImage);
}
}