Project

General

Profile

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

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

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

    
20
/**
21
 * Basic implementation of {@link ICdmComposite}.
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
    /**
32
     * @param parent
33
     * @param style
34
     */
35
    public AbstractCdmComposite(Composite parent, int style) {
36
        super(parent, style);
37
    }
38

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

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

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

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

    
72
}
(1-1/3)