/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.forms;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.ui.ModelUIPlugin;
import org.jboss.tools.common.model.util.ModelFeatureFactory;
/**
* @author Igels
*/
public class FormContainer extends DefaultFormContainer {
private IFormData formData;
private FormContainer() {}
public FormContainer(IFormData formData) {
super();
this.formData = formData;
this.setHeadingText(formData.getEntityName());
IForm form = null;
IFormData[] forms = formData.getForms();
// String[] entities = formData.getEntities();
for(int i=0; i<forms.length; i++) {
if(!forms[i].isNotLayouredForm()) {
form = new Form(forms[i]);
} else {
try {
form = (IForm)ModelFeatureFactory.getInstance().createFeatureInstance(forms[i].getFormClassName());
} catch(ClassCastException e) {
ModelUIPlugin.getPluginLog().logError(e);
}
}
if(form!=null) {
this.addForm(form);
form.setParent(this);
}
}
}
public void initialize(Object model) {
IFormData[] forms = formData.getForms();
String[] entities = formData.getEntities();
if (forms!=null && entities!=null) {
XModelObject xmo = (XModelObject)model;
XModelObject child;
for (int i=0;i<forms.length;++i) {
if(forms[i].getEntityName()==null) {
this.get(i).initialize(xmo);
continue;
}
String entity = forms[i].getEntityName();
// Here it is not entity but rather a unique child name
child = xmo.getChildByPath(entity);
if(child == null) {
String message = "Cannot build child form '" + forms[i].getEntityName() + "' for form '" + formData.getEntityName() + "'."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Exception exc = new FormRuntimeException(message);
ModelUIPlugin.getPluginLog().logError(exc);
} else {
this.get(i).initialize(child);
}
}
} else {
super.initialize(model);
}
}
}