]> gitweb.fperrin.net Git - GpsPrune.git/blob - src/tim/prune/data/FileInfo.java
Set main window title
[GpsPrune.git] / src / tim / prune / data / FileInfo.java
1 package tim.prune.data;
2
3 import java.util.ArrayList;
4
5 /**
6  * Class to hold the information about the file(s)
7  * from which the data was loaded from / saved to
8  */
9 public class FileInfo
10 {
11         /** List of sources */
12         private ArrayList<SourceInfo> _sources = new ArrayList<SourceInfo>();
13
14
15         /**
16          * Empty constructor
17          */
18         public FileInfo()
19         {}
20
21         /**
22          * Private constructor for creating clone
23          * @param inList list of sources
24          */
25         private FileInfo(ArrayList<SourceInfo> inList)
26         {
27                 _sources = inList;
28         }
29
30         /**
31          * Add a data source to the list
32          * @param inInfo info object to add
33          */
34         public void addSource(SourceInfo inInfo)
35         {
36                 _sources.add(inInfo);
37         }
38
39         /**
40          * Replace the list of data sources with the given source
41          * @param inInfo new source
42          */
43         public void replaceSource(SourceInfo inInfo)
44         {
45                 _sources.clear();
46                 addSource(inInfo);
47         }
48
49         /**
50          * remove the last source added
51          */
52         public void removeSource()
53         {
54                 _sources.remove(_sources.size()-1);
55         }
56
57         /**
58          * @return the number of files loaded
59          */
60         public int getNumFiles()
61         {
62                 return _sources.size();
63         }
64
65
66         /**
67          * @return The source name, if a single file
68          */
69         public String getFilename()
70         {
71                 if (getNumFiles() == 1) {
72                         return _sources.get(0).getName();
73                 }
74                 return "";
75         }
76
77         /**
78          * @return The source names
79          */
80         public ArrayList<String> getFilenames()
81         {
82                 ArrayList<String> filenames = new ArrayList<String>();
83                 for (SourceInfo source : _sources)
84                 {
85                         filenames.add(source.getName());
86                 }
87                 return filenames;
88         }
89
90         /**
91          * @param inIndex index number, starting from zero
92          * @return source info object
93          */
94         public SourceInfo getSource(int inIndex)
95         {
96                 return _sources.get(inIndex);
97         }
98
99         /**
100          * Get the SourceInfo object (if any) for the given point
101          * @param inPoint point object
102          * @return SourceInfo object if there is one, otherwise null
103          */
104         public SourceInfo getSourceForPoint(DataPoint inPoint)
105         {
106                 for (SourceInfo source : _sources)
107                 {
108                         if (source.getIndex(inPoint) >= 0) {
109                                 return source;
110                         }
111                 }
112                 return null;
113         }
114
115         /**
116          * @return the info about the last file loaded, if any
117          */
118         public SourceInfo getLastFileInfo()
119         {
120                 if (getNumFiles() == 0)
121                 {
122                         return null;
123                 }
124                 return getSource(getNumFiles()-1);
125         }
126
127         /**
128          * @return the most recent file title loaded, if any
129          */
130         public String getLastFileTitle()
131         {
132                 final int numFiles = getNumFiles();
133                 if (numFiles == 0)
134                 {
135                         return null;
136                 }
137                 for (int i=(numFiles-1); i>=0; i--)
138                 {
139                         SourceInfo info = getSource(i);
140                         if (info != null)
141                         {
142                                 String title = info.getFileTitle();
143                                 if (title != null && !title.equals(""))
144                                 {
145                                         return title;
146                                 }
147                         }
148                 }
149                 return null;
150         }
151
152         /**
153          * Clone contents of file info
154          */
155         @SuppressWarnings("unchecked")
156         public FileInfo clone()
157         {
158                 // copy source list
159                 ArrayList<SourceInfo> copy = (ArrayList<SourceInfo>) _sources.clone();
160                 return new FileInfo(copy);
161         }
162 }