~berthold-daum/zora/trunk

« back to all changes in this revision

Viewing changes to com.bdaum.zoom.ui/src/com/bdaum/zoom/ui/internal/actions/ZoomActionFactory.java

  • Committer: bdaum
  • Date: 2015-12-26 10:21:51 UTC
  • Revision ID: berthold.daum@bdaum.de-20151226102151-44f1j5113167thb9
VersionĀ 2.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
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;
482
481
        };
483
482
 
484
483
        public static final ZoomActionFactory ADDVOICENOTE = new ZoomActionFactory(
485
 
                        Messages.ZoomActionFactory_attach_voice_note,
486
 
                        Messages.ZoomActionFactory_attach_voice_note_to_selected,
 
484
                        Messages.ZoomActionFactory_attach_remove_voicenote,
 
485
                        Messages.ZoomActionFactory_attach_remove_voicenote_tooltip,
487
486
                        "com.bdaum.zoom.ui.AddVoiceNoteAction", Icons.sound_add) { //$NON-NLS-1$
488
487
 
489
488
                @Override
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) {
521
 
                                        firstAsset = asset;
522
 
                                        if (volumeManager.findVoiceFile(asset) != null) {
523
 
                                                if (!AcousticMessageDialog
524
 
                                                                .openQuestion(
525
 
                                                                                (Shell) adaptable
526
 
                                                                                                .getAdapter(Shell.class),
527
 
                                                                                Messages.ZoomActionFactory_attach_voice_note,
528
 
                                                                                Messages.ZoomActionFactory_voice_not_already_exists))
529
 
                                                        return;
530
 
                                                break;
531
 
                                        }
532
 
                                }
533
 
                        }
534
 
                        if (firstAsset != null) {
 
516
                        List<Asset> assets = new ArrayList<Asset>(localAssets.size());
 
517
                        for (Asset asset : localAssets)
 
518
                                if (asset.getFileState() != IVolumeManager.PEER)
 
519
                                        assets.add(asset);
 
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);
537
524
                                dialog.open();
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);
542
530
                        }
543
531
                }
544
532
        }
545
533
 
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$
550
 
 
551
 
                @Override
552
 
                public IAction create(IActionBars bars, final IAdaptable adaptable) {
553
 
                        IAction action = new Action(getLabel(), getImage()) {
554
 
                                @Override
555
 
                                public void run() {
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)
565
 
                                                                        assets.add(asset);
566
 
                                                        }
567
 
                                                }
568
 
                                                removeVoiceNotes(assets, adaptable);
569
 
                                        }
570
 
                                }
571
 
                        };
572
 
                        action.setToolTipText(getTooltip());
573
 
                        if (bars != null)
574
 
                                bars.setGlobalActionHandler(getId(), action);
575
 
                        return action;
576
 
                }
577
 
        };
578
 
 
579
 
        private static void removeVoiceNotes(List<Asset> assets,
580
 
                        IAdaptable adaptable) {
581
 
                if (!assets.isEmpty()) {
582
 
                        if (AcousticMessageDialog
583
 
                                        .openQuestion(
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(
588
 
                                                assets), adaptable);
589
 
                } else
590
 
                        AcousticMessageDialog.openWarning(
591
 
                                        (Shell) adaptable.getAdapter(Shell.class),
592
 
                                        Messages.ZoomActionFactory_remove_voicenote,
593
 
                                        Messages.ZoomActionFactory_No_voicenotes_in_selection);
594
 
        }
595
534
 
596
535
        public static final ZoomActionFactory SEARCHSIMILAR = new ZoomActionFactory(
597
536
                        Messages.ZoomActionFactory_search_similar,