/**
*
*/
package com.hundsun.ares.studio.ui.editor.blocks;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.databinding.edit.EMFEditObservables;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.FormToolkit;
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.ExtensibleModelConfigProperty;
import com.hundsun.ares.studio.internal.core.ARESProjectProperty;
/**
* @author gongyf
*
*/
public class ExtensibleModelConfigPage extends EMFExtendSectionScrolledFormPage<ARESProjectProperty> {
private Text configText;
/**
* @param editor
* @param id
* @param title
*/
public ExtensibleModelConfigPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
// 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";
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.page.ExtendPageWithMyDirtySystem#shouldLoad()
*/
@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)
|| project.hasNature("com.hundsun.ares.studio.jres.jresnature")) {
return true;
}
}
} catch (CoreException e) {
e.printStackTrace();
}
return false;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.EMFExtendSectionScrolledFormPage#getEClass()
*/
@Override
protected EClass getEClass() {
return CorePackage.Literals.EXTENSIBLE_MODEL_CONFIG_PROPERTY;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.EMFExtendSectionScrolledFormPage#getMapKey()
*/
@Override
protected String getMapKey() {
return Constants.EXTENSIBLE_MODEL_CONFIG_PROPERTY_KEY;
}
@Override
protected ExtensibleModelConfigProperty getModel() {
return (ExtensibleModelConfigProperty) super.getModel();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.page.ExtendSectionScrolledFormPage#createSections(org.eclipse.ui.forms.IManagedForm)
*/
@Override
protected void createSections(IManagedForm managedForm) {
FormToolkit toolkit = managedForm.getToolkit();
Composite body = managedForm.getForm().getBody();
configText = toolkit.createText(body, StringUtils.defaultString(getModel().getXml()) , SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL);
GridLayoutFactory.fillDefaults().applyTo(body);
GridDataFactory.fillDefaults().hint(20, 20).grab(true, true).applyTo(configText);
//���ݰ�
databinding();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.page.HSComponentbasedFormPage#setEditable(boolean)
*/
@Override
public void setEditable(boolean editable) {
configText.setEditable(editable);
super.setEditable(editable);
}
private void databinding() {
getBindingContext().bindValue(SWTObservables.observeText(configText, SWT.Modify),
EMFEditObservables.observeValue(getEditingDomain(), getModel(), CorePackage.Literals.EXTENSIBLE_MODEL_CONFIG_PROPERTY__XML));
}
}