Project

General

Profile

Download (2.35 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2014 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
package eu.etaxonomy.taxeditor.ui.mvc;
10

    
11
import org.eclipse.swt.widgets.Composite;
12
import org.eclipse.swt.widgets.Control;
13

    
14
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
15
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
16
import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
17
import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite;
18

    
19
/**
20
 * Basic implementation of {@link ICdmComposite}.
21
 * @author pplitzner
22
 * @date 11.02.2014
23
 *
24
 * @param <T> The {@link CdmCompositeController} for this composite.
25
 */
26
public abstract class AbstractCdmComposite<T extends CdmCompositeController> extends Composite implements ICdmComposite {
27

    
28
    protected T controller;
29

    
30
    /**
31
     * @param parent
32
     * @param style
33
     */
34
    public AbstractCdmComposite(Composite parent, int style) {
35
        super(parent, style);
36
    }
37

    
38
    protected void initChildController(CdmFormFactory formFactory, ICdmFormElement parentElement){
39
        Control[] children = this.getChildren();
40
        for (int i = 0; i < children.length; i++) {
41
            if(children[i] instanceof ICdmComposite){
42
                ICdmComposite cdmComposite = (ICdmComposite)children[i];
43
                cdmComposite.initController(formFactory, parentElement);
44
                formFactory.adapt(cdmComposite.getController());
45
                parentElement.addElement(cdmComposite.getController());
46
            }
47
        }
48
    }
49

    
50
    /* (non-Javadoc)
51
     * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
52
     */
53
    @Override
54
    public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
55
        initInternalController(formFactory, parentElement);
56
        initChildController(formFactory, parentElement);
57
    }
58

    
59
    /**
60
     * @param formFactory
61
     * @param parentElement
62
     * @return
63
     */
64
    protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
65

    
66
    @Override
67
    public T getController(){
68
        return controller;
69
    }
70

    
71
}
(1-1/3)