/** * Դ�������ƣ�NewTableComposite.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.clearinghouse.composite; import java.util.Collection; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.edit.command.SetCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; import org.eclipse.emf.transaction.impl.TransactionalCommandStackImpl; import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.clearinghouse.ui.page.RevisionHistoryColumnsViewerBlock; import com.hundsun.ares.studio.jres.clearinghouse.ui.page.RevisionHistoryIndexViewerBlock; import com.hundsun.ares.studio.jres.clearinghouse.ui.page.RevisionHistoryKeyViewerBlock; import com.hundsun.ares.studio.jres.model.chouse.AddTableModification; import com.hundsun.ares.studio.jres.model.chouse.ChouseFactory; import com.hundsun.ares.studio.jres.model.chouse.ChousePackage; import com.hundsun.ares.studio.jres.model.chouse.Modification; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableIndex; import com.hundsun.ares.studio.jres.model.database.TableKey; import com.hundsun.ares.studio.jres.model.database.TableResourceData; /** * @author wangxh * */ public class NewTableComposite extends ModifyActionComposite{ //�½�ԭ�� Button btnBtable; //�½���ʷ�� Button btnHtable; //ѡ��ԭ�� Boolean btSelect; //ѡ����ʷ�� Boolean htSelect; /** * �½��� * @param parent * @param resource * @param modification */ public NewTableComposite(Composite parent, TableResourceData tableData, IARESResource resource, Modification modification) { super(parent, tableData, resource, modification); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionComposite#initAction(com.hundsun.ares.studio.jres.model.database.Modification) */ @Override protected void initAction(Modification modification) { if(modification != null && modification instanceof AddTableModification){ action = (AddTableModification) modification; } else{ action = ChouseFactory.eINSTANCE.createAddTableModification(); // 2012-05-15 sundl �½�����ʷ�޶���Ϣ�б���һ���ֶκ������б� // �˴�֤���ǵ�һ��ѡ���½�����ʱ��TabelData�и����ֶ�/����������Ϣ if (tableData != null) { EList<TableColumn> columns = tableData.getColumns(); Collection<TableColumn> copyedColumns = EcoreUtil.copyAll(columns); ((AddTableModification) action).getColumns().addAll(copyedColumns); EList<TableIndex> indexes = tableData.getIndexes(); Collection<TableIndex> copyedIndexes = EcoreUtil.copyAll(indexes); ((AddTableModification) action).getIndexes().addAll(copyedIndexes); EList<TableKey> keys = tableData.getKeys(); Collection<TableKey> copyedKeys = EcoreUtil.copyAll(keys); ((AddTableModification) action).getKeys().addAll(copyedKeys); } } btSelect = ((AddTableModification)action).isNewSelfTable(); htSelect = ((AddTableModification)action).isNewHistoryTable(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionComposite#creatDetailComposite(org.eclipse.swt.widgets.Composite, com.hundsun.ares.studio.core.IARESResource) */ @Override protected void creatDetailComposite(Composite parent, IARESResource resource) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout()); GridDataFactory.fillDefaults().grab(true, true).applyTo(composite); btnBtable = new Button(composite,SWT.CHECK); btnBtable.setText("�½�ԭ��"); btnHtable = new Button(composite,SWT.CHECK); btnHtable.setText("�½���ʷ��"); GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(btnBtable); GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(btnHtable); btnBtable.setSelection(((AddTableModification)action).isNewSelfTable()); btnHtable.setSelection(((AddTableModification)action).isNewHistoryTable()); btnBtable.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { btSelect = btnBtable.getSelection(); } }); btnHtable.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { htSelect = btnHtable.getSelection(); } }); Group columnGroup = new Group(composite, SWT.NONE); columnGroup.setText("�ֶ�"); GridLayoutFactory.fillDefaults().applyTo(columnGroup); GridDataFactory.fillDefaults().grab(true, true).applyTo(columnGroup); createColumnBlock(columnGroup); Group indexGroup = new Group(composite, SWT.NONE); indexGroup.setText("����"); GridLayoutFactory.fillDefaults().applyTo(indexGroup); GridDataFactory.fillDefaults().grab(true, true).applyTo(indexGroup); createIndexBlock(indexGroup); Group keyGroup = new Group(composite, SWT.NONE); keyGroup.setText("��Լ��"); GridLayoutFactory.fillDefaults().applyTo(keyGroup); GridDataFactory.fillDefaults().grab(true, true).applyTo(keyGroup); createKeyBlock(keyGroup); } private void createColumnBlock(Composite parent) { ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); //adapterFactory.addAdapterFactory(new ChouseItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); TransactionalCommandStackImpl commandStack = new TransactionalCommandStackImpl(); EditingDomain editingDomain = new TransactionalEditingDomainImpl(adapterFactory, commandStack); RevisionHistoryColumnsViewerBlock block = new RevisionHistoryColumnsViewerBlock(editingDomain, resource); block.createControl(parent, new FormToolkit(getDisplay())); GridDataFactory.fillDefaults().grab(true, true).applyTo(block.getControl()); editingDomain.getCommandStack().addCommandStackListener(block); block.setInput(action); } private void createIndexBlock(Composite parent) { ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); //adapterFactory.addAdapterFactory(new ChouseItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); TransactionalCommandStackImpl commandStack = new TransactionalCommandStackImpl(); EditingDomain editingDomain = new TransactionalEditingDomainImpl(adapterFactory, commandStack); RevisionHistoryIndexViewerBlock block = new RevisionHistoryIndexViewerBlock(editingDomain, resource); block.createControl(parent, new FormToolkit(getDisplay())); GridDataFactory.fillDefaults().grab(true, true).applyTo(block.getControl()); editingDomain.getCommandStack().addCommandStackListener(block); block.setInput(action); } private void createKeyBlock(Composite parent) { ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); //adapterFactory.addAdapterFactory(new ChouseItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); TransactionalCommandStackImpl commandStack = new TransactionalCommandStackImpl(); EditingDomain editingDomain = new TransactionalEditingDomainImpl(adapterFactory, commandStack); RevisionHistoryKeyViewerBlock block = new RevisionHistoryKeyViewerBlock(editingDomain, resource ,action); block.createControl(parent, new FormToolkit(getDisplay())); GridDataFactory.fillDefaults().grab(true, true).applyTo(block.getControl()); editingDomain.getCommandStack().addCommandStackListener(block); block.setInput(action); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.stock3.ui.history.ModifyActionComposite#getAction() */ @Override public Modification getAction() { AddTableModification addAction = (AddTableModification)action; EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(action); if(addAction.isNewHistoryTable() != htSelect){ if (editingDomain != null) { Command command = SetCommand.create(editingDomain, action, ChousePackage.Literals.ADD_TABLE_MODIFICATION__NEW_HISTORY_TABLE, htSelect); editingDomain.getCommandStack().execute(command); } else { ((AddTableModification)action).setNewHistoryTable(htSelect); } } if(addAction.isNewSelfTable() != btSelect){ if (editingDomain != null) { Command command = SetCommand.create(editingDomain, action, ChousePackage.Literals.ADD_TABLE_MODIFICATION__NEW_SELF_TABLE, btSelect); editingDomain.getCommandStack().execute(command); } else { ((AddTableModification)action).setNewSelfTable(btSelect); } } return action; }; }