X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fundo%2FUndoLoadPhotos.java;fp=src%2Ftim%2Fprune%2Fundo%2FUndoLoadPhotos.java;h=b8c2b35970fbb05482ad8cfc4dd1bbe95aa0f08a;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/undo/UndoLoadPhotos.java b/src/tim/prune/undo/UndoLoadPhotos.java new file mode 100644 index 0000000..b8c2b35 --- /dev/null +++ b/src/tim/prune/undo/UndoLoadPhotos.java @@ -0,0 +1,73 @@ +package tim.prune.undo; + +import tim.prune.I18nManager; +import tim.prune.data.DataPoint; +import tim.prune.data.Photo; +import tim.prune.data.TrackInfo; + +/** + * Operation to undo a load photos operation + */ +public class UndoLoadPhotos implements UndoOperation +{ + private int _numPhotos = -1; + private int _numPoints = -1; + + + /** + * Constructor + * @param inNumPhotos number of photos loaded + * @param inNumPoints number of points loaded + */ + public UndoLoadPhotos(int inNumPhotos, int inNumPoints) + { + _numPhotos = inNumPhotos; + _numPoints = inNumPoints; + } + + + /** + * @return description of operation including number of photos loaded + */ + public String getDescription() + { + String desc = I18nManager.getText("undo.loadphotos"); + if (_numPhotos > 0) + desc = desc + " (" + _numPhotos + ")"; + return desc; + } + + + /** + * Perform the undo operation on the given Track + * Delete both track points and Photo objects + * @param inTrackInfo TrackInfo object on which to perform the operation + */ + public void performUndo(TrackInfo inTrackInfo) throws UndoException + { + int cropIndex; + // crop track to previous size + if (_numPoints > 0) + { + cropIndex = inTrackInfo.getTrack().getNumPoints() - _numPoints; + inTrackInfo.getTrack().cropTo(cropIndex); + } + else + { + // Loop through the points (if any) and detach them + for (int i=0; i<_numPhotos; i++) + { + Photo photo = inTrackInfo.getPhotoList().getPhoto(inTrackInfo.getPhotoList().getNumPhotos() - 1 - i); + if (photo.isConnected()) { + DataPoint point = photo.getDataPoint(); + if (point != null) {point.setPhoto(null);} + } + } + } + // crop photo list to previous size + cropIndex = inTrackInfo.getPhotoList().getNumPhotos() - _numPhotos; + inTrackInfo.getPhotoList().cropTo(cropIndex); + // clear selection + inTrackInfo.getSelection().clearAll(); + } +} \ No newline at end of file