/** * Դ�������ƣ�TableSQLPreviewUpdater.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.database.ui.editors; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.dialogs.IPageChangedListener; import org.eclipse.jface.dialogs.PageChangedEvent; import com.hundsun.ares.studio.jres.database.utils.DBTableGenCodeUtils; /** * @author sundl * */ public class TableSQLPreviewUpdater implements IPageChangedListener{ private Job job; /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IPageChangedListener#pageChanged(org.eclipse.jface.dialogs.PageChangedEvent) */ @Override public void pageChanged(PageChangedEvent event) { if (event.getSelectedPage() instanceof TableSQLPreviewPage) { final TableSQLPreviewPage page = (TableSQLPreviewPage) event.getSelectedPage(); final EObject eObj = page.getEditor().getInfo(); page.setGenerating(true); page.update(); if (job == null) { job = new Job("generating sql...") { @Override protected IStatus run(IProgressMonitor monitor) { if (monitor.isCanceled()) return Status.CANCEL_STATUS; String fullScript = DBTableGenCodeUtils.genTableFullCode(page.getEditor().getARESResource(), eObj).toString(); if (monitor.isCanceled()) return Status.CANCEL_STATUS; page.setFullScript(fullScript); String patchScript = DBTableGenCodeUtils.genTablePatchCode(page.getEditor().getARESResource(), eObj).toString(); if (monitor.isCanceled()) return Status.CANCEL_STATUS; page.setPatchScript(patchScript); if (monitor.isCanceled()) return Status.CANCEL_STATUS; page.setGenerating(false); page.getSite().getShell().getDisplay().asyncExec(new Runnable() { @Override public void run() { page.update(); } }); return Status.OK_STATUS; } }; job.setSystem(true); } job.cancel(); job.schedule(); } } }