/**
* Copyright (C) 2009 EDIT
-* European Distributed Institute of Taxonomy
+* 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.taxon;
-import java.util.Arrays;
-
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
-import org.eclipse.ui.IEditorInput;
import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.SynonymType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSingleSourceElement;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
* @author n.hoffmann
* @date Dec 1, 2011
- *
*/
-public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
+public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<TaxonRelationship> {//TODO: use AbstractSingleSourcedElement
+
+ private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
+ private MisappliedRelationshipComboElement combo_misappliedRelationshipType;
-// private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
-//
-// private EntitySelectionElement<Taxon> selection_relatedTaxon;
- protected ToggleableTextElement toggleable_cache;
- private EntitySelectionElement<Reference> secReference;
+ private EntitySelectionElement<Taxon> selection_relatedTaxon;
+ private CheckboxElement checkBoxDoubtful;
+ protected ToggleableTextElement toggleable_cache;
+// private EntitySelectionElement<Reference> secReference;
private EntitySelectionElement<Reference> sensuReference;
private TextWithLabelElement text_sensu_microreference;
- private CheckboxElement checkbox_doubtful;
- private TextWithLabelElement text_secundum_microreference;
+// private TextWithLabelElement text_secundum_microreference;
private TextWithLabelElement text_appendedPhrase;
- private CheckboxElement checkbox_published;
-
- private SelectionArbitrator selectionArbitrator;
-
+ private CheckboxElement checkbox_published;
+
+ private Taxon taxon;
- private Taxon taxon;
+ private TaxonDetailSection taxonElement;
- public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
+ public TaxonDetailSection getTaxonElement() {
+ return taxonElement;
+ }
+
+ public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
ICdmFormElement formElement) {
+
super(formFactory, formElement);
-
}
@Override
- protected void createControls(ICdmFormElement formElement,
+ public void createControls(ICdmFormElement formElement,
TaxonRelationship entity, int style) {
-// combo_taxonRelationshipType = formFactory.createTermComboElement(
-// TaxonRelationshipTypeInverseContainer.class,
-// formElement, "Relationship Type",
-// getTaxonRelationshipTypeInverseContainer(), style);
-// combo_taxonRelationshipType.setEnabled(false);
-// selection_relatedTaxon = formFactory.createSelectionElement(
-// Taxon.class, getConversationHolder(),
-// formElement, "Related Taxon", getRelatedTaxon(),
-// EntitySelectionElement.SELECTABLE, style);
- taxon = entity.getFromTaxon();
- toggleable_cache = formFactory.createToggleableTextField(formElement,
- "Title Cache", taxon.getTitleCache(),
- taxon.isProtectedTitleCache(), style);
-
- text_appendedPhrase = formFactory.createTextWithLabelElement(
- formElement, "Appended Phrase", taxon.getAppendedPhrase(),
- SWT.WRAP);
-
-
- sensuReference = formFactory.createSelectionElement(Reference.class,
- getConversationHolder(), formElement, "Sensu",
- taxon.getSec(), EntitySelectionElement.ALL,
- style);
-
- text_sensu_microreference = formFactory.createTextWithLabelElement(
- formElement, "Detail",
- taxon.getSecMicroReference(),null,
- SWT.WRAP);
-
-
-
-
- checkbox_published = formFactory.createCheckbox(formElement,
- "Published", taxon.isPublish(), style);
-
-
- secReference = formFactory.createSelectionElement(Reference.class,
- getConversationHolder(), formElement, "Err. Secundum",
- entity.getCitation(), EntitySelectionElement.ALL,
- style);
-
- text_secundum_microreference = formFactory.createTextWithLabelElement(
- formElement, "Detail",
- entity.getCitationMicroReference(),null,
- SWT.WRAP);
- checkbox_doubtful = formFactory.createCheckbox(formElement,
- "Misappl. doubtful", entity.isDoubtful(), style);
-
-
+ if ((entity.getType().isAnyMisappliedName()) ){
+
+ taxon = entity.getFromTaxon();
+
+ taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
+ taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ addControl(taxonElement);
+ addElement(taxonElement);
+ String label;
+ if (entity.getType().isAnyMisappliedName()) {
+ label = "Sensu";
+ }else{
+ label = "Sec.";
+ }
+ text_appendedPhrase = formFactory.createTextWithLabelElement(
+ this, "Appended Phrase", taxon.getAppendedPhrase(),
+ SWT.WRAP);
+
+ checkbox_published = formFactory.createCheckbox(this,
+ "Published", taxon.isPublish(), style);
+ sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+ formElement, label,
+ taxon.getSec(), EntitySelectionElement.ALL,
+ style);
+
+ text_sensu_microreference = formFactory.createTextWithLabelElement(
+ formElement, "Detail",
+ taxon.getSecMicroReference(),null,
+ SWT.WRAP);
+
+ if (entity.getType().isAnyMisappliedName()) {
+ label = "Misapplication Type";
+ }else{
+ label = "Relationship Type";
+ }
+ combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, label,
+ entity.getType(), style);
+
+ combo_misappliedRelationshipType.setEnabled(true);
+
+
+ if (entity.getType().isAnyMisappliedName()) {
+ label = "Misappl. Sec.";
+ }else{
+ label = "Err. Sec.";
+ }
+
+ /*TODO: use super.createControls(); to create single source element
+ secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+ formElement, label,
+ entity.getCitation(), EntitySelectionElement.ALL,
+ style);
+
+ text_secundum_microreference = formFactory.createTextWithLabelElement(
+ formElement, "Detail",
+ entity.getCitationMicroReference(),null,
+ SWT.WRAP);
+ */
+ super.createControls(formElement, entity, style);
+ setSourceLabel(label);
+
+ if (entity.getType().isAnyMisappliedName()) {
+ label = "Misapplication Doubtful";
+ }else{
+ label = "Relationship Doubtful";
+ }
+ checkBoxDoubtful = formFactory.createCheckbox(formElement, label, entity.isDoubtful(), style);
+ }else if (entity.getType().isAnySynonym() ){
+ taxon = entity.getFromTaxon();
+
+ taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
+ taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ addControl(taxonElement);
+ addElement(taxonElement);
+
+
+ text_appendedPhrase = formFactory.createTextWithLabelElement(
+ this, "Appended Phrase", taxon.getAppendedPhrase(),
+ SWT.WRAP);
+
+ checkbox_published = formFactory.createCheckbox(this,
+ "Published", taxon.isPublish(), style);
+ /*
+ * secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+
+ formElement, "Syn. Sec.",
+ entity.getCitation(), EntitySelectionElement.ALL,
+ style);
+
+ text_secundum_microreference = formFactory.createTextWithLabelElement(
+ formElement, "Detail",
+ entity.getCitationMicroReference(),null,
+ SWT.WRAP);
+ */
+
+ super.createControls(formElement, entity, style);
+ setSourceLabel("Syn. Sec.");
+ sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+ formElement, "Sec",
+ taxon.getSec(), EntitySelectionElement.ALL,
+ style);
+
+ text_sensu_microreference = formFactory.createTextWithLabelElement(
+ formElement, "Detail",
+ taxon.getSecMicroReference(),null,
+ SWT.WRAP);
+
+ combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Synonym Type",
+ entity.getType(), style);
+
+ combo_misappliedRelationshipType.setEnabled(true);
+ checkBoxDoubtful = formFactory.createCheckbox(formElement, "Syn. Doubtful", entity.isDoubtful(), style);
+
+ }else{
+ combo_taxonRelationshipType = formFactory.createTermComboElement(
+ TaxonRelationshipTypeInverseContainer.class,
+ formElement, "Relationship Type",
+ getTaxonRelationshipTypeInverseContainer(), style);
+
+ combo_taxonRelationshipType.setEnabled(false);
+ selection_relatedTaxon = formFactory.createSelectionElement(
+ Taxon.class, //getConversationHolder(),
+ formElement, "Related Taxon", getRelatedTaxon(),
+ EntitySelectionElement.SELECTABLE, style);
+ checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation Doubtful", entity.isDoubtful(), style);
+ }
}
-
+
private Taxon getRelatedTaxon() {
return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
}
private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
}
-
+
private Taxon getSourceTaxon(){
- IEditorInput editorInput = StoreUtil.getActiveEditorInput();
- return (Taxon) editorInput.getAdapter(Taxon.class);
+ return EventUtility.getCurrentTaxon();
}
@Override
public void handleEvent(Object eventSource) {
- if (eventSource== toggleable_cache) {
- handleToggleableCacheField();
- } else if (eventSource == checkbox_doubtful) {
- taxon.setDoubtful(checkbox_doubtful.getSelection());
- } else if (eventSource == secReference) {
- taxon.setSec(secReference.getSelection());
- } else if (eventSource == text_appendedPhrase) {
- taxon.setAppendedPhrase(text_appendedPhrase.getText());
- } else if (eventSource == text_secundum_microreference) {
- taxon.setSecMicroReference(text_secundum_microreference.getText());
- } else if (eventSource == checkbox_published) {
- taxon.setPublish(checkbox_published.getSelection());
- } else if (eventSource == text_sensu_microreference) {
- getEntity().setCitationMicroReference(text_sensu_microreference.getText());
- }else if (eventSource == sensuReference) {
- getEntity().setCitation(sensuReference.getSelection());
- }
+ if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
+ /* if (eventSource == secReference) {
+ getEntity().setCitation(secReference.getSelection());
+ } else if (eventSource == text_secundum_microreference) {
+ getEntity().setCitationMicroReference(text_secundum_microreference.getText());
+ } else
+ */
+ if (eventSource == text_sensu_microreference) {
+ taxon.setSecMicroReference(text_sensu_microreference.getText());
+ } else if (eventSource == sensuReference) {
+ taxon.setSec(sensuReference.getSelection());
+ } else if (eventSource == combo_taxonRelationshipType ) {
+ getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
+ } else if ( eventSource == combo_misappliedRelationshipType) {
+ getEntity().setType(combo_misappliedRelationshipType.getSelection());
+ } else if (eventSource == text_appendedPhrase) {
+ taxon.setAppendedPhrase(text_appendedPhrase.getText());
+ } else if (eventSource == checkbox_published) {
+ taxon.setPublish(checkbox_published.getSelection());
+ }
+ }else{
+ if (eventSource == selection_relatedTaxon){
+ boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
+ Taxon relatedTaxon = selection_relatedTaxon.getEntity();
+ if(inverse){
+ getEntity().setFromTaxon(relatedTaxon);
+ }else{
+ getEntity().setToTaxon(relatedTaxon);
+ }
+ }
+ }
+ if(eventSource==checkBoxDoubtful){
+ getEntity().setDoubtful(checkBoxDoubtful.getSelection());
+ }
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
+ taxonElement.updateTitle();
}
-
- protected void handleToggleableCacheField() {
- boolean pushedState = toggleable_cache.getState();
- taxon.setTitleCache(toggleable_cache.getText(), pushedState);
- setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache, checkbox_published}));
- updateToggleableCacheField();
- }
-
- public void updateToggleableCacheField() {
- if (toggleable_cache != null){
- if (!taxon.isProtectedTitleCache()) {
- toggleable_cache.setText(taxon.generateTitle());
- }
- }
- }
-
- @Override
- protected void updateContent() {
- super.updateContent();
- toggleable_cache.setEnabled(taxon.isProtectedTitleCache());
- setIrrelevant(toggleable_cache.getState(),
- Arrays.asList(new Object[] { toggleable_cache, checkbox_published}));
- }
@Override
protected void updateControlStates() {
super.updateControlStates();
-
+
}
@Override
- protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
+ protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
+ if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
String title = taxon.generateTitle();
taxon.setTitleCache(title);
super.handleTitleCacheRelevantChange(event);
- }
-
+ }
+ }
+
@Override
public void refresh(){
updateContent();
- updateToggleableCacheField();
}
-
-
-
-}
+ @Override
+ public void setEntity(TaxonRelationship entity) {
+ super.setEntity(entity);
+ if (taxonElement!=null) {
+ taxonElement.setEntity(entity.getFromTaxon());
+ }
+ }
+
+ @Override
+ public SelectionArbitrator getSelectionArbitrator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
\ No newline at end of file