From 0122459a91ef7cbb53ebefcae5d20b8721810158 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Wed, 12 Aug 2020 13:11:01 +0200 Subject: [PATCH] ref #9116: add single source element to taxon node details and restructure the wizard --- .../DefaultOpenTaxonNodeWizardHandlerE4.java | 1 + .../taxeditor/ui/element/CdmFormFactory.java | 10 +- .../TaxonNodeDetailElement.java | 152 ++++++++++-------- .../reference/AdvancedSourceElement.java | 30 ++-- .../reference/OriginalSourceElement.java | 34 +++- .../reference/SingleSourceSection.java | 20 ++- 6 files changed, 156 insertions(+), 91 deletions(-) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java index 35c7a98db..aa93223b9 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java @@ -66,6 +66,7 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE WizardDialog dialog = new WizardDialog(shell, taxonNodeWizard); dialog.open(); EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, entity); + EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, entity.getTaxonUuid()); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java index e679464e6..d10dbd84c 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java @@ -320,6 +320,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDe import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement; import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection; import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceAdvancedSection; +import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceElement; import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement; import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection; import eu.etaxonomy.taxeditor.ui.section.reference.SingleSourceSection; @@ -1854,8 +1855,8 @@ public class CdmFormFactory extends FormToolkit { return section; } - public SingleSourceSection createSingleSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ - SingleSourceSection section = new SingleSourceSection(this, conversation, parentElement, selectionProvider, style); + public SingleSourceSection createSingleSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, CdmBase cdmEntity, ISelectionProvider selectionProvider, int style){ + SingleSourceSection section = new SingleSourceSection(this, conversation, parentElement, cdmEntity, selectionProvider, style); addAndAdaptSection(parentElement, section); return section; } @@ -2204,6 +2205,11 @@ public class CdmFormFactory extends FormToolkit { addAndAdaptElement(parentElement, element); return element; } + public OriginalSourceElement createOriginalSourceElement(ICdmFormElement parentElement, CdmBase cdmEntity){ + OriginalSourceElement element = new OriginalSourceElement(this, parentElement, cdmEntity); + addAndAdaptElement(parentElement, element); + return element; + } public TaxonRelationshipDetailElement createTaxonRelationshipDetailElement(ICdmFormElement parentElement){ TaxonRelationshipDetailElement element = new TaxonRelationshipDetailElement(this, parentElement); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java index c13d8d89c..34fdca558 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java @@ -9,20 +9,26 @@ package eu.etaxonomy.taxeditor.ui.section.classification; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; +import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.forms.widgets.TableWrapData; import eu.etaxonomy.cdm.common.CdmUtils; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; +import eu.etaxonomy.cdm.model.description.DescriptionElementSource; import eu.etaxonomy.cdm.model.metadata.CdmPreference; import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; import eu.etaxonomy.cdm.model.metadata.PublishEnum; @@ -46,6 +52,7 @@ import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement; import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceElement; import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement; @@ -61,6 +68,8 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement private static final String REUSE_EXISTING_NAME = Messages.TaxonNodeWizardPage_REUSE_EXISTING_NAME; private static final String SECUNDUM_REFERENCE = Messages.TaxonNodeWizardPage_SECUNDUM_REFERENCE; + private static final Font FONT_BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT); + private boolean createNew = false; private Classification classification; private TaxonNode parentNode; @@ -73,7 +82,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement private EntitySelectionElement selection_reuseExistingTaxon; private EntitySelectionElement selection_reuseExistingName; private EntitySelectionElement selection_SecRef; - private EntitySelectionElement selection_Ref; + + private OriginalSourceElement sourceSection; + private TextWithLabelElement textTaxonSec; private TextWithLabelElement microReference; private TextWithLabelElement textNewTaxonName; @@ -97,7 +108,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement } public Reference getRef() { - return selection_Ref.getEntity(); + return sourceSection.getEntity().getCitation(); } public TaxonName getExistingName() { return selection_reuseExistingName.getEntity(); @@ -110,63 +121,57 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement protected void createControls(ICdmFormElement formElement, TaxonNode entity, int style) { // taxon = entity.getTaxon(); + Label taxonTitle = new Label(getLayoutComposite(), SWT.NULL); + taxonTitle.setText("Taxon Information"); + TableWrapData tableWrap = LayoutConstants.FILL_HORIZONTALLY(2, 2); + tableWrap.valign = SWT.TOP; + taxonTitle.setLayoutData(tableWrap); + taxonTitle.setFont(FONT_BOLD); if (isCreateNew()){ -// setParentTreeNode(entity); - selection_parentTaxonNode = formFactory - .createTaxonNodeSelectionElement(getConversationHolder(), formElement, Messages.TaxonNodeWizardPage_PARENT, parentNode, - EntitySelectionElement.DELETABLE, style, 100); - - selection_Ref = formFactory - .createSelectionElement(Reference.class, - formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null, - EntitySelectionElement.DELETABLE, style, 100); + textNewTaxonName = formFactory.createTextWithLabelElement(formElement, + Messages.TaxonNodeWizardPage_NEW_TAXON, "", style); + textNewTaxonName.setFocus(); - microReference = formFactory.createTextWithLabelElement(formElement, - Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE_DETAIL, "", style); - microReference.setText(parentNode.getMicroReference()); - - selection_reuseExistingTaxon = formFactory - .createSelectionElement(Taxon.class,//getConversationHolder(), - formElement, - REUSE_EXISTING_TAXON, null, - EntitySelectionElement.DELETABLE, style); - - selection_reuseExistingName = formFactory - .createSelectionElement(TaxonName.class,//getConversationHolder(), - formElement, - REUSE_EXISTING_NAME, taxon != null? taxon.getName(): null, - EntitySelectionElement.DELETABLE, style); - selection_SecRef = formFactory + selection_reuseExistingTaxon = formFactory + .createSelectionElement(Taxon.class,//getConversationHolder(), + formElement, + REUSE_EXISTING_TAXON, null, + EntitySelectionElement.DELETABLE, style); + + selection_reuseExistingName = formFactory + .createSelectionElement(TaxonName.class,//getConversationHolder(), + formElement, + REUSE_EXISTING_NAME, taxon != null? taxon.getName(): null, + EntitySelectionElement.DELETABLE, style); + selection_SecRef = formFactory .createSelectionElement(Reference.class,//getConversationHolder(), formElement, SECUNDUM_REFERENCE, taxon != null? taxon.getSec(): null, EntitySelectionElement.DELETABLE, style, 100); - if (isCreateNew()){ - textNewTaxonName = formFactory.createTextWithLabelElement(formElement, - Messages.TaxonNodeWizardPage_NEW_TAXON, "", style); - textNewTaxonName.setFocus(); - } else{ - textNewTaxonName = formFactory.createTextWithLabelElement(formElement, - Messages.TaxonNodeWizardPage_TAXON, "", style); - } - }else{ - taxon = getEntity().getTaxon(); - if (entity.getParent().getTaxon() == null){ - TextWithLabelElement textParent = formFactory.createTextWithLabelElement( - formElement,CLASSIFICATION_STR, entity.getClassification().getTitleCache(), style); - textParent.setEnabled(false); - }else{ - TextWithLabelElement textParent = formFactory.createTextWithLabelElement( - formElement, Messages.TaxonNodeWizardPage_PARENT, entity.getParent().getTaxon().getTitleCache(), style); - textParent.setEnabled(false); - } + checkbox_publish = formFactory.createCheckbox(formElement, + "Taxon is published", true, style); + + checkbox_publish.setEnabled(isCreateNew()); + Label seperator = new Label(getLayoutComposite(), SWT.HORIZONTAL | SWT.SEPARATOR); + seperator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 3)); + Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL); + nodeTitle.setText("Taxon Node"); + nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + nodeTitle.setFont(FONT_BOLD); - selection_Ref = formFactory - .createSelectionElement(Reference.class, - formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null, - EntitySelectionElement.DELETABLE, style); +// microReference = formFactory.createTextWithLabelElement(formElement, +// Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE_DETAIL, "", style); +// microReference.setText(parentNode.getMicroReference()); + selection_parentTaxonNode = formFactory + .createTaxonNodeSelectionElement(getConversationHolder(), formElement, Messages.TaxonNodeWizardPage_PARENT, parentNode, + EntitySelectionElement.DELETABLE, style, 100); + + + + }else{ + taxon = getEntity().getTaxon(); selection_reuseExistingTaxon = formFactory .createSelectionElement(Taxon.class,//getConversationHolder(), formElement, @@ -174,27 +179,32 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement EntitySelectionElement.DELETABLE, style); textTaxonSec = formFactory.createTextWithLabelElement(formElement,SECUNDUM_REFERENCE, "", style); + if (entity.getTaxon().getSec() != null){ textTaxonSec.setText(taxon.getSec().getTitleCache()); } textTaxonSec.setEnabled(false); - } - if (!isCreateNew()){ - if (entity.getReference() != null){ - selection_Ref.setEntity(entity.getReference()); - } - } + Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL); + nodeTitle.setText("Taxon Node"); + nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + nodeTitle.setFont(FONT_BOLD); - Taxon tax = null; - if (entity.getTaxon() != null){ - tax = entity.getTaxon(); - } - checkbox_publish = formFactory.createCheckbox(formElement, - "Taxon is published", tax != null? tax.isPublish(): true, style); + if (entity.getParent().getTaxon() == null){ + TextWithLabelElement textParent = formFactory.createTextWithLabelElement( + formElement,CLASSIFICATION_STR, entity.getClassification().getTitleCache(), style); + textParent.setEnabled(false); + }else{ + TextWithLabelElement textParent = formFactory.createTextWithLabelElement( + formElement, Messages.TaxonNodeWizardPage_PARENT, entity.getParent().getTaxon().getTitleCache(), style); + textParent.setEnabled(false); + } +// sourceSection = formFactory.createOriginalSourceElement(formElement, entity); - checkbox_publish.setEnabled(isCreateNew()); + } + Label spacer = new Label(getLayoutComposite(), SWT.NULL); + spacer.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); combo_status = formFactory.createEnumComboElement(TaxonNodeStatus.class, formElement, style, true); if (!isCreateNew()){ combo_status.setSelection(entity.getStatus()); @@ -231,9 +241,19 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement if (!isCreateNew()){ selectionNodeAgentRelation = formFactory.createTaxonNodeAgentRelationCollectionSection(formElement, getConversationHolder(), StoreUtil.getSectionStyle(TaxonNodeAgentRelationCollectionSection.class, entity.getClass().getCanonicalName())); - selectionNodeAgentRelation.setEntity(entity); + selectionNodeAgentRelation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + selectionNodeAgentRelation.setEntity(entity); + } + + sourceSection = formFactory.createOriginalSourceElement(formElement, entity); + if (isCreateNew()){ + sourceSection.setEntity(null); + }else{ + sourceSection.setEntity(entity.getSource()); } + + } private void preFillTaxonName() { @@ -304,9 +324,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement complete = !textNewTaxonName.getText().isEmpty(); } - if (eventSource == selection_Ref) { + if (eventSource == sourceSection) { if(!isCreateNew()){ - getEntity().setReference(selection_Ref.getEntity()); + getEntity().setSource((DescriptionElementSource)sourceSection.getEntity()); } }else if (eventSource == selection_SecRef) { if (taxon != null){ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/AdvancedSourceElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/AdvancedSourceElement.java index 18bdf8db0..9df3fef7c 100755 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/AdvancedSourceElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/AdvancedSourceElement.java @@ -12,7 +12,8 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; -import eu.etaxonomy.cdm.model.media.ExternalLink; +import eu.etaxonomy.cdm.model.common.ReferencedEntityBase; +import eu.etaxonomy.cdm.model.description.DescriptionElementSource; import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; import eu.etaxonomy.cdm.model.reference.OriginalSourceBase; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; @@ -28,7 +29,7 @@ import eu.etaxonomy.taxeditor.ui.section.common.ExternalLinksSection; * @author k.luther * @since Jul 2, 2020 */ -public class AdvancedSourceElement extends AbstractCdmDetailElement { +public class AdvancedSourceElement extends AbstractCdmDetailElement { protected TextWithLabelElement text_idInSource; protected TextWithLabelElement text_idNamespace; @@ -45,16 +46,17 @@ public class AdvancedSourceElement extends AbstractCdmDetailElement implements IPropertyChangeListener{ +public class OriginalSourceElement extends AbstractCdmDetailElement implements IPropertyChangeListener{ // protected EnumComboElement combo_origsourcetype; private EntitySelectionElement selection_Ref; private OriginalSourceAdvancedSection advancedSection; + private CdmBase cdmEntity; + // protected EntitySelectionElement selection_reference; // protected TextWithLabelElement text_referenceDetail; - public OriginalSourceElement(CdmFormFactory formFactory, ICdmFormElement formElement) { + public OriginalSourceElement(CdmFormFactory formFactory, ICdmFormElement formElement, CdmBase cdmEntity) { super(formFactory, formElement); + this.cdmEntity = cdmEntity; // selectionArbitrator = formFactory.createSelectionArbitrator(this); } @Override - protected void createControls(ICdmFormElement formElement, OriginalSourceBase entity, int style) { + protected void createControls(ICdmFormElement formElement, ReferencedEntityBase entity, int style) { selection_Ref = formFactory.createSelectionElement(Reference.class, formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null, @@ -69,11 +75,31 @@ public class OriginalSourceElement extends AbstractCdmDetailElement { +public class SingleSourceSection extends AbstractCdmDetailSection { + + CdmBase cdmEntity; /** * @param formFactory * @param conversation @@ -31,17 +34,18 @@ public class SingleSourceSection extends AbstractCdmDetailSection createCdmDetailElement( - AbstractCdmDetailSection parentElement, int style) { + protected AbstractCdmDetailElement createCdmDetailElement( + AbstractCdmDetailSection parentElement, int style) { - return new OriginalSourceElement(getFormFactory(), parentElement); + return new OriginalSourceElement(getFormFactory(), parentElement, cdmEntity); } @Override @@ -51,6 +55,6 @@ public class SingleSourceSection extends AbstractCdmDetailSection