]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/gui/RecentFileTrigger.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / gui / RecentFileTrigger.java
diff --git a/src/tim/prune/gui/RecentFileTrigger.java b/src/tim/prune/gui/RecentFileTrigger.java
new file mode 100644 (file)
index 0000000..4be35d0
--- /dev/null
@@ -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<File> dataFiles = new ArrayList<File>();
+                               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();
+               }
+       }
+}