Project

General

Profile

Download (2 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
 *
22
 * @author pplitzner
23
 * @date 11.02.2014
24
 *
25
 * @param <T> The {@link CdmCompositeController} for this composite.
26
 */
27
public abstract class AbstractCdmComposite<T extends CdmCompositeController> extends Composite implements ICdmComposite {
28

    
29
    protected T controller;
30

    
31
    public AbstractCdmComposite(Composite parent, int style) {
32
        super(parent, style);
33
    }
34

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

    
47
    @Override
48
    public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
49
        initInternalController(formFactory, parentElement);
50
        initChildController(formFactory, parentElement);
51
    }
52

    
53
    protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
54

    
55
    @Override
56
    public T getController(){
57
        return controller;
58
    }
59
}
(1-1/3)