/**
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.logic.ui.pages;
import java.util.List;
import java.util.Map;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.engin.format.CodeFormater;
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 LogicGenCodeThread {
private LogicPreViewPage page;
private List<String> skeletonList;
private Thread genThread = null;
private ResourceEngin engin;
private IARESResource resource;
private Map<Object, Object> context ;
private boolean isCancel = false;
public LogicGenCodeThread(LogicPreViewPage 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 LogicGenRun());
}
public void genCode(boolean isCancel ){
this.isCancel = isCancel;
if(!isCancel){
genThread.start();
}
}
private class LogicGenRun implements Runnable{
String text = "";
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
for(String skeleton : skeletonList ){
if(skeletonList.size()>1){
// String fileName = UFTUtil.getFileName(resource.getName(), skeleton);
// text += "/******************************" + fileName + "******************************/\r\n";
}
try {
if(!isCancel){
StringBuffer sb = new StringBuffer(engin.generate(
new DefaultSkeletonInput(
skeleton,
resource), context));
text += CodeFormater.formatCByForce(sb);
}
// text += sb.toString();
} catch (Exception e) {
e.printStackTrace();
text += e.getMessage();
}
text += "\r\n";
}
try {
if (page != null && page.getEditor() != null) {
page.getEditor().getSite().getShell().getDisplay()
.asyncExec(new Runnable() {
@Override
public void run() {
if (page.getDocumentProvider() != null) {
if(!isCancel){
page.setInput(new TextEditorInput(text));
}
}
}
});
}
} catch (Exception e) {
}
}
}
}