package magic.ui.screen.duel.player.avatar;
import magic.ui.MagicImages;
import magic.ui.theme.PlayerAvatar;
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import magic.data.MagicIcon;
import magic.ui.ImageFileIO;
import magic.ui.helpers.ImageHelper;
class AvatarImageSet {
private final static String IMAGES_FILTER = "*.{png,jpg}";
private final Path path;
private ImageIcon sampleImage = MagicImages.getIcon(MagicIcon.MISSING);
AvatarImageSet(final Path path) {
this.path = path;
loadSampleImage();
}
String getName() {
return path.getFileName().toString();
}
ImageIcon getSampleImage() {
return sampleImage;
}
private void loadSampleImage() {
// find first image file in directory using a try-with-resource block for safety.
try (DirectoryStream<Path> ds = Files.newDirectoryStream(this.path, IMAGES_FILTER)) {
final Iterator<Path> itr = ds.iterator();
if (itr.hasNext()) {
final String filePath = itr.next().toAbsolutePath().toString();
final InputStream ins = new FileInputStream(new File(filePath));
final BufferedImage image = ImageFileIO.toImg(ins, MagicImages.MISSING_BIG);
this.sampleImage = new ImageIcon(ImageHelper.scale(image,
PlayerAvatar.MEDIUM_SIZE, PlayerAvatar.MEDIUM_SIZE)
);
}
} catch (IOException ex) {
System.err.println(ex);
}
}
List<Path> getImagePaths() {
final List<Path> paths = new ArrayList<>();
try (DirectoryStream<Path> ds = Files.newDirectoryStream(this.path, IMAGES_FILTER)) {
for (Path p : ds) {
paths.add(p);
}
} catch (IOException ex) {
System.err.println(ex);
}
return paths;
}
}