4 package eu
.etaxonomy
.taxeditor
.editor
.view
.media
.handler
;
6 import javax
.inject
.Named
;
8 import org
.eclipse
.e4
.core
.di
.annotations
.CanExecute
;
9 import org
.eclipse
.e4
.core
.di
.annotations
.Execute
;
10 import org
.eclipse
.e4
.core
.di
.annotations
.Optional
;
11 import org
.eclipse
.e4
.ui
.di
.UISynchronize
;
12 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
13 import org
.eclipse
.e4
.ui
.model
.application
.ui
.menu
.MHandledMenuItem
;
14 import org
.eclipse
.e4
.ui
.model
.application
.ui
.menu
.MMenuItem
;
15 import org
.eclipse
.e4
.ui
.services
.IServiceConstants
;
16 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
18 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionBase
;
19 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
20 import eu
.etaxonomy
.taxeditor
.editor
.view
.media
.e4
.MediaViewPartE4
;
21 import eu
.etaxonomy
.taxeditor
.editor
.view
.media
.operation
.AddMediaToImageGalleryOperation
;
22 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
23 import eu
.etaxonomy
.taxeditor
.operation
.AbstractPostOperation
;
31 public class CreateMediaHandler
{
34 public void execute(@Named(IServiceConstants
.ACTIVE_PART
) MPart activePart
,
35 @Optional@Named(IServiceConstants
.ACTIVE_SELECTION
) IStructuredSelection selection
, MMenuItem menuItem
,
38 MediaViewPartE4 mediaView
= (MediaViewPartE4
) activePart
.getObject();
40 AbstractPostOperation operation
= null;
41 // TODO use undo context specific to editor
42 operation
= new AddMediaToImageGalleryOperation(menuItem
.getLocalizedLabel(),
43 EditorUtil
.getUndoContext(), (DescriptionBase
<?
>) selection
.getFirstElement(), mediaView
);
44 AbstractUtility
.executeOperation(operation
, sync
);
48 private boolean canExecute(MHandledMenuItem menuItem
,
49 @Optional@Named(IServiceConstants
.ACTIVE_SELECTION
) IStructuredSelection selection
){
50 boolean canExecute
= false;
51 canExecute
= selection
.size()==1 && selection
.getFirstElement() instanceof DescriptionBase
;
52 menuItem
.setVisible(canExecute
);