+++ /dev/null
-/**
-* Copyright (C) 2007 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.ui.section.name;
-
-import java.net.URI;
-
-import org.eclipse.swt.events.SelectionListener;
-
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
-import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.cdm.model.media.MediaRepresentation;
-import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
-import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
-import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
-import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-
-/**
- * <p>ProtologueElement class.</p>
- *
- * @author n.hoffmann
- * @created Nov 5, 2009
- * @version 1.0
- */
-public class ProtologueElement extends AbstractEntityCollectionElement<DescriptionElementBase> implements ISelectableElement, IOpenUrlEnabled{
-
- private final SelectionArbitrator selectionArbitrator;
-
- private UriWithLabelElement protologueUriText;
- private MediaRepresentationPart mediaRepresentationPart;
- private Media media;
- private MediaRepresentation mediaRepresentation;
-
- /**
- * <p>Constructor for ProtologueElement.</p>
- *
- * @param element a {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase} object.
- * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
- * @param style a int.
- * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
- */
- public ProtologueElement(CdmFormFactory cdmFormFactory, AbstractFormSection<?> formElement, DescriptionElementBase element,
- SelectionListener removeListener, int style) {
- super(cdmFormFactory, formElement, element, removeListener, null, style);
- selectionArbitrator = cdmFormFactory.createSelectionArbitrator(this);
- }
-
- /** {@inheritDoc} */
- @Override
- public void createControls(ICdmFormElement element, int style) {
- protologueUriText = formFactory.createUriWithLabelElement(element, "Protologue URI", null, style);
-
- formFactory.createOpenUrlSelectorElement(element, "Query BHL for Reference Image", this, style);
- }
-
- /** {@inheritDoc} */
- @Override
- public void setEntity(DescriptionElementBase element) {
- this.entity = element;
-
- if(element.getMedia().size() == 0){
- element.addMedia(Media.NewInstance());
- }
- media = element.getMedia().iterator().next();
-
- if(media.getRepresentations().size() == 0){
- media.addRepresentation(MediaRepresentation.NewInstance());
- }
- mediaRepresentation = media.getRepresentations().iterator().next();
-
- if(mediaRepresentation.getParts().size() == 0){
- mediaRepresentation.addRepresentationPart(MediaRepresentationPart.NewInstance(null, null));
- }
-
- mediaRepresentationPart = mediaRepresentation.getParts().iterator().next();
-
- if(mediaRepresentationPart.getUri() != null){
- protologueUriText.setText(mediaRepresentationPart.getUri().toString());
- }
- }
-
- /**
- * <p>Getter for the field <code>selectionArbitrator</code>.</p>
- *
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator} object.
- */
- @Override
- public SelectionArbitrator getSelectionArbitrator() {
- return selectionArbitrator;
- }
-
- /** {@inheritDoc} */
- @Override
- public void handleEvent(Object eventSource) {
- if(eventSource == protologueUriText && protologueUriText.getText()!=null){
- mediaRepresentationPart.setUri(protologueUriText.parseText());
- }
- }
-
- @Override
- public void setOpenUrl(URI uri) {
- protologueUriText.setText(uri.toString());
- firePropertyChangeEvent(new CdmPropertyChangeEvent(protologueUriText, null));
- }
-
- @Override
- public Reference getReference() {
- return (Reference) getName().getNomenclaturalReference();
- }
-
- @Override
- public String getDetail() {
- return getName().getNomenclaturalMicroReference();
- }
-
- private TaxonName getName(){
- TaxonNameDescription description = (TaxonNameDescription) entity.getInDescription();
-
- TaxonName taxonName = description.getTaxonName();
-
- return taxonName;
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2007 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.ui.section.name;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
-import eu.etaxonomy.cdm.model.description.TextData;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
-import eu.etaxonomy.taxeditor.ui.section.DefaultCdmBaseComparator;
-import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
-
-/**
- * <p>ProtologueSection class.</p>
- *
- * @author n.hoffmann
- * @created Nov 5, 2009
- */
-public class ProtologueSection extends AbstractEntityCollectionSection<TaxonName, DescriptionElementBase> implements ITaxonBaseDetailSection{
-
- private TaxonBase taxonBase;
-
- /**
- * <p>Constructor for ProtologueSection.</p>
- *
- * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
- * @param style a int.
- * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- */
- public ProtologueSection(CdmFormFactory cdmFormFactory, ConversationHolder conversation, ICdmFormElement parentElement, int style) {
- super(cdmFormFactory, conversation, parentElement, "Protologues / Original Publications", style);
- }
-
- /** {@inheritDoc} */
- @Override
- public DescriptionElementBase createNewElement() {
- return TextData.NewInstance(Feature.PROTOLOGUE());
- }
-
-
- /** {@inheritDoc} */
- @Override
- public Collection<DescriptionElementBase> getCollection(TaxonName entity) {
- Collection<DescriptionElementBase> result = new ArrayList<>();
- List<TaxonNameDescription> descriptions = getTaxonNameDescriptions(entity);
- for (TaxonNameDescription desc : descriptions){
- desc.getElements()
- .stream()
- .filter(element -> element.getFeature().equals(Feature.PROTOLOGUE()))
- .forEach(element -> result.add(element));
- }
- return result;
-//OLD: return getTaxonNameDescription(entity).getElements();
- }
-
- @Override
- public Comparator<DescriptionElementBase> getComparator() {
- return new DefaultCdmBaseComparator<>();
- }
-
-
- /** {@inheritDoc} */
- @Override
- public String getEmptyString() {
- return "No protologues yet.";
- }
-
-
- /** {@inheritDoc} */
- @Override
- protected String getTooltipString() {
- return "Create a new protologue";
- }
-
- /** {@inheritDoc} */
- @Override
- public void addElement(DescriptionElementBase element) {
- //for simplification we always use the first description to add elements here
- getTaxonNameDescription(getEntity()).addElement(element);
- }
-
- /** {@inheritDoc} */
- @Override
- public void removeElement(DescriptionElementBase element) {
- List<TaxonNameDescription> descriptions = getTaxonNameDescriptions(getEntity());
- for (TaxonNameDescription desc : descriptions){
- desc.removeElement(element);
- }
- }
-
- /** {@inheritDoc} */
- @Override
- public void setTaxonBase(TaxonBase entity) {
- this.taxonBase = entity;
- TaxonName name = HibernateProxyHelper.deproxy(entity.getName());
- setEntity(name);
- }
-
- /**
- * NOTE: returns first description
- * @param name
- * @return
- */
- private TaxonNameDescription getTaxonNameDescription(TaxonName name){
- if(name.getDescriptions().size() == 0){
- name.addDescription(TaxonNameDescription.NewInstance(name));
- }
- return name.getDescriptions().iterator().next();
- }
-
- /**
- * Try to fix FIXME in {@link #getTaxonNameDescription(TaxonNameBase)}
- * @param name
- * @return
- */
- private List<TaxonNameDescription> getTaxonNameDescriptions(TaxonName name){
- List<TaxonNameDescription> result = new ArrayList<>();
- if (name == null){
- return result;
- }
- for (TaxonNameDescription desc : name.getDescriptions()){
- result.add(desc);
- }
- return result;
- }
-
- @Override
- public TaxonBase getTaxonBase() {
- return taxonBase;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public DescriptionElementBase addExisting() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean allowAddExisting() {
- return false;
- }
-}