including changes from cdmlib-print
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / detail / CdmSectionPart.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.editor.view.detail;
12
13 import org.eclipse.jface.util.IPropertyChangeListener;
14 import org.eclipse.jface.util.PropertyChangeEvent;
15 import org.eclipse.ui.forms.SectionPart;
16
17 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
18 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
19 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
20 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
21 import eu.etaxonomy.taxeditor.editor.EditorUtil;
22 import eu.etaxonomy.taxeditor.editor.name.container.AbstractGroupedContainer;
23 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
24 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
25 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26 import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
27 import eu.etaxonomy.taxeditor.section.occurrence.IDerivedUnitFacadeDetailSection;
28
29 /**
30 * <p>CdmSectionPart class.</p>
31 *
32 * @author n.hoffmann
33 * @created Feb 8, 2010
34 * @version 1.0
35 */
36 public class CdmSectionPart<T> extends SectionPart implements IPropertyChangeListener{
37
38 private AbstractFormSection<T> formSection;
39
40 /**
41 * <p>Constructor for CdmSectionPart.</p>
42 *
43 * @param section a {@link eu.etaxonomy.taxeditor.forms.AbstractFormSection} object.
44 * @param <T> a T object.
45 */
46 public CdmSectionPart(AbstractFormSection<T> section) {
47 super(section);
48 formSection = section;
49 }
50
51 /** {@inheritDoc} */
52 @Override
53 public boolean setFormInput(Object input) {
54 if(input instanceof AbstractGroupedContainer){
55 input = ((AbstractGroupedContainer) input).getData();
56 }
57 if((input instanceof TaxonBase) && (formSection instanceof ITaxonBaseDetailSection)){
58 ((ITaxonBaseDetailSection) formSection).setTaxonBase((TaxonBase) input);
59 return true;
60 }
61 if((input instanceof DerivedUnitBase) && (formSection instanceof IDerivedUnitFacadeDetailSection)){
62
63 try {
64 input = DerivedUnitFacade.NewInstance((DerivedUnitBase) input, PreferencesUtil.getDerivedUnitConfigurator());
65 } catch (DerivedUnitFacadeNotSupportedException e) {
66 EditorUtil.error(getClass(), e);
67 }
68 }
69
70 formSection.setEntity((T) input);
71
72 return true;
73 }
74
75 /* (non-Javadoc)
76 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
77 */
78 /** {@inheritDoc} */
79 public void propertyChange(PropertyChangeEvent event) {
80 if (event != null){
81
82 Object eventSource = event.getSource();
83
84 if(formSection.equals(eventSource)
85 || (eventSource instanceof ICdmFormElement && formSection.containsFormElement((ICdmFormElement)eventSource))){
86 markDirty();
87 }
88 }
89 }
90
91
92
93 }