ref #8398 adapting taxeditor to changes in NameRelationship
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / name / NameRelationshipWizardPage.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.ui.section.name;
11
12 import java.awt.Composite;
13 import java.beans.PropertyChangeEvent;
14
15 import org.eclipse.jface.util.IPropertyChangeListener;
16 import org.eclipse.swt.SWT;
17
18 import eu.etaxonomy.cdm.model.name.NameRelationship;
19 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
20 import eu.etaxonomy.cdm.model.name.TaxonName;
21 import eu.etaxonomy.taxeditor.l10n.Messages;
22 import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
23 import eu.etaxonomy.taxeditor.ui.combo.NameRelationshipTypeCombo;
24 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
25 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
26
27 /**
28 * <p>
29 * NameRelationshipWizardPage class.
30 * </p>
31 *
32 * @author n.hoffmann
33 * @created Jun 1, 2010
34 * @version 1.0
35 */
36 public class NameRelationshipWizardPage extends AbstractEntityCollectionElementWizardPage implements
37 IPropertyChangeListener {
38
39 private EntitySelectionElement<TaxonName> selection_relatedTo;
40
41 private NameRelationshipTypeCombo combo_relationshipType;
42
43 private final TaxonName entity;
44
45 private NameRelationshipType type;
46
47 private TaxonName relatedName;
48 boolean inverse;
49
50 /**
51 * <p>
52 * Constructor for NameRelationshipWizardPage.
53 * </p>
54 *
55 * @param callingSection
56 * a
57 * {@link eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection}
58 * object.
59 */
60 protected NameRelationshipWizardPage(
61 NameRelationshipDetailSection callingSection, CdmFormFactory formFactory) {
62 super("NameRelationshipWizardPage", formFactory); //$NON-NLS-1$
63 setTitle("New Name Relationship"); //$NON-NLS-1$
64 //setDescription(callingSection.getEntity().getTitleCache());
65 setDescription(Messages.NameRelationshipWizardPage_description);
66 this.entity = callingSection.getEntity();
67
68 formFactory.addPropertyChangeListener(this);
69 }
70
71 /*
72 * (non-Javadoc)
73 *
74 * @see
75 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
76 * .Composite)
77 */
78 /** {@inheritDoc} */
79 @Override
80 public void createControl(Composite parent) {
81 super.createControl(parent);
82
83 combo_relationshipType = formFactory.createNameRelationshipTypeCombo(rootElement,
84 entity.getNameCache(), SWT.NULL, false,null);
85
86
87 selection_relatedTo = formFactory
88 .createSelectionElement(TaxonName.class,
89 ((NameRelationshipWizard) getWizard())
90 .getConversationHolder(), rootElement,
91 "",this.entity, EntitySelectionElement.ALL,
92 SWT.NULL, true);
93
94 }
95
96 /**
97 * <p>
98 * getNameRelationship
99 * </p>
100 *
101 * @return a {@link eu.etaxonomy.cdm.model.name.NameRelationship} object.
102 */
103 public NameRelationship getNameRelationship() {
104 NameRelationship rel;
105 if (inverse){
106 rel = entity.addRelationshipFromName(relatedName, type, null, null, null, null);
107 }else{
108 rel = entity.addRelationshipToName(relatedName, type, null, null, null, null);
109 }
110 return rel;
111 }
112
113 /** {@inheritDoc} */
114 @Override
115 public void propertyChange(PropertyChangeEvent event) {
116 if (event == null) {
117 return;
118 }
119 Object eventSource = event.getSource();
120 if (eventSource == combo_relationshipType) {
121 type = combo_relationshipType.getSelection().getTerm();
122 this.inverse = combo_relationshipType.getSelection().isInverse();
123 } else if (eventSource == selection_relatedTo) {
124 relatedName = selection_relatedTo.getEntity();
125 }
126
127 boolean complete = type != null && relatedName != null;
128 setPageComplete(complete);
129 }
130
131 }