/
Shalva
/
Lab3_SlideNavigationTool
Обзор
Документация
Войти
/
Shalva
/
Lab3_SlideNavigationTool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/example/lab3/ImageCollection.java
86 строк
3 KB
Kvaratskheliia Shalva
Добавлен исходный код проекта Lab3_SlideNavigationTool
14 июн 2026, 17:20
14 июн 2026, 17:20
781cb59
Код
Авторство
О чём код?
package com.example.lab3; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ImageCollection implements ImageAggregate { @Override public ImageIterator getIterator(File directory, String filterType) { return new DirectoryIterator(directory, filterType); } private static class DirectoryIterator implements ImageIterator { private List<File> files = new ArrayList<>(); private int currentIdx = -1; public DirectoryIterator(File directory, String filterType) { if (directory == null || !directory.isDirectory()) return; File[] matchedFiles = directory.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { String lower = name.toLowerCase(); switch (filterType) { case "JPEG/JPG": return lower.endsWith(".jpg") || lower.endsWith(".jpeg"); case "PNG": return lower.endsWith(".png"); case "GIF": return lower.endsWith(".gif"); case "Все": default: return lower.endsWith(".jpg") || lower.endsWith(".jpeg") || lower.endsWith(".png") || lower.endsWith(".gif"); } } }); if (matchedFiles != null) { files.addAll(Arrays.asList(matchedFiles)); if (!files.isEmpty()) { currentIdx = 0; } } } @Override public boolean hasNext() { return !files.isEmpty(); } @Override public File next() { if (files.isEmpty()) return null; currentIdx = (currentIdx + 1) % files.size(); // Зацикливание вперед return files.get(currentIdx); } @Override public boolean hasPrevious() { return !files.isEmpty(); } @Override public File previous() { if (files.isEmpty()) return null; currentIdx = (currentIdx - 1 + files.size()) % files.size(); // Зацикливание назад return files.get(currentIdx); } @Override public File first() { if (files.isEmpty()) return null; currentIdx = 0; return files.get(currentIdx); } @Override public File last() { if (files.isEmpty()) return null; currentIdx = files.size() - 1; return files.get(currentIdx); } @Override public int getIndex() { return currentIdx; } @Override public int getTotalCount() { return files.size(); } } }