ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / mvc / AbstractCdmComposite.java
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 * @author pplitzner
22 * @date 11.02.2014
23 *
24 * @param <T> The {@link CdmCompositeController} for this composite.
25 */
26 public abstract class AbstractCdmComposite<T extends CdmCompositeController> extends Composite implements ICdmComposite {
27
28 protected T controller;
29
30 /**
31 * @param parent
32 * @param style
33 */
34 public AbstractCdmComposite(Composite parent, int style) {
35 super(parent, style);
36 }
37
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());
46 }
47 }
48 }
49
50 /* (non-Javadoc)
51 * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
52 */
53 @Override
54 public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
55 initInternalController(formFactory, parentElement);
56 initChildController(formFactory, parentElement);
57 }
58
59 /**
60 * @param formFactory
61 * @param parentElement
62 * @return
63 */
64 protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
65
66 @Override
67 public T getController(){
68 return controller;
69 }
70
71 }