org.eclipse.zest.layouts,
eu.etaxonomy.taxeditor.cdmlib,
org.eclipse.ui.ide,
- org.eclipse.e4.ui.workbench
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.core.di
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.core.databinding.beans,
+Import-Package: javax.inject;version="1.0.0",
+ org.eclipse.core.databinding.beans,
org.eclipse.core.databinding.observable.list,
org.eclipse.core.databinding.observable.map,
org.eclipse.core.resources,
<elements xsi:type="basic:PartDescriptor" xmi:id="_gSpRsTQDEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView" label="%command.label.DERIVATIVE_EDITOR" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.editor/icons/derivate_view-16x16-32.png" tooltip="" allowMultiple="true" category="Sample Category" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
<tags>View</tags>
<tags>categoryTag:Sample Category</tags>
- <menus xsi:type="menu:PopupMenu" xmi:id="_CYXZ0DQEEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor"/>
+ <handlers xmi:id="_E5l4wDVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" command="_BjF3ADVqEee_b7RlBzTDRw"/>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_CYXZ0DQEEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor">
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_um1oYDVpEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.create_field_unit_for_taxon" label="Create Field Unit For ..." command="_BjF3ADVqEee_b7RlBzTDRw"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_5GMRcDWQEeeNfoZ3nN0K8Q" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createfieldunit" label="Create Field Unit" command="_BjF3ADVqEee_b7RlBzTDRw"/>
+ </menus>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="__3UcUDSmEeek0dKsFNy--Q" featurename="children" parentElementId="bulkeditor.menus.openmenu">
<parameters xmi:id="_ZMAMoDSnEeek0dKsFNy--Q" elementId="eu.etaxonomy.taxeditor.editor.openPart.parameter.specimenEditor" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"/>
</elements>
</fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="__mwtMDVpEee_b7RlBzTDRw" featurename="commands" parentElementId="xpath:/">
+ <elements xsi:type="commands:Command" xmi:id="_BjF3ADVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.command.specimeneditor.create_field_unit" commandName="Create Field Unit"/>
+ </fragments>
</fragment:ModelFragments>
</separator>
</menuContribution>
<menuContribution
- locationURI="popup:eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor">
+ locationURI="popup:eu.etaxonomy.taxeditor.editor.XXXpopupmenu.specimeneditor">
<separator
name="eu.etaxonomy.taxeditor.editor.separator4"
visible="true">
+++ /dev/null
-package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
-
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.CompoundContributionItem;
-
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.editor.l10n.Messages;
-import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-/**
- * Context menu for the SingleReads in the derivate hierarchy.
- *
- */
-public class CreateFieldUnitContextMenu extends CompoundContributionItem {
-
- private enum CommandType {
- COPY_TO_CLIPBOARD, REMOVE_FROM_SEQUENCE, ADD_TO_SEQUENCE
- }
-
- @Override
- protected IContributionItem[] getContributionItems() {
- IContributionItem[] contributionItems = new IContributionItem[] {
- new ContributionItem() {
- @Override
- public void fill(Menu menu, int index) {
- final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- IWorkbenchPart activePart = window.getActivePage().getActivePart();
- if(activePart instanceof DerivateView){
- final DerivateView derivateView = (DerivateView) activePart;
- if(derivateView.isListenToSelectionChange()){
- Object selectionInput = derivateView.getSelectionInput();
- if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){
- final Taxon taxon = HibernateProxyHelper.deproxy(CdmStore.getService(ITaxonService.class).load(((CdmBase)selectionInput).getUuid()), Taxon.class);
- MenuItem item = new MenuItem(menu, SWT.NONE);
- item.setText(String.format(Messages.CreateFieldUnitContextMenu_CREATE_FIELD_UNIT_FOR, taxon.getName()));
- item.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if(derivateView.isDirty()){
- MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
- return;
- }
-
- FieldUnit fieldUnit = FieldUnit.NewInstance();
- fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
- IndividualsAssociation association = IndividualsAssociation.NewInstance(fieldUnit);
- TaxonDescription description;
- if(!taxon.getDescriptions().isEmpty()){
- description = taxon.getDescriptions().iterator().next();
- }
- else{
- description = TaxonDescription.NewInstance(taxon);
- }
- description.addElement(association);
- CdmStore.getService(ITaxonService.class).merge(taxon);
-
-
- derivateView.getConversationHolder().commit();
- derivateView.addFieldUnit(fieldUnit);
- derivateView.refreshTree(fieldUnit);
- }
- });
- }
- }
- else{
- MenuItem item = new MenuItem(menu, SWT.NONE);
- item.setText(Messages.CreateFieldUnitContextMenu_CREATE_FIELD_UNIT);
- item.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if(derivateView.isDirty()){
- MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
- return;
- }
- FieldUnit fieldUnit = FieldUnit.NewInstance();
- fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
- derivateView.getConversationHolder().commit();
- derivateView.addFieldUnit(fieldUnit);
- derivateView.updateRootEntities();
- derivateView.refreshTree(fieldUnit);
- }
- });
- }
- }
- }
- }
- };
- return contributionItems;
- }
-}
-
@Override
protected IContributionItem[] getContributionItems() {
IContributionItem[] contributionItems = new IContributionItem[] {
- new CreateFieldUnitContextMenu(),
new CreateDerivateContextMenu(),
new Separator(),
// new ListenToSelectionChangeContextMenu(),
--- /dev/null
+
+package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.AppModelId;
+import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class CreateFieldUnitHandler {
+
+ @Execute
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, MHandledMenuItem item) {
+ DerivateView derivateView = (DerivateView) part.getObject();
+ if(item.getElementId().equals(AppModelId.HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_CREATE_FIELD_UNIT_FOR_TAXON)){
+ Object selectionInput = derivateView.getSelectionInput();
+ if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){
+ final Taxon taxon = HibernateProxyHelper.deproxy(CdmStore.getService(ITaxonService.class).load(((CdmBase)selectionInput).getUuid()), Taxon.class);
+ if(derivateView.isDirty()){
+ MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
+ return;
+ }
+
+ FieldUnit fieldUnit = FieldUnit.NewInstance();
+ fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
+ IndividualsAssociation association = IndividualsAssociation.NewInstance(fieldUnit);
+ TaxonDescription description;
+ if(!taxon.getDescriptions().isEmpty()){
+ description = taxon.getDescriptions().iterator().next();
+ }
+ else{
+ description = TaxonDescription.NewInstance(taxon);
+ }
+ description.addElement(association);
+ CdmStore.getService(ITaxonService.class).merge(taxon);
+
+
+ derivateView.getConversationHolder().commit();
+ derivateView.addFieldUnit(fieldUnit);
+ derivateView.refreshTree(fieldUnit);
+ }
+ }
+ else{
+ if(derivateView.isDirty()){
+ MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
+ return;
+ }
+ FieldUnit fieldUnit = FieldUnit.NewInstance();
+ fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
+ derivateView.getConversationHolder().commit();
+ derivateView.addFieldUnit(fieldUnit);
+ derivateView.updateRootEntities();
+ derivateView.refreshTree(fieldUnit);
+ }
+ }
+
+
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, MHandledMenuItem item) {
+ DerivateView derivateView = (DerivateView) part.getObject();
+ boolean listenToSelectionChange = derivateView.isListenToSelectionChange();
+ setItemVisibility(item, listenToSelectionChange);
+ if(listenToSelectionChange &&
+ item.getElementId().equals(AppModelId.HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_CREATE_FIELD_UNIT_FOR_TAXON)){
+ Object selectionInput = derivateView.getSelectionInput();
+ if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){
+ final Taxon taxon = HibernateProxyHelper.deproxy(CdmStore.getService(ITaxonService.class).load(((CdmBase)selectionInput).getUuid()), Taxon.class);
+ item.setLabel(String.format(Messages.CreateFieldUnitContextMenu_CREATE_FIELD_UNIT_FOR, taxon.getName()));
+ }
+ }
+ return true;
+ }
+
+
+ private void setItemVisibility(MHandledMenuItem item, boolean isListeningToSelectionChange) {
+ if(item.getElementId().equals(AppModelId.HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_CREATEFIELDUNIT)){
+ item.setVisible(!isListeningToSelectionChange);
+ }
+ else{
+ item.setVisible(isListeningToSelectionChange);
+ }
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package eu.etaxonomy.taxeditor.editor;
+
+public class AppModelId {
+ public static final String COMMAND_EU_ETAXONOMY_TAXEDITOR_COMMAND_OPENPART = "eu.etaxonomy.taxeditor.command.openPart";
+ public static final String COMMAND_EU_ETAXONOMY_TAXEDITOR_EDITOR_COMMAND_SPECIMENEDITOR_CREATE_FIELD_UNIT = "eu.etaxonomy.taxeditor.editor.command.specimeneditor.create_field_unit";
+ public static final String HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_COMMANDLABELDERIVATIVE_EDITOR = "eu.etaxonomy.taxeditor.editor.handledmenuitem.commandlabelderivative_editor";
+ public static final String HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_CREATEFIELDUNIT = "eu.etaxonomy.taxeditor.editor.handledmenuitem.createfieldunit";
+ public static final String HANDLEDMENUITEM_EU_ETAXONOMY_TAXEDITOR_EDITOR_HANDLEDMENUITEM_CREATE_FIELD_UNIT_FOR_TAXON = "eu.etaxonomy.taxeditor.editor.handledmenuitem.create_field_unit_for_taxon";
+ public static final String HANDLER_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_HANDLER_CREATEFIELDUNITHANDLER = "eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler";
+ public static final String PARAMETER_EU_ETAXONOMY_TAXEDITOR_EDITOR_OPENPART_PARAMETER_SPECIMENEDITOR = "eu.etaxonomy.taxeditor.editor.openPart.parameter.specimenEditor";
+ public static final String PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView";
+ public static final String POPUPMENU_EU_ETAXONOMY_TAXEDITOR_EDITOR_POPUPMENU_SPECIMENEDITOR = "eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor";
+}
\ No newline at end of file