2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.ui
.mvc
;
11 import org
.eclipse
.swt
.widgets
.Composite
;
12 import org
.eclipse
.swt
.widgets
.Control
;
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
;
20 * Basic implementation of {@link ICdmComposite}.
24 * @param <T> The {@link CdmCompositeController} for this composite.
26 public abstract class AbstractCdmComposite
<T
extends CdmCompositeController
> extends Composite
implements ICdmComposite
{
28 protected T controller
;
34 public AbstractCdmComposite(Composite parent
, int style
) {
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());
51 * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
54 public void initController(CdmFormFactory formFactory
, ICdmFormElement parentElement
) {
55 initInternalController(formFactory
, parentElement
);
56 initChildController(formFactory
, parentElement
);
61 * @param parentElement
64 protected abstract void initInternalController(CdmFormFactory formFactory
, ICdmFormElement parentElement
);
67 public T
getController(){