AT: committing latest changes to the Tax Editor to fix the issue with the description...
authora.theys <a.theys@localhost>
Mon, 30 Apr 2012 16:12:33 +0000 (16:12 +0000)
committera.theys <a.theys@localhost>
Mon, 30 Apr 2012 16:12:33 +0000 (16:12 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseSummaryHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index a8ccce62e8011fccdf9f6f4fcc33e3c6404302cf..69bae9a8543db85d8dea1ff2b09218243c9fe005 100644 (file)
@@ -481,8 +481,10 @@ 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/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/CreateUseSummaryHandler.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/CreateUseSummaryOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/TaonDescriptionEditor.screen -text
 eu.etaxonomy.taxeditor.editor/src/main/resources/log4j.properties -text
 eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/Application.java -text
index 7c86c5ef4fd309bf5d0991144c9fdf49d75b645e..65ce1b18aaacd1bb686bf82a21edba14bec1bced 100644 (file)
                label="New Use"
                style="push">
          </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.editor.use.createUseSummary"
+               label="New Use Summary"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <or>
+                  <reference
+                        definitionId="isDescription">
+                  </reference>
+                  <reference
+                        definitionId="isDescriptionElement">
+                  </reference>
+                  <reference
+                        definitionId="isFeatureNodeContainer">
+                  </reference>
+               </or>
+            </visibleWhen>
+         </command>
          <command
                commandId="eu.etaxonomy.taxeditor.editor.use.createUseRecord"
                label="New Use Record"
       </handler>
    </extension>
    <extension
-         id="eu.etaxonomy.taxeditor.editor.use.createUseRecord"
          name="Name Commands"
          point="org.eclipse.ui.commands">
       <category
             id="eu.etaxonomy.taxeditor.use.commands.adduse"
             name="New Use">
       </command>
+      <command
+            categoryId="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
+            defaultHandler="eu.etaxonomy.taxeditor.editor.view.uses.handler.CreateUseSummaryHandler"
+            id="eu.etaxonomy.taxeditor.editor.use.createUseSummary"
+            name="New Use Summary">
+      </command>
       <command
             categoryId="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
             defaultHandler="eu.etaxonomy.taxeditor.editor.view.uses.handler.CreateUseRecordHandler"
index a2d7ca588eea5ac33d510784ac9aa46d359af1f4..40fe5a793f00551f30be1634a712e62a87f491e8 100644 (file)
@@ -2,16 +2,23 @@ package eu.etaxonomy.taxeditor.editor.view.uses;
 \r
 \r
 \r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
 import org.eclipse.jface.viewers.ColumnLabelProvider;\r
 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;\r
 import org.eclipse.jface.viewers.StyledString;\r
 \r
 import eu.etaxonomy.cdm.api.service.DefaultCategoricalDescriptionBuilder;\r
 import eu.etaxonomy.cdm.api.service.DescriptionBuilder;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.description.CategoricalData;\r
 import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
 import eu.etaxonomy.cdm.model.description.Modifier;\r
 import eu.etaxonomy.cdm.model.description.StateData;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 /**\r
@@ -88,9 +95,18 @@ public class UsesLabelProvider extends ColumnLabelProvider implements
                        }\r
                        return text;\r
                }\r
-\r
-               else{\r
-                       text = "Use Record";\r
+               \r
+               else if (element instanceof TextData) {\r
+                       List<Language> languages = Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()});\r
+                       LanguageString languageString = ((TextData) element).getPreferredLanguageString(languages);\r
+                       text = languageString != null ? languageString.getText() : null;\r
+                       if (text == null || text.length() == 0) {\r
+                               text = "No data provided";\r
+                       }\r
+               }\r
+               \r
+               else if (element instanceof FeatureNodeContainer){\r
+                       text = ((FeatureNodeContainer)element).getFeature().getTitleCache();\r
                }\r
 \r
                return  text;\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseSummaryHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseSummaryHandler.java
new file mode 100644 (file)
index 0000000..50cc81d
--- /dev/null
@@ -0,0 +1,94 @@
+package eu.etaxonomy.taxeditor.editor.view.uses.handler;\r
+\r
+\r
+import java.util.UUID;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.common.NotDefinedException;\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.ITreeSelection;\r
+import org.eclipse.jface.viewers.TreePath;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.forms.editor.FormEditor;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateUseRecordOperation;\r
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateUseSummaryOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * The context manager mediates context start/stop and workbench shutdowns to all registered listeners.\r
+ *\r
+ * @author a.theys     \r
+ * @created mar 13, 2012\r
+ * @version 1.0\r
+ */\r
+public class CreateUseSummaryHandler extends AbstractHandler {\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+               IWorkbenchPart part = HandlerUtil.getActivePart(event);\r
+               IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part\r
+                               : null;\r
+\r
+               IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+               if (editor instanceof FormEditor) {\r
+                       editor = ((FormEditor) editor).getActiveEditor();\r
+               }\r
+               IEditorInput input = editor.getEditorInput();\r
+               if (input instanceof TaxonEditorInput) {\r
+                       Taxon taxon = ((TaxonEditorInput) input).getTaxon();\r
+\r
+                       TaxonDescription description = null;\r
+\r
+                       ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
+                       if (selection instanceof ITreeSelection) {\r
+                               TreePath[] paths = ((ITreeSelection) selection).getPaths();\r
+                               Object firstSegment = paths[0].getFirstSegment();\r
+                               if (firstSegment instanceof TaxonDescription) {\r
+                                       description = (TaxonDescription) firstSegment;\r
+                               }\r
+                       }else if (selection instanceof IStructuredSelection) {\r
+                               Object selectedElement = ((IStructuredSelection) selection)\r
+                                               .getFirstElement();\r
+                               if (selectedElement instanceof TaxonDescription){\r
+                                       description = (TaxonDescription) selectedElement;\r
+                               }\r
+                       } \r
+\r
+                       if (description != null) {\r
+                               AbstractPostOperation operation = null;\r
+                               try {\r
+                                       //Use Record Feature retrieval below\r
+                                       Feature feature = (Feature) CdmStore.getService(ITermService.class).find(UUID.fromString("6acb0348-c070-4512-a37c-67bcac016279"));\r
+                                       //feature.setSupportsCategoricalData(true);\r
+                                       feature.setSupportsTextData(true);\r
+                                       operation = new CreateUseSummaryOperation(event\r
+                                                       .getCommand().getName(),\r
+                                                       EditorUtil.getUndoContext(), taxon,\r
+                                                       description, feature, postOperationEnabled);\r
+                                       \r
+                                       EditorUtil.executeOperation(operation);\r
+                               } catch (NotDefinedException e) {\r
+                                       EditorUtil.warn(getClass(), "Command name not set");\r
+                               }\r
+                       } else {\r
+                               EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));\r
+                               return null;\r
+                       }\r
+               }\r
+               return null;\r
+\r
+       }\r
+}\r
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java
new file mode 100644 (file)
index 0000000..9510262
--- /dev/null
@@ -0,0 +1,90 @@
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
+\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.description.CategoricalData;\r
+import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Distribution;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;\r
+import eu.etaxonomy.cdm.model.description.QuantitativeData;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.description.TaxonInteraction;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+\r
+\r
+/**\r
+ * The context manager mediates context start/stop and workbench shutdowns to all registered listeners.\r
+ *\r
+ * @author a.theys     \r
+ * @created mar 13, 2012\r
+ * @version 1.0\r
+ */\r
+public class CreateUseSummaryOperation extends AbstractPostOperation {\r
+       \r
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord";\r
+       \r
+       private TaxonDescription description;\r
+       private Feature feature;\r
+       private DescriptionElementBase element;\r
+\r
+       \r
+       public CreateUseSummaryOperation(String label, IUndoContext undoContext,\r
+               Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {\r
+                       super(label, undoContext, taxon, postOperationEnabled);\r
+               \r
+                       this.description = description;\r
+                       this.feature = feature;\r
+       }\r
+\r
+       public CreateUseSummaryOperation(String label,\r
+                       IUndoContext undoContext, Taxon taxon,\r
+                       TaxonDescription description, Feature feature,\r
+                       DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {\r
+                       this(label, undoContext, taxon, description, feature, postOperationEnabled);\r
+                       \r
+               this.element = element;\r
+       }\r
+\r
+       @Override\r
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               monitor.worked(20);\r
+               if (element == null) {\r
+\r
+                               element = TextData.NewInstance();\r
+               }\r
+\r
+               \r
+               element.setFeature(feature);\r
+               description.addElement(element);\r
+               monitor.worked(40);\r
+\r
+               return postExecute(element);\r
+       }\r
+\r
+       @Override\r
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               \r
+               description.addElement(element);\r
+               \r
+               return postExecute(element);\r
+       }\r
+\r
+       @Override\r
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               description.removeElement(element);\r
+               \r
+               return postExecute(null);\r
+       }\r
+}\r
index e3aa9e8afc08a31ccf6888f3ac4fbd27ce73c21d..e4ac3f0b1504ad6fc4423b0b5ebad1244e2c5b4e 100644 (file)
@@ -31,10 +31,12 @@ import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
@@ -213,7 +215,7 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                                }
                        }
                        
-                       if (isUseDescription == true) {
+                       if (isUseDescription == true && getInput() instanceof CategoricalData ) {
                                createUseRecordSection(rootElement);
                        }
                        else {