From: a.theys Date: Mon, 30 Apr 2012 16:12:33 +0000 (+0000) Subject: AT: committing latest changes to the Tax Editor to fix the issue with the description... X-Git-Tag: 3.6.0~1060^2~22 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/e38f840cacfa3f3ffe183c990aa298110e3f8be3 AT: committing latest changes to the Tax Editor to fix the issue with the description character limit by using another description element (Use Summary). --- diff --git a/.gitattributes b/.gitattributes index a8ccce62e..69bae9a85 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 7c86c5ef4..65ce1b18a 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -474,6 +474,25 @@ label="New Use" style="push"> + + + + + + + + + + + + + + languages = Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()}); + LanguageString languageString = ((TextData) element).getPreferredLanguageString(languages); + text = languageString != null ? languageString.getText() : null; + if (text == null || text.length() == 0) { + text = "No data provided"; + } + } + + else if (element instanceof FeatureNodeContainer){ + text = ((FeatureNodeContainer)element).getFeature().getTitleCache(); } return text; 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 index 000000000..50cc81d7b --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseSummaryHandler.java @@ -0,0 +1,94 @@ +package eu.etaxonomy.taxeditor.editor.view.uses.handler; + + +import java.util.UUID; + +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.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.api.service.ITermService; +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.editor.view.uses.operation.CreateUseSummaryOperation; +import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; + +/** + * The context manager mediates context start/stop and workbench shutdowns to all registered listeners. + * + * @author a.theys + * @created mar 13, 2012 + * @version 1.0 + */ +public class CreateUseSummaryHandler 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) { + AbstractPostOperation operation = null; + try { + //Use Record Feature retrieval below + Feature feature = (Feature) CdmStore.getService(ITermService.class).find(UUID.fromString("6acb0348-c070-4512-a37c-67bcac016279")); + //feature.setSupportsCategoricalData(true); + feature.setSupportsTextData(true); + operation = new CreateUseSummaryOperation(event + .getCommand().getName(), + EditorUtil.getUndoContext(), taxon, + description, feature, 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/CreateUseSummaryOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java new file mode 100644 index 000000000..951026299 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java @@ -0,0 +1,90 @@ +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; + + +/** + * The context manager mediates context start/stop and workbench shutdowns to all registered listeners. + * + * @author a.theys + * @created mar 13, 2012 + * @version 1.0 + */ +public class CreateUseSummaryOperation extends AbstractPostOperation { + + public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord"; + + private TaxonDescription description; + private Feature feature; + private DescriptionElementBase element; + + + public CreateUseSummaryOperation(String label, IUndoContext undoContext, + Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) { + super(label, undoContext, taxon, postOperationEnabled); + + this.description = description; + this.feature = feature; + } + + public CreateUseSummaryOperation(String label, + IUndoContext undoContext, Taxon taxon, + TaxonDescription description, Feature feature, + DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) { + this(label, undoContext, taxon, description, feature, postOperationEnabled); + + this.element = element; + } + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + monitor.worked(20); + if (element == null) { + + 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); + } +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java index e3aa9e8af..e4ac3f0b1 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java @@ -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 {