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
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"
\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
}\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
--- /dev/null
+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
--- /dev/null
+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
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;
}
}
- if (isUseDescription == true) {
+ if (isUseDescription == true && getInput() instanceof CategoricalData ) {
createUseRecordSection(rootElement);
}
else {