68
68
import com.bdaum.zoom.core.internal.peer.AssetOrigin;
69
69
import com.bdaum.zoom.core.internal.peer.IPeerService;
70
70
import com.bdaum.zoom.job.OperationJob;
71
import com.bdaum.zoom.operations.internal.AddVoiceNoteOperation;
72
71
import com.bdaum.zoom.operations.internal.ColorCodeOperation;
73
import com.bdaum.zoom.operations.internal.DeleteVoicenoteOperation;
74
72
import com.bdaum.zoom.operations.internal.RateOperation;
75
73
import com.bdaum.zoom.operations.internal.RemoveAlbumOperation;
74
import com.bdaum.zoom.operations.internal.VoiceNoteOperation;
76
75
import com.bdaum.zoom.operations.internal.xmp.XMPUtilities;
77
76
import com.bdaum.zoom.program.BatchUtilities;
78
77
import com.bdaum.zoom.ui.AssetSelection;
514
513
private static void addVoiceNote(List<Asset> localAssets,
515
514
IAdaptable adaptable) {
516
515
if (!localAssets.isEmpty()) {
517
Asset firstAsset = null;
518
IVolumeManager volumeManager = Core.getCore().getVolumeManager();
519
for (Asset asset : localAssets) {
520
if (asset.getFileState() != IVolumeManager.PEER) {
522
if (volumeManager.findVoiceFile(asset) != null) {
523
if (!AcousticMessageDialog
526
.getAdapter(Shell.class),
527
Messages.ZoomActionFactory_attach_voice_note,
528
Messages.ZoomActionFactory_voice_not_already_exists))
534
if (firstAsset != null) {
516
List<Asset> assets = new ArrayList<Asset>(localAssets.size());
517
for (Asset asset : localAssets)
518
if (asset.getFileState() != IVolumeManager.PEER)
520
if (!assets.isEmpty()) {
521
UiActivator.getDefault().stopAudio();
535
522
VoiceNoteDialog dialog = new VoiceNoteDialog(
536
(Shell) adaptable.getAdapter(Shell.class), firstAsset);
523
(Shell) adaptable.getAdapter(Shell.class), assets);
538
String voiceFileURI = dialog.getResult();
539
if (voiceFileURI != null)
540
OperationJob.executeOperation(new AddVoiceNoteOperation(
541
localAssets, voiceFileURI), adaptable);
525
String sourceURI = dialog.getSourceUri();
526
String targetURI = dialog.getTargetUri();
527
if (sourceURI != null && targetURI != null || dialog.isDeleteVoiceNote())
528
OperationJob.executeOperation(new VoiceNoteOperation(
529
localAssets, sourceURI, targetURI), adaptable);
546
public static final ZoomActionFactory REMOVEVOICENOTE = new ZoomActionFactory(
547
Messages.ZoomActionFactory_remove_voicenote,
548
Messages.ZoomActionFactory_remove_voicenote_from_selected,
549
"com.bdaum.zoom.ui.RemoveVoiceNoteAction", Icons.sound_delete) { //$NON-NLS-1$
552
public IAction create(IActionBars bars, final IAdaptable adaptable) {
553
IAction action = new Action(getLabel(), getImage()) {
556
List<Asset> localAssets = ((AssetSelection) adaptable
557
.getAdapter(AssetSelection.class)).getLocalAssets();
558
if (localAssets != null && !localAssets.isEmpty()) {
559
List<Asset> assets = new ArrayList<Asset>();
560
for (Asset asset : localAssets) {
561
if (asset.getFileState() != IVolumeManager.PEER) {
562
String voiceFileURI = asset.getVoiceFileURI();
563
if (voiceFileURI != null
564
&& voiceFileURI.length() > 0)
568
removeVoiceNotes(assets, adaptable);
572
action.setToolTipText(getTooltip());
574
bars.setGlobalActionHandler(getId(), action);
579
private static void removeVoiceNotes(List<Asset> assets,
580
IAdaptable adaptable) {
581
if (!assets.isEmpty()) {
582
if (AcousticMessageDialog
584
(Shell) adaptable.getAdapter(Shell.class),
585
Messages.ZoomActionFactory_remove_voicenote,
586
Messages.ZoomActionFactory_do_you_really_want_to_remove_voicenotes))
587
OperationJob.executeOperation(new DeleteVoicenoteOperation(
590
AcousticMessageDialog.openWarning(
591
(Shell) adaptable.getAdapter(Shell.class),
592
Messages.ZoomActionFactory_remove_voicenote,
593
Messages.ZoomActionFactory_No_voicenotes_in_selection);
596
535
public static final ZoomActionFactory SEARCHSIMILAR = new ZoomActionFactory(
597
536
Messages.ZoomActionFactory_search_similar,