--- /dev/null
+package tim.prune.function;
+
+import tim.prune.App;
+import tim.prune.DataSubscriber;
+import tim.prune.GenericFunction;
+import tim.prune.I18nManager;
+import tim.prune.UpdateMessageBroker;
+import tim.prune.data.AudioClip;
+import tim.prune.data.DataPoint;
+import tim.prune.undo.UndoDisconnectMedia;
+import tim.prune.undo.UndoOperation;
+
+/**
+ * Function to disconnect the current audio object from the current point (like DisconnectPhotoFunction)
+ */
+public class DisconnectAudioFunction extends GenericFunction
+{
+ /**
+ * Constructor
+ * @param inApp app object
+ */
+ public DisconnectAudioFunction(App inApp) {
+ super(inApp);
+ }
+
+ /** @return name key */
+ public String getNameKey() {
+ return "function.disconnectfrompoint";
+ }
+
+ /**
+ * Perform the operation
+ */
+ public void begin()
+ {
+ AudioClip audio = _app.getTrackInfo().getCurrentAudio();
+ if (audio != null && audio.getDataPoint() != null)
+ {
+ DataPoint point = audio.getDataPoint();
+ UndoOperation undo = new UndoDisconnectMedia(point, false, true, audio.getName());
+ // disconnect
+ audio.setDataPoint(null);
+ point.setAudio(null);
+ UpdateMessageBroker.informSubscribers(DataSubscriber.SELECTION_CHANGED);
+ _app.completeFunction(undo, I18nManager.getText("confirm.audio.disconnect"));
+ }
+ }
+}