X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/017f612cde61c39d38b1f1693a8ad6ad59efed8d..d58b8e3f77a8664b300c738c9678edb6024edf17:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
index 1d6c70e03..1fd7c9d29 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
@@ -1,4 +1,3 @@
-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
@@ -7,63 +6,191 @@
* 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.supplemental;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Text;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.reference.ICdmTarget;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.OriginalSourceTypeComparator;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.section.common.ExternalLinksSection;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
- *
Abstract AbstractOriginalSourceElement class.
- *
* @author n.hoffmann
* @created Mar 16, 2010
- * @version 1.0
*/
-public abstract class AbstractOriginalSourceElement extends AbstractReferencedEntityElement {
+public abstract class AbstractOriginalSourceElement
+ extends AbstractEntityCollectionElement {
+
+ private SelectionArbitrator selectionArbitrator;
+
+ protected boolean isCommonNameReference = false;
+ protected EntitySelectionElement selection_reference;
+ protected TextWithLabelElement text_referenceDetail;
+ protected TimePeriodElement accessed;
protected EnumComboElement combo_origsourcetype;
protected TextWithLabelElement text_idInSource;
protected TextWithLabelElement text_idNamespace;
+ protected TextWithLabelElement text_originalInfo;
+ protected TextWithLabelElement text_cdmsource;
+
+ protected ExternalLinksSection externalLinks;
- /**
- * Constructor for AbstractOriginalSourceElement.
- *
- * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param section a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
- * @param element a T object.
- * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
- * @param style a int.
- * @param a T object.
- */
public AbstractOriginalSourceElement(CdmFormFactory formFactory,
AbstractFormSection section,
T element, SelectionListener removeListener,
- int style) {
- super(formFactory, section, element, removeListener, style);
+ int style, boolean isCommonNameReference) {
+ super(formFactory, section, element, removeListener, null, style);
+ if(formFactory.getSelectionProvider() != null){
+ selectionArbitrator = formFactory.createSelectionArbitrator(this);
+ }
+ this.isCommonNameReference = isCommonNameReference;
}
- /** {@inheritDoc} */
+ public AbstractOriginalSourceElement(CdmFormFactory formFactory,
+ AbstractFormSection section,
+ T element, SelectionListener removeListener,
+ int style) {
+ this(formFactory, section, element, removeListener, style, false);
+ }
+
@Override
- public void init() {
- super.init();
- setHasOriginalNameString(true);
+ public void setEntity(T entity) {
+ this.entity = entity;
+ if (selection_reference != null){
+ selection_reference.setEntity(entity.getCitation());
+ text_referenceDetail.setText(entity.getCitationMicroReference());
+ text_originalInfo.setText(entity.getOriginalInfo());
+
+ ICdmTarget cdmSource = entity.getCdmSource();
+ if (cdmSource != null){
+ String source = "";
+ if(cdmSource instanceof IdentifiableEntity) {
+ source = ((IdentifiableEntity) cdmSource).getTitleCache();
+ } else if(cdmSource instanceof CdmBase) {
+ source += CdmUtils.isNotBlank(source)?"\nUUID: ":"";
+ source += ((CdmBase) cdmSource).getUuid().toString();
+ } else {
+ source = cdmSource.toString();
+ }
+ text_cdmsource.setText(source);
+ }
+ if (externalLinks != null){
+ externalLinks.setEntity(entity);
+ }
+ }
}
- /** {@inheritDoc} */
+ /**
+ * @wbp.parser.entryPoint*/
@Override
public void createControls(ICdmFormElement formElement, int style) {
+ if (isCommonNameReference && PreferencesUtil.getFilterCommonNameReferences()){
+ selection_reference = formFactory
+ .createCommonNameReferenceSelectionElement(formElement, "Reference",
+ null, EntitySelectionElement.ALL, style);
+ }else{
+ selection_reference = formFactory
+ .createSelectionElement(Reference.class,
+ formElement, "Reference",
+ null, EntitySelectionElement.ALL, style);
+ }
+
+ text_referenceDetail = formFactory.createTextWithLabelElement(
+ formElement, "Reference Detail", null, SWT.NULL);
+
+ //TODO preliminary #10057
+ if (entity != null && entity.getCitation() != null && entity.getCitation().isDynamic()){
+ TimePeriod acc =entity.getAccessed(); // (entity != null? entity.getAccessed(): null);
+ accessed = formFactory.createTimePeriodElement(formElement, "Accessed", acc, style);
+ }
+
combo_origsourcetype = formFactory
.createEnumComboElement(OriginalSourceType.class,
- formElement, style);
- text_idInSource = formFactory.createTextWithLabelElement(formElement, "Id In Source", null, style);
- text_idNamespace = formFactory.createTextWithLabelElement(formElement, "ID Namespace", null, style);
- super.createControls(formElement, style);
+ formElement, new OriginalSourceTypeComparator(getEntity()), style, false);
+
+ if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSource.getKey())){
+ text_idInSource = formFactory.createTextWithLabelElement(formElement, "ID in Source", null, style);
+ }
+ if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey())){
+ text_idNamespace = formFactory.createTextWithLabelElement(formElement, "ID Namespace", null, style);
+ }
+ text_originalInfo = formFactory.createTextWithLabelElement(
+ formElement, "Original Information", null, SWT.NULL);
+
+ //we only show the cdm source if it exist.
+ //It can't be set during editing as it is read only.
+ if (this.entity != null && this.entity.getCdmSource() != null) {
+ text_cdmsource = formFactory.createTextWithLabelElement(
+ formElement, "CDM Source", null, SWT.NULL);
+ ((Text) text_cdmsource.getMainControl()).setEditable(false);
+ }
+
+ if (entity != null){
+ selection_reference.setEntity(entity.getCitation());
+ text_referenceDetail.setText(entity.getCitationMicroReference());
+ text_originalInfo.setText(entity.getOriginalInfo());
+
+ ICdmTarget cdmSource = entity.getCdmSource();
+ if (cdmSource != null){
+ String source = "";
+ if(cdmSource instanceof IdentifiableEntity) {
+ source = ((IdentifiableEntity) cdmSource).getTitleCache();
+ } else if(cdmSource instanceof CdmBase) {
+ source += CdmUtils.isNotBlank(source)?"\nUUID: ":"";
+ source += ((CdmBase) cdmSource).getUuid().toString();
+ } else {
+ source = cdmSource.toString();
+ }
+ text_cdmsource.setText(source);
+ }
+ if (externalLinks != null){
+ externalLinks.setEntity(entity);
+ }
+ }
}
-}
+
+ @Override
+ public void handleEvent(Object eventSource) {
+ if(eventSource == text_idInSource){
+ getEntity().setIdInSource(text_idInSource.getText());
+ }
+ else if(eventSource == text_idNamespace){
+ getEntity().setIdNamespace(text_idNamespace.getText());
+ }
+ else if(eventSource == selection_reference){
+ getEntity().setCitation(selection_reference.getSelection());
+ }
+ else if(eventSource == text_referenceDetail){
+ getEntity().setCitationMicroReference(text_referenceDetail.getText());
+ }
+ else if(eventSource == text_originalInfo){
+ getEntity().setOriginalInfo(text_originalInfo.getText());
+ }
+ else if(eventSource == combo_origsourcetype){
+ getEntity().setType(combo_origsourcetype.getSelection());
+ }
+ else if(eventSource == accessed){
+ getEntity().setAccessed(accessed.getTimePeriod());
+ }
+ }
+}
\ No newline at end of file