/** * Դ�������ƣ�StandardFieldEditor.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui * ����˵����Ԫ�����û��༭��UIչ����ع��� * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.basicdata.ui.editor; import java.util.EventObject; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.ui.PartInitException; import com.hundsun.ares.studio.core.model.JRESResourceInfo; import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.StandardFieldColumn; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.StandardFieldModelAndData; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.StandardFieldPackageDefine; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.provider.BasicdataItemProviderAdapterFactory; import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.STDModelAndDataDefineTablePage; import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.STDModelAndDataPage; import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.SingleTableOverviewPage; import com.hundsun.ares.studio.jres.metadata.ui.editors.OperationEditPage; import com.hundsun.ares.studio.ui.editor.ARESEditorPlugin; import com.hundsun.ares.studio.ui.editor.EMFFormPage; import com.hundsun.ares.studio.ui.editor.blocks.RevisionHistoryListPage; /** *��׼�ֵ�༭�� * */ public class STDModelAndDataEditor extends BasicDataEMFFormEditor { private STDModelAndDataPage singleTableListPage; private STDModelAndDataDefineTablePage definePage; private boolean shouldReloadModel = false; /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataEMFFormEditor#addMetadataitemPage() */ @Override protected EMFFormPage addMetadataItemPage() { return null; } @Override protected void configureComposedAdapterFactory( ComposedAdapterFactory adapterFactory) { adapterFactory.addAdapterFactory(new BasicdataItemProviderAdapterFactory()); } @Override protected void addPages() { try { addPage(new SingleTableOverviewPage(this, "overview", "������Ϣ"){ @Override protected JRESResourceInfo getInfo() { return ((StandardFieldModelAndData) getEditor().getInfo()).getData(); } }); singleTableListPage = new STDModelAndDataPage(this, "list", "����",IBasicDataEpacakgeConstant.MasterItem); addPage(singleTableListPage); definePage = new STDModelAndDataDefineTablePage(this, "info", "ģ�Ͷ���"); addPage(definePage); operationPage = new OperationEditPage(this, "oparetion", "�û�����"){ protected JRESResourceInfo getInfo() { StandardFieldModelAndData info = (StandardFieldModelAndData)getEditor().getInfo(); return info.getData(); }; }; addPage(operationPage); historyPage = new RevisionHistoryListPage(this, "histroy", "�޶���Ϣ"){ protected JRESResourceInfo getInfo() { StandardFieldModelAndData info = (StandardFieldModelAndData)getEditor().getInfo(); return info.getData(); }; }; addPage(historyPage); getEditingDomain().getCommandStack().addCommandStackListener(new CommandStackListener() { @Override public void commandStackChanged(EventObject event) { Command command = getEditingDomain().getCommandStack().getMostRecentCommand(); if(command != null){ for(Object obj:command.getAffectedObjects()){ if(obj instanceof StandardFieldPackageDefine){ shouldReloadModel = true; }else if(obj instanceof StandardFieldColumn){ shouldReloadModel = true; } } } } }); } catch (PartInitException e) { e.printStackTrace(); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.EMFFormEditor#handleAfterSave() */ @Override protected void handleAfterSave() { try { if(shouldReloadModel){ createModel(); singleTableListPage.recreateViewerBlock(); //�����������ʱ���п��ܻ�û�򿪵ڶ���ҳ�棬����block���ܻ����null����� if(definePage.getStandardFieldViewBlock() != null){ definePage.reset(); } shouldReloadModel = false; } } catch (Exception e) { e.printStackTrace(); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.EMFFormEditor#getInfoClass() */ @Override protected EClass getInfoClass() { return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.basicdata.ui.editor.BasicDataEMFFormEditor#setSelection(java.lang.Object) */ @Override protected void setSelection(Object element) { } //ר�����ڵ���������ݵ�ģ�Ͷ���󣬶Ա༭�����б��棬��Ϊ��ʱEMF����ջ������AffectedObjectsΪ�գ� //�����shouldReloadModel���иı䣬�����ֶ���Ϊtrue���Խ������ˢ�� public void save(){ shouldReloadModel = true; doSave(new NullProgressMonitor()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.EMFFormEditor#getDialogSettings() */ @Override protected IDialogSettings getDialogSettings() { IDialogSettings settings = ARESEditorPlugin.getDefault().getDialogSettings(); IDialogSettings blockSettings = null; blockSettings = settings.getSection(this.getClass().getSimpleName()); if (blockSettings == null) { blockSettings = settings.addNewSection(this.getClass().getSimpleName()); blockSettings.put(ACTIVE_EDITOR_INDEX, 0); } return blockSettings; } }