/**
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.procedure.ui.editor.page;
import java.util.List;
import java.util.Map;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.engin.logic.ResourceEngin;
import com.hundsun.ares.studio.engin.skeleton.DefaultSkeletonInput;
import com.hundsun.ares.studio.ui.editor.text.TextEditorInput;
/**
* @author liaogc
* ����Ԥ��ʱ���ɴ����߳�
*/
public class ProcedureGenCodeThread {
private ProcedurePreViewPage page;
private List<String> skeletonList;
private Thread genThread = null;
private ResourceEngin engin;
private IARESResource resource;
private Map<Object, Object> context ;
public ProcedureGenCodeThread(ProcedurePreViewPage page,List<String> skeletonList, ResourceEngin engin,IARESResource resource, Map<Object, Object> context){
this.page = page;
this.skeletonList = skeletonList;
this.engin = engin;
this.resource = resource;
this.context = context;
this.genThread = new Thread(new ProcedureGenRun());
}
public void genCode(){
genThread.start();
}
private class ProcedureGenRun implements Runnable{
StringBuffer text = new StringBuffer();
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
for(String skeleton : skeletonList ){
try {
text.append(engin.generate(new DefaultSkeletonInput(
skeleton,
resource), context));
} catch (Exception e) {
e.printStackTrace();
text.append(e.getMessage());
}
text.append("\r\n");
}
page.getEditor().getSite().getShell().getDisplay().asyncExec(new Runnable(){
@Override
public void run() {
page.setInput(new TextEditorInput(text.toString()));
}});
}
}
}