Project

General

Profile

Download (2.34 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.media.handler;
2

    
3
import javax.inject.Named;
4

    
5
import org.eclipse.e4.core.di.annotations.CanExecute;
6
import org.eclipse.e4.core.di.annotations.Execute;
7
import org.eclipse.e4.core.di.annotations.Optional;
8
import org.eclipse.e4.ui.di.UISynchronize;
9
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
10
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
11
import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
12
import org.eclipse.e4.ui.services.IServiceConstants;
13
import org.eclipse.jface.viewers.IStructuredSelection;
14

    
15
import eu.etaxonomy.cdm.model.description.DescriptionBase;
16
import eu.etaxonomy.cdm.model.media.Media;
17
import eu.etaxonomy.taxeditor.editor.EditorUtil;
18
import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
19
import eu.etaxonomy.taxeditor.editor.view.media.operation.AddExistingMediaToImageGalleryOperation;
20
import eu.etaxonomy.taxeditor.model.AbstractUtility;
21
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
22
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
23

    
24
public class AddExistingMediaHandler  {
25

    
26
    @Execute
27
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
28
            @Optional@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, MMenuItem menuItem,
29
            UISynchronize sync) {
30

    
31
        MediaViewPartE4 mediaView = (MediaViewPartE4) activePart.getObject();
32

    
33
        AbstractPostOperation operation = null;
34
        //select media
35
        Media media = MediaSelectionDialog.select(AbstractUtility.getShell(),// null,
36
                null);
37
        if(media!=null){
38
            // TODO use undo context specific to editor
39
            operation = new AddExistingMediaToImageGalleryOperation(media, menuItem.getLocalizedLabel(),
40
                    EditorUtil.getUndoContext(), (DescriptionBase<?>) selection.getFirstElement(), mediaView);
41
            AbstractUtility.executeOperation(operation, sync);
42
        }
43
    }
44

    
45
    @CanExecute
46
    private boolean canExecute(MHandledMenuItem menuItem,
47
            @Optional@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection){
48
        boolean canExecute = false;
49
        canExecute = selection.size()==1 && selection.getFirstElement() instanceof DescriptionBase;
50
        menuItem.setVisible(canExecute);
51
        return canExecute;
52
    }
53

    
54
}
(2-2/7)