merge from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / mvc / AbstractCdmComposite.java
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 }