497cb3c6fe7a425681ddb051bb093cf49e9e910d
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / media / handler / CreateMediaHandler.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.view.media.handler;
5
6 import javax.inject.Named;
7
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;
17
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;
24
25 /**
26 *
27 * @author pplitzner
28 * @since Aug 14, 2017
29 *
30 */
31 public class CreateMediaHandler {
32
33 @Execute
34 public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
35 @Optional@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, MMenuItem menuItem,
36 UISynchronize sync) {
37
38 MediaViewPartE4 mediaView = (MediaViewPartE4) activePart.getObject();
39
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);
45 }
46
47 @CanExecute
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);
53 return canExecute;
54 }
55
56 }