/**
* Դ�������ƣ�StandardFieldEditor.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.basicdata.ui.editor;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.transaction.TriggerListener;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.PartInitException;
import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.provider.BasicdataItemProviderAdapterFactory;
import com.hundsun.ares.studio.jres.basicdata.core.basicdata.validate.util.InfoTableLocatorHelper;
import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.BasicDataExtendPage;
import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.BasicDataSQLPreviewPage;
import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.InfoTablePage;
import com.hundsun.ares.studio.jres.basicdata.ui.editor.pages.MasterLinkTablePage;
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;
import com.hundsun.ares.studio.ui.editor.text.TextEditorInput;
/**
*���ֵ�༭��
*
*/
public class MasterSlaveLinkModelEditor extends BasicDataEMFFormEditor {
private MasterLinkTablePage listPage;
private InfoTablePage infoPage;
private InfoTableLocatorHelper locator;
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.form.EMFFormEditor#getInfoClass()
*/
@Override
protected EClass getInfoClass() {
return null;
// return (EClass)BasicDataEpackageFactory.eINSTANCE.createEPackage(getARESResource()).getEClassifier(IBasicDataEpacakgeConstant.ResourceRoot);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataEMFFormEditor#addMetadataitemPage()
*/
@Override
protected EMFFormPage addMetadataItemPage() {
// listPage = new MasterLinkTablePage(this, "list", "���ӱ�");
return listPage;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataEMFFormEditor#setSelection(java.lang.Object)
*/
@Override
protected void setSelection(Object element) {
listPage.getEditor().setActivePage(listPage.getId());
listPage.getMasterListViewerBlock().getColumnViewer().setSelection(new StructuredSelection(element), true);
}
@Override
protected void configureComposedAdapterFactory(
ComposedAdapterFactory adapterFactory) {
adapterFactory.addAdapterFactory(new BasicdataItemProviderAdapterFactory());
}
@Override
protected void addPages() {
locator = new InfoTableLocatorHelper(getInfo());
locator.reset();
getEditingDomain().addResourceSetListener(new TriggerListener() {
@Override
protected Command trigger(TransactionalEditingDomain domain,
Notification notification) {
int type = notification.getEventType();
EStructuralFeature feature = (EStructuralFeature) notification.getFeature();
String name = ((EObject)notification.getNotifier()).eClass().getName();
if(Notification.REMOVE == type
&& StringUtils.equals(feature.getName(), IBasicDataEpacakgeConstant.Attr_Info_Items)){
locator.reset();
}
if((Notification.SET == type ||Notification.UNSET == type)
&& StringUtils.equals(name, IBasicDataEpacakgeConstant.InfoItem)){
locator.reset();
}
return null;
}
});
try {
listPage = new MasterLinkTablePage(this, "list", "���ӱ�",locator);
addPage(listPage);
infoPage = new InfoTablePage(this, "info", "��Ϣ��");
addPage(infoPage);
operationPage = new OperationEditPage(this, "oparetion", "�û�����");
addPage(operationPage);
addPage(new BasicDataSQLPreviewPage(this, "preview", "SQLԤ��"), new TextEditorInput());
historyPage = new RevisionHistoryListPage(this, "histroy", "����Ϣ");
addPage(historyPage);
addPage(0, new SingleTableOverviewPage(this, "overview", "������Ϣ"));
addPage(new BasicDataExtendPage(this, "extend", "��չ��������"));
addPageChangedListener(new BasicDataSQLPreviewUpdater());
} catch (PartInitException e) {
e.printStackTrace();
}
}
public InfoTableLocatorHelper getLocator() {
return locator;
}
/* (non-Javadoc)
* @see org.eclipse.ui.forms.editor.FormEditor#pageChange(int)
*/
@Override
protected void pageChange(int newPageIndex) {
super.pageChange(newPageIndex);
//�л�ҳʱˢ��һ�¹�����
if(1 == newPageIndex && !locator.isReady()){
listPage.relink();
}
}
/* (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;
}
}