c2767aeaf58db6091b2daff7b9f6ef173a08fc02
[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.ICdmComposite;
18 import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
19
20 /**
21 * @author pplitzner
22 * @date 11.02.2014
23 *
24 */
25 public abstract class AbstractCdmComposite extends Composite implements ICdmComposite {
26
27 protected CdmCompositeController controller;
28
29 /**
30 * @param parent
31 * @param style
32 */
33 public AbstractCdmComposite(Composite parent, int style) {
34 super(parent, style);
35 }
36
37 protected void initChildController(CdmFormFactory formFactory, ICdmFormElement parentElement){
38 Control[] children = this.getChildren();
39 for (int i = 0; i < children.length; i++) {
40 if(children[i] instanceof ICdmComposite){
41 ICdmComposite cdmComposite = (ICdmComposite)children[i];
42 cdmComposite.initController(formFactory, parentElement);
43 formFactory.adapt(cdmComposite.getController());
44 parentElement.addElement(cdmComposite.getController());
45 }
46 }
47 }
48
49 /* (non-Javadoc)
50 * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
51 */
52 @Override
53 public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
54 initInternalController(formFactory, parentElement);
55 initChildController(formFactory, parentElement);
56 }
57
58 /**
59 * @param formFactory
60 * @param parentElement
61 * @return
62 */
63 protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
64
65 @Override
66 public CdmCompositeController getController(){
67 return controller;
68 }
69
70 }