AT: Commit missing files from the branch
authora.theys <a.theys@localhost>
Thu, 19 Jan 2012 13:59:01 +0000 (13:59 +0000)
committera.theys <a.theys@localhost>
Thu, 19 Jan 2012 13:59:01 +0000 (13:59 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java [new file with mode: 0644]

index 016e06da15b3c7710a16b016c80f18bd445ce980..cf048df2a8ef1ca154a1377e12b9e4951a689bf4 100644 (file)
@@ -479,9 +479,11 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/u
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesLabelProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesViewPart.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/DeleteUseHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/DynamicFeatureMenu.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateTaxonUseOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/DeleteTaxonUseOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/TaonDescriptionEditor.screen -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/log4j.properties -text
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java
new file mode 100644 (file)
index 0000000..2e24fb0
--- /dev/null
@@ -0,0 +1,81 @@
+package eu.etaxonomy.taxeditor.editor.view.uses.handler;
+
+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.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateUseRecordOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+public class CreateUseRecordHandler extends AbstractHandler {
+       public Object execute(ExecutionEvent event) throws ExecutionException {
+               IWorkbenchPart part = HandlerUtil.getActivePart(event);
+               IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part
+                               : null;
+
+               IEditorPart editor = HandlerUtil.getActiveEditor(event);
+               if (editor instanceof FormEditor) {
+                       editor = ((FormEditor) editor).getActiveEditor();
+               }
+               IEditorInput input = editor.getEditorInput();
+               if (input instanceof TaxonEditorInput) {
+                       Taxon taxon = ((TaxonEditorInput) input).getTaxon();
+
+                       TaxonDescription description = null;
+
+                       ISelection selection = HandlerUtil.getActiveMenuSelection(event);
+                       if (selection instanceof ITreeSelection) {
+                               TreePath[] paths = ((ITreeSelection) selection).getPaths();
+                               Object firstSegment = paths[0].getFirstSegment();
+                               if (firstSegment instanceof TaxonDescription) {
+                                       description = (TaxonDescription) firstSegment;
+                               }
+                       }else if (selection instanceof IStructuredSelection) {
+                               Object selectedElement = ((IStructuredSelection) selection)
+                                               .getFirstElement();
+                               if (selectedElement instanceof TaxonDescription){
+                                       description = (TaxonDescription) selectedElement;
+                               }
+                       } 
+
+                       if (description != null) {
+
+                               Feature feature = (Feature) ((Event) event.getTrigger()).data;
+
+                               AbstractPostOperation operation = null;
+                               try {
+                                       // TODO use undo context specific to editor
+                                       operation = new CreateUseRecordOperation(event
+                                                       .getCommand().getName(),
+                                                       EditorUtil.getUndoContext(), taxon,
+                                                       description, element, postOperationEnabled);
+                                       EditorUtil.executeOperation(operation);
+                               } catch (NotDefinedException e) {
+                                       EditorUtil.warn(getClass(), "Command name not set");
+                               }
+                       } else {
+                               EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
+                               return null;
+                       }
+               }
+               return null;
+
+       }
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java
new file mode 100644 (file)
index 0000000..6ea72b3
--- /dev/null
@@ -0,0 +1,101 @@
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.model.description.CategoricalData;
+import eu.etaxonomy.cdm.model.description.CommonTaxonName;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Distribution;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonInteraction;
+import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+public class CreateUseRecordOperation extends AbstractPostOperation {
+       
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord";
+       
+       private TaxonDescription description;
+       private Feature feature;
+       private DescriptionElementBase element;
+
+       
+       public CreateUseRecordOperation(String label, IUndoContext undoContext,
+                       Taxon taxon, TaxonDescription description, DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {
+               super(label, undoContext, taxon, postOperationEnabled);
+               
+               this.description = description;
+               this.element = element;
+       }
+
+       public CreateUseRecordOperation(String label,
+                       IUndoContext undoContext, Taxon taxon,
+                       TaxonDescription description, Feature feature,
+                       DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {
+               this(label, undoContext, taxon, description, element, postOperationEnabled);
+               
+               this.element = element;
+       }
+
+       @Override
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               monitor.worked(20);
+               if (element == null) {
+                       if (feature.isSupportsCommonTaxonName()) {
+                               element = CommonTaxonName.NewInstance("", null);
+                       } 
+                       else if (feature.isSupportsDistribution()) {
+                               element = Distribution.NewInstance();
+                       } 
+                       else if(feature.isSupportsTaxonInteraction()){
+                               element = TaxonInteraction.NewInstance();
+                       }
+                       else if(feature.isSupportsIndividualAssociation()){
+                               element = IndividualsAssociation.NewInstance();
+                       }
+                       else if(feature.isSupportsCategoricalData()){
+                               element = CategoricalData.NewInstance();
+                       }
+                       else if(feature.isSupportsQuantitativeData()){
+                               element = QuantitativeData.NewInstance();
+                       }
+                       else {
+                               element = TextData.NewInstance();
+                       }
+               }
+
+               
+               element.setFeature(feature);
+               description.addElement(element);
+               monitor.worked(40);
+
+               return postExecute(element);
+       }
+
+       @Override
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               
+               description.addElement(element);
+               
+               return postExecute(element);
+       }
+
+       @Override
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               description.removeElement(element);
+               
+               return postExecute(null);
+       }
+}