]> gitweb.fperrin.net Git - GpsPrune.git/blob - src/tim/prune/function/ConnectToPointFunction.java
Version 20.4, May 2021
[GpsPrune.git] / src / tim / prune / function / ConnectToPointFunction.java
1 package tim.prune.function;
2
3 import tim.prune.App;
4 import tim.prune.DataSubscriber;
5 import tim.prune.GenericFunction;
6 import tim.prune.I18nManager;
7 import tim.prune.UpdateMessageBroker;
8 import tim.prune.data.AudioClip;
9 import tim.prune.data.DataPoint;
10 import tim.prune.data.Photo;
11 import tim.prune.undo.UndoConnectMedia;
12 import tim.prune.undo.UndoOperation;
13
14 /**
15  * Function to connect either a photo or an audio clip to the current point
16  */
17 public class ConnectToPointFunction extends GenericFunction
18 {
19         /**
20          * Constructor
21          * @param inApp app object
22          */
23         public ConnectToPointFunction(App inApp) {
24                 super(inApp);
25         }
26
27         /**
28          * @return name key
29          */
30         public String getNameKey() {
31                 return "function.connecttopoint";
32         }
33
34         /**
35          * Perform function
36          */
37         public void begin()
38         {
39                 Photo photo = _app.getTrackInfo().getCurrentPhoto();
40                 DataPoint point = _app.getTrackInfo().getCurrentPoint();
41                 AudioClip audio = _app.getTrackInfo().getCurrentAudio();
42                 boolean connectPhoto = (point != null && photo != null && point.getPhoto() == null);
43                 boolean connectAudio = (point != null && audio != null && point.getAudio() == null);
44
45                 // if (connectPhoto && connectAudio) {
46                         // TODO: Let user choose whether to connect photo/audio or both
47                 // }
48                 // Make undo object
49                 UndoOperation undo = new UndoConnectMedia(point, connectPhoto?photo.getName():null,
50                         connectAudio?audio.getName():null);
51                 // Connect the media
52                 if (connectPhoto) {
53                         photo.setDataPoint(point);
54                         point.setPhoto(photo);
55                 }
56                 if (connectAudio) {
57                         audio.setDataPoint(point);
58                         point.setAudio(audio);
59                 }
60                 UpdateMessageBroker.informSubscribers(DataSubscriber.SELECTION_CHANGED);
61                 _app.completeFunction(undo, I18nManager.getText("confirm.media.connect"));
62         }
63 }