From f22ca8aa42255788e7f81557a145404f70bf0ad1 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Thu, 20 Nov 2014 09:42:51 +0000 Subject: [PATCH] - added static method to DerivateLabelProvider to get the derivate text - refactored moving of derivates to use the operation framework. - immplemented undo/redo --- .gitattributes | 1 + .../view/derivate/DerivateDropListener.java | 88 +---------- .../derivate/DerivateViewEditorInput.java | 9 +- .../handler/DeleteDerivateHandler.java | 8 +- .../operation/DeleteDerivateOperation.java | 32 +++- .../operation/MoveDerivateOperation.java | 147 ++++++++++++++++++ .../derivateSearch/DerivateLabelProvider.java | 10 +- 7 files changed, 197 insertions(+), 98 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java diff --git a/.gitattributes b/.gitattributes index a3206c38d..280eb1c92 100644 --- a/.gitattributes +++ b/.gitattributes @@ -538,6 +538,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/SingleReadSequenceContextMenu.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDragListener.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementTransfer.java -text diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java index d9a10fe89..e5148ff67 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java @@ -9,23 +9,16 @@ */ package eu.etaxonomy.taxeditor.editor.view.derivate; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.TreeNode; import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.swt.dnd.TransferData; -import eu.etaxonomy.cdm.api.service.IOccurrenceService; -import eu.etaxonomy.cdm.api.service.molecular.ISequenceService; -import eu.etaxonomy.cdm.model.molecular.DnaSample; -import eu.etaxonomy.cdm.model.molecular.Sequence; -import eu.etaxonomy.cdm.model.molecular.SingleRead; -import eu.etaxonomy.cdm.model.occurrence.DerivedUnit; -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.view.derivate.operation.MoveDerivateOperation; +import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.MessagingUtils; -import eu.etaxonomy.taxeditor.store.CdmStore; -import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; /** * @author pplitzner @@ -36,9 +29,6 @@ public class DerivateDropListener extends ViewerDropAdapter { private final DerivateView derivateView; - /** - * @param derivateView - */ protected DerivateDropListener(DerivateView derivateView) { super(derivateView.getViewer()); this.derivateView = derivateView; @@ -57,30 +47,10 @@ public class DerivateDropListener extends ViewerDropAdapter { if(target instanceof TreeNode && data instanceof DerivateViewSelection){ DerivateViewSelection derivateViewSelection = (DerivateViewSelection)data; TreeNode targetNode = (TreeNode) target; - TreeNode draggednode = EditorUtil.getTreeNodeOfSelection(derivateViewSelection.getSelection()); - if(draggednode!=null){ - if(moveTreeNode(draggednode, targetNode)){ - //update DerivateView - derivateView.getConversationHolder().commit(); - derivateView.refreshTree(); - - // update source DerivateView if dragging between different views occurred - DerivateView sourceDerivateView = derivateViewSelection.getDerivateView(); - if(sourceDerivateView!=derivateView){ - sourceDerivateView.getConversationHolder().commit(); - sourceDerivateView.refreshTree(); - } - - //FIXME: way too much overhead for just refreshing the other DerivateView -// CdmStore.getContextManager().notifyContextRefresh(); - LocalSelectionTransfer.getTransfer().setSelection(null); - return true; - } - else{ - DerivateLabelProvider derivateLabelProvider = new DerivateLabelProvider(); - derivateLabelProvider.setConversation(derivateView.getConversationHolder()); - MessagingUtils.warningDialog("Moving derivate not possible!", derivateView, "Moving \""+derivateLabelProvider.getDerivateText(draggednode)+"\" to \""+derivateLabelProvider.getDerivateText(targetNode)+"\" is not possible!"); - } + TreeNode draggedNode = EditorUtil.getTreeNodeOfSelection(derivateViewSelection.getSelection()); + if(draggedNode!=null){ + MoveDerivateOperation moveDerivateOperation = new MoveDerivateOperation("Moving \""+derivateView.getLabelProvider().getDerivateText(draggedNode)+"\" to \""+derivateView.getLabelProvider().getDerivateText(targetNode)+"\"", EditorUtil.getUndoContext(), derivateView, draggedNode, targetNode); + return AbstractUtility.executeOperation(moveDerivateOperation).equals(Status.OK_STATUS)?true:false; } } return false; @@ -94,48 +64,4 @@ public class DerivateDropListener extends ViewerDropAdapter { return LocalSelectionTransfer.getTransfer().isSupportedType(transferType) && target instanceof TreeNode; } - /** - * @param value - * @return - */ - private boolean moveTreeNode(TreeNode draggedNode, TreeNode targetNode) { - Object draggedNodeValue = draggedNode.getValue(); - Object targetNodeValue = targetNode.getValue(); - TreeNode fromParentNode = draggedNode.getParent(); - Object fromParentSpecimen = null; - if(fromParentNode!=null){ - fromParentSpecimen = fromParentNode.getValue(); - } - - // drag'n'drop for SpecimenOrObservationBase - IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class); - if(draggedNodeValue instanceof DerivedUnit && targetNodeValue instanceof SpecimenOrObservationBase){ - DerivedUnit draggedSpecimen = (DerivedUnit) draggedNodeValue; - SpecimenOrObservationBase targetSpecimen = (SpecimenOrObservationBase) targetNodeValue; - //check if type is a sub derivate type - if(fromParentSpecimen instanceof SpecimenOrObservationBase - && fromParentNode!=null - && !fromParentNode.equals(targetNode)){//don't drag on direct parent node) - return occurrenceService.moveDerivate((SpecimenOrObservationBase)fromParentSpecimen, targetSpecimen, draggedSpecimen); - } - } - - // drag'n'drop for SingleRead - else if(draggedNodeValue instanceof SingleRead && targetNodeValue instanceof Sequence){ - SingleRead singleRead = (SingleRead) draggedNodeValue; - if(fromParentSpecimen instanceof Sequence){ - return CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)targetNodeValue, singleRead); - } - } - - // drag'n'drop for Sequence - else if(draggedNodeValue instanceof Sequence && targetNodeValue instanceof DnaSample && ((SpecimenOrObservationBase) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){ - Sequence sequence = (Sequence)draggedNodeValue; - if(fromParentSpecimen instanceof DnaSample && ((SpecimenOrObservationBase) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){ - return occurrenceService.moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence); - } - } - return false; - } - } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java index 141299b61..0d677cd09 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java @@ -131,17 +131,14 @@ public class DerivateViewEditorInput implements IEditorInput{ private String getEditorName() { String name = null; - //FIXME consider giving label provider a static method to get the derivate text. Pass the conversation as a method parameter. - DerivateLabelProvider labelProvider = new DerivateLabelProvider(); - labelProvider.setConversation(conversationHolder); for(UUID uuid:rootUUIDs){ - SpecimenOrObservationBase specimen = CdmStore.getService(IOccurrenceService.class).load(uuid); + SpecimenOrObservationBase specimen = CdmStore.getService(IOccurrenceService.class).load(uuid); if(specimen!=null){ if(name==null){ - name = labelProvider.getDerivateText(specimen); + name = DerivateLabelProvider.getDerivateText(specimen, conversationHolder); } else{ - name += ", "+labelProvider.getDerivateText(specimen); + name += " + "+DerivateLabelProvider.getDerivateText(specimen, conversationHolder); } } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java index 7a38d5936..1e8e5e87d 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java @@ -20,6 +20,8 @@ import org.eclipse.jface.viewers.TreeNode; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.molecular.Sequence; @@ -30,6 +32,7 @@ import eu.etaxonomy.taxeditor.editor.view.derivate.operation.DeleteDerivateOpera import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; /** * @@ -59,9 +62,12 @@ public class DeleteDerivateHandler extends AbstractHandler { Object object = selection.iterator().next(); if(object instanceof TreeNode){ - TreeNode treeNode = (TreeNode)object; Object value = ((TreeNode) object).getValue(); if(value instanceof SpecimenOrObservationBase || value instanceof Sequence || value instanceof SingleRead){ + if(postOperationEnabled instanceof IConversationEnabled){ + ConversationHolder conversationHolder = ((IConversationEnabled) postOperationEnabled).getConversationHolder(); + label += " "+DerivateLabelProvider.getDerivateText(value, conversationHolder); + } SpecimenDeleteConfigurator config = new SpecimenDeleteConfigurator(); config.setDeleteChildren(false); config.setShiftHierarchyUp(false); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java index 5032dde41..b480a0f83 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java @@ -14,11 +14,14 @@ 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 org.eclipse.core.runtime.Status; +import org.eclipse.ui.ISaveablePart; import eu.etaxonomy.cdm.api.service.DeleteResult; import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; @@ -56,17 +59,34 @@ public class DeleteDerivateOperation extends AbstractPostOperation { /** {@inheritDoc} */ @Override public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + if(getPostOperationEnabled() instanceof ISaveablePart){ + if(!MessagingUtils.confirmDialog("Confirm deletion", "Do you really want to delete the selected element?")){ + return Status.CANCEL_STATUS; + } + if(((ISaveablePart) getPostOperationEnabled()).isDirty()){ + MessagingUtils.warningDialog("View has unsaved changes", this, "You need to save before performing this action"); + return Status.CANCEL_STATUS; + } + } DeleteResult deleteResult = CdmStore.getService(IOccurrenceService.class).deleteDerivateHierarchy(element, deleteConfigurator); - if(!deleteResult.isOk()){ + if(deleteResult.isOk()){ + if(getPostOperationEnabled() instanceof DerivateView){ + DerivateView derivateView = (DerivateView) getPostOperationEnabled(); + //update DerivateView + derivateView.getConversationHolder().commit(); + return postExecute(null); + } + } + else{ String exceptionMessage = ""; for(Exception exception:deleteResult.getExceptions()){ exceptionMessage += exception.getLocalizedMessage(); } //TODO: add method to DeleteResult to sum up exceptions MessagingUtils.warningDialog("Deletion failed", this, exceptionMessage); - return postExecute(null); + return Status.CANCEL_STATUS; } - return postExecute(element); + return Status.OK_STATUS; } /* @@ -79,7 +99,8 @@ public class DeleteDerivateOperation extends AbstractPostOperation { /** {@inheritDoc} */ @Override public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - return execute(monitor, info); + //no redo possible + return Status.CANCEL_STATUS ; } /* @@ -92,6 +113,7 @@ public class DeleteDerivateOperation extends AbstractPostOperation { /** {@inheritDoc} */ @Override public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - return postExecute(element); + //no undo possible + return Status.CANCEL_STATUS; } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java new file mode 100644 index 000000000..960548975 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java @@ -0,0 +1,147 @@ +// $Id$ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +package eu.etaxonomy.taxeditor.editor.view.derivate.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 org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.util.LocalSelectionTransfer; +import org.eclipse.jface.viewers.TreeNode; + +import eu.etaxonomy.cdm.api.service.IOccurrenceService; +import eu.etaxonomy.cdm.api.service.molecular.ISequenceService; +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +import eu.etaxonomy.cdm.model.molecular.Sequence; +import eu.etaxonomy.cdm.model.molecular.SingleRead; +import eu.etaxonomy.cdm.model.occurrence.DerivedUnit; +import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; +import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; +import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin; +import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; +import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; + +/** + * @author pplitzner + * @date Nov 18, 2014 + * + */ +public class MoveDerivateOperation extends AbstractPostOperation { + + private final TreeNode draggedNode; + private TreeNode fromNode; + private TreeNode targetNode; + + public MoveDerivateOperation(String label, IUndoContext undoContext, + IPostOperationEnabled postOperationEnabled, TreeNode draggedNode, TreeNode targetNode) { + super(label, undoContext, null, postOperationEnabled); + this.draggedNode = draggedNode; + this.targetNode = targetNode; + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + DerivateView derivateView = null; + if(getPostOperationEnabled() instanceof DerivateView){ + derivateView = (DerivateView) getPostOperationEnabled(); + } + if(derivateView==null){ + MessagingUtils.operationDialog(this, new NullPointerException("DerivateView was null"), TaxeditorEditorPlugin.PLUGIN_ID, this.getLabel(), getLabel()); + return Status.CANCEL_STATUS; + } + if(derivateView.isDirty()){ + MessagingUtils.warningDialog("View has unsaved changes", this, "You need to save before performing this action"); + return Status.CANCEL_STATUS; + } + + fromNode = draggedNode.getParent(); + if(moveTreeNode(draggedNode, fromNode, targetNode)){ + //update DerivateView + derivateView.getConversationHolder().commit(); + LocalSelectionTransfer.getTransfer().setSelection(null); + return postExecute(null); + } + else{ + MessagingUtils.warningDialog("Moving derivate not possible!", derivateView, "Moving \""+derivateView.getLabelProvider().getDerivateText(draggedNode)+"\" to \""+derivateView.getLabelProvider().getDerivateText(targetNode)+"\" is not possible!"); + } + return Status.CANCEL_STATUS; + } + + private boolean moveTreeNode(TreeNode draggedNode, TreeNode fromNode, TreeNode targetNode) { + Object draggedNodeValue = draggedNode.getValue(); + Object targetNodeValue = targetNode.getValue(); + Object fromParentSpecimen = null; + if(fromNode!=null){ + fromParentSpecimen = fromNode.getValue(); + } + + // drag'n'drop for SpecimenOrObservationBase + IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class); + if(draggedNodeValue instanceof DerivedUnit && targetNodeValue instanceof SpecimenOrObservationBase){ + DerivedUnit draggedSpecimen = (DerivedUnit) draggedNodeValue; + SpecimenOrObservationBase targetSpecimen = (SpecimenOrObservationBase) targetNodeValue; + //check if type is a sub derivate type + if(fromParentSpecimen instanceof SpecimenOrObservationBase + && fromNode!=null + && !fromNode.equals(targetNode)){//don't drag on direct parent node) + return occurrenceService.moveDerivate((SpecimenOrObservationBase)fromParentSpecimen, targetSpecimen, draggedSpecimen); + } + } + + // drag'n'drop for SingleRead + else if(draggedNodeValue instanceof SingleRead && targetNodeValue instanceof Sequence){ + SingleRead singleRead = (SingleRead) draggedNodeValue; + if(fromParentSpecimen instanceof Sequence){ + return CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)targetNodeValue, singleRead); + } + } + + // drag'n'drop for Sequence + else if(draggedNodeValue instanceof Sequence && targetNodeValue instanceof DnaSample && ((SpecimenOrObservationBase) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){ + Sequence sequence = (Sequence)draggedNodeValue; + if(fromParentSpecimen instanceof DnaSample && ((SpecimenOrObservationBase) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){ + return occurrenceService.moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence); + } + } + return false; + } + + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + //swap fromNode and targetNode + this.targetNode = this.fromNode; + return execute(new NullProgressMonitor(), null); + } + + /* (non-Javadoc) + * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + */ + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + //swap fromNode and targetNode + this.targetNode = this.fromNode; + return execute(new NullProgressMonitor(), null); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java index 2d06fd316..b304ca851 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java @@ -58,6 +58,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { private static DefinedTerm detailImageTerm = null; private static DefinedTerm sampleDesignationTerm = null; + //FIXME: move static term getters to new singleton utility class private static void initializeTerms() { List preferredTerms = CdmStore.getTermManager().getPreferredTerms(DefinedTerm.class); for (DefinedTerm definedTerm : preferredTerms) { @@ -134,12 +135,11 @@ public class DerivateLabelProvider extends ColumnLabelProvider { this.conversation = conversation; } - /** - * - * @param derivate - * @return - */ public String getDerivateText(Object element){ + return getDerivateText(element, conversation); + } + + public static String getDerivateText(Object element, ConversationHolder conversation){ //TODO: use list of strings to assemble labels to avoid adding the separator every time and to allow null values TreeNode parentNode = null; TreeNode node = null; -- 2.34.1