/** * Դ�������ƣ�DictionaryListPage.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui * ����˵����Ԫ�����û��༭��UIչ����ع��� * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.basicdata.ui.editor.pages; //import org.eclipse.core.commands.Command; import org.apache.log4j.Logger; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.impl.DynamicEObjectImpl; import org.eclipse.emf.transaction.ResourceSetChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.validate.util.BasicDataValidateUnit; import com.hundsun.ares.studio.jres.basicdata.logic.epackage.BasicDataEpackageFactory; import com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks.MasterSlaveDetailViewerBlock; import com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks.SingleTableListViewerBlock; import com.hundsun.ares.studio.jres.metadata.ui.editors.AbstractMetadataFormPage; import com.hundsun.ares.studio.jres.model.metadata.MetadataCategory; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.ui.editor.EMFFormEditor; import com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock; import com.hundsun.ares.studio.validate.ValidateUtil; /** * �����ֵ�༭����ϸ���� * */ public class MasterSlaveTablePage extends AbstractMetadataFormPage { private static Logger logger = Logger.getLogger(MasterSlaveTablePage.class); private SingleTableListViewerBlock masterListViewerBlock; private MasterSlaveDetailViewerBlock slaveDetailViewerBlock; /** * @param editor * @param id * @param title */ public MasterSlaveTablePage(EMFFormEditor editor, String id, String title) { super(editor, id, title); } /** * @return the dictionaryListViewerBlock */ public SingleTableListViewerBlock getMasterListViewerBlock() { return masterListViewerBlock; } /** * @return the dictionaryDetailViewerBlock */ public MasterSlaveDetailViewerBlock getSlaveDetailViewerBlock() { return slaveDetailViewerBlock; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataListPage#isNeedValidate(org.eclipse.emf.transaction.ResourceSetChangeEvent) */ @Override protected boolean isNeedValidate(ResourceSetChangeEvent event) { for (Notification notification : event.getNotifications()) { Object obj = notification.getNotifier(); if (obj instanceof DynamicEObjectImpl) { return true; } if (notification.getFeature() == MetadataPackage.Literals.METADATA_CATEGORY__CHILDREN || notification.getFeature() == MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS || notification.getNotifier() instanceof MetadataItem || notification.getNotifier() instanceof MetadataCategory) { return true; } } return false; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.AbstractMetadataFormPage#createMetadataComposite(org.eclipse.swt.widgets.Composite, org.eclipse.ui.forms.widgets.FormToolkit) */ @Override protected void createMetadataComposite(Composite body, FormToolkit toolkit) { EPackage epackage = null; try { epackage = BasicDataEpackageFactory.eINSTANCE.createEPackage(getEditor().getARESResource()); } catch (Exception e) { logger.error("�༭��������ʱ����ȡEPackageʧ��", e); return; } SashForm sashForm = new SashForm(body, SWT.VERTICAL); masterListViewerBlock = new SingleTableListViewerBlock(this, getEditingDomain(), getSite(), getEditor().getARESResource(), getProblemPool(), epackage, IBasicDataEpacakgeConstant.MasterItem); masterListViewerBlock.setEditableControl(getEditableControl()); masterListViewerBlock.createControl(sashForm, toolkit); getEditor().getActionBarContributor().addGlobalActionHandlerProvider(masterListViewerBlock); slaveDetailViewerBlock = new MasterSlaveDetailViewerBlock(getEditingDomain(), getEditor().getARESResource(), getProblemPool(), epackage ); slaveDetailViewerBlock.setEditableControl(getEditableControl()); slaveDetailViewerBlock.createControl(sashForm, toolkit); getEditor().getActionBarContributor().addGlobalActionHandlerProvider(slaveDetailViewerBlock); sashForm.setWeights(new int[] { 6, 4 }); masterListViewerBlock.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { ISelection selection = event.getSelection(); if (selection instanceof IStructuredSelection && !selection.isEmpty()) { Object element = ((IStructuredSelection)selection).getFirstElement(); if (!(element instanceof MetadataCategory)) { slaveDetailViewerBlock.setInput(element); } } } }); addPropertyListener(masterListViewerBlock); getEditingDomain().getCommandStack().addCommandStackListener(masterListViewerBlock); addPropertyListener(slaveDetailViewerBlock); getEditingDomain().getCommandStack().addCommandStackListener(slaveDetailViewerBlock); } @Override public void infoChange() { masterListViewerBlock.setInput(getInfo()); super.infoChange(); // masterListViewerBlock.getOperationControl().setData(getInfo()); // masterListViewerBlock.getOperationControl().setContext(createScriptContext()); } @Override public void dispose() { removePropertyListener(masterListViewerBlock); getEditingDomain().getCommandStack().removeCommandStackListener(masterListViewerBlock); removePropertyListener(slaveDetailViewerBlock); getEditingDomain().getCommandStack().removeCommandStackListener(slaveDetailViewerBlock); super.dispose(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.AbstractMetadataFormPage#getViewerBlock() */ @Override protected ColumnViewerBlock getViewerBlock() { return masterListViewerBlock; } @Override protected void configureValidateControl() { // getValidateControl().addValidateUnit(new EReferenceValidateUnit(getInfo(), MetadataPackage.Literals.METADATA_RESOURCE_DATA__ROOT)); getValidateControl().addValidateUnit(new BasicDataValidateUnit(getInfo(),IBasicDataEpacakgeConstant.Attr_Master_Items)); getValidateControl().setContext(ValidateUtil.getValidateContext(getEditor().getARESResource())); } }