/** * Դ�������ƣ�DBModuleCommonPropertyPage.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.database.ui.pages; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.databinding.edit.EMFEditObservables; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.edit.command.SetCommand; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; 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 org.eclipse.ui.forms.widgets.Section; import com.hundsun.ares.studio.internal.core.ARESProjectProperty; import com.hundsun.ares.studio.jres.model.database.DBModuleCommonProperty; import com.hundsun.ares.studio.jres.model.database.DatabasePackage; import com.hundsun.ares.studio.ui.editor.blocks.EMFExtendSectionScrolledFormPage; /** * @author gongyf * */ public class DBModuleCommonPropertyPage extends EMFExtendSectionScrolledFormPage<ARESProjectProperty> { private static final char DATABASE_SEPARATOR_CHAR = ','; /**��ǰ���ݿ�*/ private Combo comboDataBase; /**֧�����ݿ�*/ private Text txtSupDatabases; /**�����ť*/ private Button btnChooseSup; /** * @param editor * @param id * @param title */ public DBModuleCommonPropertyPage(FormEditor editor, String id, String title) { super(editor, id, title); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.EMFExtendSectionScrolledFormPage#getModel() */ @Override protected DBModuleCommonProperty getModel() { return (DBModuleCommonProperty) 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 toolkitDB = managedForm.getToolkit(); Section sectionDB = createSectionWithTitle(managedForm.getForm() .getBody(), toolkitDB, "���ݿ�", true); final Composite compDB = toolkitDB.createComposite(sectionDB, SWT.NONE); Label lbDatabase = toolkitDB.createLabel(compDB, "��ǰ���ݿ�", SWT.NONE); comboDataBase = new Combo(compDB, SWT.NONE|SWT.READ_ONLY); Label lbSupportDatabase = toolkitDB.createLabel(compDB, "֧�����ݿ�", SWT.NONE); txtSupDatabases = new Text(compDB, SWT.NONE | SWT.BORDER | SWT.READ_ONLY); btnChooseSup = new Button(compDB, SWT.PUSH); btnChooseSup.setText("���"); btnChooseSup.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { DBModuleDatabaseSelectionDialog dbModuledialog = new DBModuleDatabaseSelectionDialog(compDB.getShell(), "ѡ�����ݿ�����", getModel()); if(dbModuledialog.open() == Window.OK){ List<String> list = (List<String>) dbModuledialog.getResult(); getEditingDomain().getCommandStack().execute( SetCommand.create(getEditingDomain(), getModel(), DatabasePackage.Literals.DB_MODULE_COMMON_PROPERTY__SUPPORT_DATABASES, StringUtils.join(list.toArray(), DATABASE_SEPARATOR_CHAR))); } } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); // ���ò��� compDB.setLayout(new GridLayout(3, false)); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).grab(false, false).span(1, 1).applyTo(lbDatabase); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(2, 1).applyTo(comboDataBase); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).grab(false, false).span(1, 1).applyTo(lbSupportDatabase); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(1, 1).applyTo(txtSupDatabases); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(false, false).span(1, 1).applyTo(btnChooseSup); sectionDB.setClient(compDB); toolkitDB.paintBordersFor(compDB); refreshItems(); //���ݰ� databinding(); } /** * */ private void databinding() { getBindingContext().bindValue(SWTObservables.observeText(comboDataBase), EMFEditObservables.observeValue(getEditingDomain(), getModel(), DatabasePackage.Literals.DB_MODULE_COMMON_PROPERTY__DATABASE)); getModel().eAdapters().add(new AdapterImpl(){ /* (non-Javadoc) * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) */ @Override public void notifyChanged(Notification msg) { if (DatabasePackage.Literals.DB_MODULE_COMMON_PROPERTY__SUPPORT_DATABASES.equals(msg.getFeature())) { refreshItems(); } } }); getBindingContext().bindValue(SWTObservables.observeText(txtSupDatabases, SWT.Modify), EMFEditObservables.observeValue(getEditingDomain(), getModel(), DatabasePackage.Literals.DB_MODULE_COMMON_PROPERTY__SUPPORT_DATABASES)); } private void refreshItems() { String oldText = comboDataBase.getText(); comboDataBase.setItems(StringUtils.split(getModel().getSupportDatabases(), DATABASE_SEPARATOR_CHAR)); if (!StringUtils.isBlank(oldText)) { comboDataBase.setText(oldText); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.page.ExtendPageWithMyDirtySystem#shouldLoad() */ @Override public boolean shouldLoad() { // try { // if(getARESProject().getProject().hasNature(JRESCore.MODULE_NATURE)) { // 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 DatabasePackage.Literals.DB_MODULE_COMMON_PROPERTY; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.EMFExtendSectionScrolledFormPage#getMapKey() */ @Override protected String getMapKey() { //return IJRESConstant.DBMODULE_COMMONPROPERTY_KEY; return ""; } }