X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2FRecentFileTrigger.java;fp=src%2Ftim%2Fprune%2Fgui%2FRecentFileTrigger.java;h=4be35d03ddf9ace0854a3e60e71506dde9454e24;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/gui/RecentFileTrigger.java b/src/tim/prune/gui/RecentFileTrigger.java new file mode 100644 index 0000000..4be35d0 --- /dev/null +++ b/src/tim/prune/gui/RecentFileTrigger.java @@ -0,0 +1,62 @@ +package tim.prune.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.util.ArrayList; + +import tim.prune.App; +import tim.prune.UpdateMessageBroker; +import tim.prune.config.Config; +import tim.prune.data.RecentFile; +import tim.prune.load.BabelLoadFromFile; + +/** + * Class to act as a trigger when a menu item for a recent file is clicked + */ +public class RecentFileTrigger implements ActionListener +{ + private App _app = null; + private int _index = 0; + + + /** + * Constructor + * @param inApp App object + * @param inIndex menu index from 0 + */ + public RecentFileTrigger(App inApp, int inIndex) + { + _app = inApp; + _index = inIndex; + } + + /** + * React to click on menu item + */ + public void actionPerformed(ActionEvent arg0) + { + RecentFile rf = Config.getRecentFileList().getFile(_index); + if (rf != null && rf.isValid()) + { + if (rf.isRegularLoad()) + { + // Trigger a regular file load + ArrayList dataFiles = new ArrayList(); + dataFiles.add(rf.getFile()); + _app.loadDataFiles(dataFiles); + } + else + { + // Trigger a load via gpsbabel + new BabelLoadFromFile(_app).beginWithFile(rf.getFile()); + } + } + else + { + _app.showErrorMessage("function.open", "error.load.noread"); + Config.getRecentFileList().verifyAll(); // Called on a file which no longer exists + UpdateMessageBroker.informSubscribers(); + } + } +}