package eu.etaxonomy.taxeditor.editor.view.concept.handler;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.IWorkbenchPart;
* @version 1.0
*/
public class CreateConceptRelationHandler extends AbstractHandler {
-
+
/* (non-Javadoc)
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
*/
Taxon taxonToBeFiltered = editor.getTaxon();
+ /* we need to get the activePart before calling TaxonBaseSelectionDialog.selectTaxon(), otherwise the
+ * the variable of the parent applicationContext in event are overwritten during this method call
+ * this is Linux specific bugfix see: #2685 ([LINUX] Editing concept relationships does not work under linux)
+ */
+ IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
+
Taxon relatedConcept = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), taxonToBeFiltered);
-
+
+
if(relatedConcept == null){
return Status.CANCEL_STATUS;
}
TaxonRelationshipTypeInverseContainer typeInverseContainer = (TaxonRelationshipTypeInverseContainer) ((Event)event.getTrigger()).data;
- IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
+
IPostOperationEnabled postOperationEnabled = (activePart instanceof IPostOperationEnabled) ? (IPostOperationEnabled) activePart : null;
try {
if(taxonRelationshipTypeInverseContainer.isInverse()){
concept.addTaxonRelation(taxon, taxonRelationshipTypeInverseContainer.getType(), null, null);
} else {
- taxon.addTaxonRelation(concept, taxonRelationshipTypeInverseContainer.getType(), null, null);
+ taxon.addTaxonRelation(concept, taxonRelationshipTypeInverseContainer.getType(), null, null);
}
monitor.worked(40);