Merge branch 'hotfix/5.44.1'
[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 org.eclipse.jface.util.PropertyChangeEvent;
13 import org.eclipse.swt.SWT;
14 import org.eclipse.swt.widgets.Composite;
15
16 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
17 import eu.etaxonomy.cdm.model.name.NameRelationship;
18 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
19 import eu.etaxonomy.cdm.model.name.TaxonName;
20 import eu.etaxonomy.cdm.model.term.TermRelationshipType;
21 import eu.etaxonomy.taxeditor.l10n.Messages;
22 import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
23 import eu.etaxonomy.taxeditor.ui.combo.RelationshipTypeCombo;
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 {
37
38 private EntitySelectionElement<TaxonName> selection_relatedTo;
39
40 private RelationshipTypeCombo combo_relationshipType;
41
42 private final TaxonName entity;
43
44 private RelationshipTermBase type;
45
46 private TaxonName relatedName;
47 boolean inverse;
48
49 /**
50 * <p>
51 * Constructor for NameRelationshipWizardPage.
52 * </p>
53 *
54 * @param callingSection
55 * a
56 * {@link eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection}
57 * object.
58 */
59 protected NameRelationshipWizardPage(
60 NameRelationshipDetailSection callingSection, CdmFormFactory formFactory) {
61 super("NameRelationshipWizardPage", formFactory); //$NON-NLS-1$
62 setTitle("New Name Relationship"); //$NON-NLS-1$
63 //setDescription(callingSection.getEntity().getTitleCache());
64 setDescription(Messages.NameRelationshipWizardPage_description);
65 this.entity = callingSection.getEntity();
66
67 formFactory.addPropertyChangeListener(this);
68 }
69
70 /*
71 * (non-Javadoc)
72 *
73 * @see
74 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
75 * .Composite)
76 */
77 /** {@inheritDoc} */
78 @Override
79 public void createControl(Composite parent) {
80 super.createControl(parent);
81
82 combo_relationshipType = formFactory.createNameRelationshipTypeCombo(rootElement,
83 entity.getNameCache(), SWT.NULL, false,null);
84
85
86 selection_relatedTo = formFactory
87 .createSelectionElement(TaxonName.class, rootElement,
88 "",this.entity, EntitySelectionElement.ALL,
89 SWT.NULL, true);
90
91 }
92
93 /**
94 * <p>
95 * getNameRelationship
96 * </p>
97 *
98 * @return a {@link eu.etaxonomy.cdm.model.name.NameRelationship} object.
99 */
100 public NameRelationship getNameRelationship() {
101 NameRelationship rel;
102 if (inverse){
103 rel = entity.addRelationshipFromName(relatedName, (NameRelationshipType)type, null, null, null, null);
104 }else{
105 rel = entity.addRelationshipToName(relatedName, (NameRelationshipType)type, null, null, null, null);
106 }
107 return rel;
108 }
109
110 /** {@inheritDoc} */
111 @Override
112 public void propertyChange(PropertyChangeEvent event) {
113 if (event == null) {
114 return;
115 }
116 Object eventSource = event.getSource();
117 if (eventSource == combo_relationshipType && combo_relationshipType.getSelection() != null) {
118 type = combo_relationshipType.getSelection().getTerm();
119 this.inverse = combo_relationshipType.getSelection().isInverse();
120 } else if (eventSource == selection_relatedTo) {
121 relatedName = selection_relatedTo.getEntity();
122
123 }
124
125 boolean complete = type != null && relatedName != null;
126 setPageComplete(complete);
127 }
128
129 }