import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.reference.IReference;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author n.hoffmann
@Override
public Image getImage(Object element) {
if(element instanceof TaxonRelationship){
- TaxonRelationshipType type = ((TaxonRelationship) element).getType();
-
- return getTaxonRelationshipImage(type);
+ return getTaxonRelationshipImage((TaxonRelationship) element);
}
return super.getImage(element);
}
@Override
public String getText(Object element) {
if(element instanceof TaxonRelationship){
- TaxonRelationship relationship = (TaxonRelationship) element;
-
- return String.format("%s %s %s", relationship.getFromTaxon(), relationship.getType().getLabel(), relationship.getToTaxon());
+ return formatRelationship((TaxonRelationship) element);
}
return "";
}
+ /**
+ * Creates a string that holds a representation of the {@link TaxonRelationship} in relation to
+ * the accepted taxon of the currently active {@link MultiPageTaxonEditor}.
+ *
+ * @param relationship
+ * @return a formatted String representation of the relationship
+ */
+ private String formatRelationship(TaxonRelationship relationship){
+ Taxon acceptedTaxon = EditorUtil.getActiveMultiPageTaxonEditor().getTaxon();
+ boolean inverse = relationship.getFromTaxon().equals(acceptedTaxon) ? true : false;
+
+ TaxonRelationshipType type = relationship.getType();
+ Representation representation = inverse ? type.getInverseRepresentation(Language.ENGLISH()) : type.getRepresentation(Language.ENGLISH());
+
+ Taxon relatedTaxon = inverse ? relationship.getToTaxon() : relationship.getFromTaxon();
+
+ String symbolString = representation.getAbbreviatedLabel();
+ String relatedTaxonString = relatedTaxon.getName().getTitleCache();
+ String secReferenceString = relatedTaxon.getSec().getTitleCache();
+
+ String string = String.format("%s %s sensu %s", symbolString, relatedTaxonString, secReferenceString);
+
+ return string;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object)
*/
}
/**
+ * TODO we will get the proper relationship symbol from the type's abbreviated label as a character.
+ * The image may be omitted then.
+ *
* @param type
* @return
*/
- public Image getTaxonRelationshipImage(TaxonRelationshipType type) {
-
+ private Image getTaxonRelationshipImage(TaxonRelationship relationship) {
+ TaxonRelationshipType type = (relationship).getType();
return ImageResources.getImage(ImageResources.CONCEPT_ICON);
}
}