/** * */ package ie.dcu.apps.ist.actions; import java.io.*; /** * Jump to previous file in current directory. * * @author Kevin McGuinness */ public class PreviousAction extends AppAction { private final java.io.FileFilter imageFilter; public PreviousAction(ActionManager m) { super(m); // Create an image file filter imageFilter = new SimpleFileFilter(NextAction.EXTENSIONS); } @Override public void run() { if (window.hasContext()) { // Get currently opened file File file = window.getContext().getFile(); // Find the one before & open it File next = findPrevious(file); if (next != null) { manager.get(OpenAction.class).open(next); } } } private File findPrevious(File file) { File dir = file.getParentFile(); if (dir != null) { // List the images File[] files = dir.listFiles(imageFilter); // Need at least one if (files.length > 1) { // Search for ourself... for (int i = 0; i < files.length; i++) { if (files[i].equals(file)) { // Use previous file (wrap back to last) return files[(i > 0) ? i - 1 : files.length - 1]; } } } } return null; } }