/**
*
*/
package com.hundsun.ares.studio.ui.editor.blocks;
import java.util.EventObject;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.Section;
import com.hundsun.ares.studio.core.ARESCore;
import com.hundsun.ares.studio.core.model.Constants;
import com.hundsun.ares.studio.core.model.CorePackage;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.core.model.ProjectExtensibleModel;
import com.hundsun.ares.studio.internal.core.ARESProjectProperty;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelComposite;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelUtils;
/**
* @author gongyf
*
*/
public class ProjectExtensibleModelPage extends EMFExtendSectionScrolledFormPage<ARESProjectProperty> {
private ExtensibleModelComposite emc;
public ProjectExtensibleModelPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
@Override
protected EClass getEClass() {
return CorePackage.Literals.PROJECT_EXTENSIBLE_MODEL;
}
@Override
protected String getMapKey() {
return Constants.PROJECT_EXTENSIBLEMODEL_KEY;
}
@Override
protected ProjectExtensibleModel getModel() {
return (ProjectExtensibleModel) super.getModel();
}
@Override
protected void createSections(IManagedForm managedForm) {
Section basicSection = createCompositeSection("�û�����", true);
emc = new ExtensibleModelComposite(basicSection, formToolkit);
emc.setInput(getARESProject(), getModel());
basicSection.setClient(emc);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.EMFExtendSectionScrolledFormPage#processModelOnCreate(org.eclipse.emf.ecore.EObject)
*/
@Override
protected void processModelOnCreate(EObject model) {
super.processModelOnCreate(model);
ExtensibleModelUtils.extend(getARESProject(), (ExtensibleModel) model, false);
}
@Override
public void commandStackChanged(EventObject event) {
super.commandStackChanged(event);
emc.refresh();
}
// FIXME �˴�Ϊ���ݿ��ǣ����ⳣ���ڿ�ܲ����������ظ�����
// �����Ĵ���������Ҫ��չҳ��Ĺ��̶���Ҫ�Լ�����ARESCore.EXTEND_NATURE
private static String MODULE_NATURE = "com.hundsun.ares.studio.jres.core.modulenature";
private static String PRODUCT_NATURE = "com.hundsun.ares.studio.jres.core.productnature";
@Override
public boolean shouldLoad() {
try {
IProject project = getARESProject().getProject();
if (project.hasNature(ARESCore.EXTEND_NATURE)) {
return true;
}else {
if(project.hasNature(MODULE_NATURE) || project.hasNature(PRODUCT_NATURE)) {
return true;
}
}
} catch (CoreException e) {
e.printStackTrace();
}
return false;
}
}