package com.aptana.editor.php.internal.validation;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import com.aptana.core.build.AbstractBuildParticipant;
import com.aptana.core.logging.IdeLog;
import com.aptana.editor.common.CommonEditorPlugin;
import com.aptana.editor.php.PHPEditorPlugin;
import com.aptana.editor.php.internal.ui.editor.PHPSourceEditor;
import com.aptana.index.core.build.BuildContext;
/**
* Description: php内置语法校验器(只是个空壳, 真正的校验是在语法树的建立时做的, 报告器是 BuildProblemReporter)
* Copyright (c) Department of Research and Development/Beijing/Digital Heaven.
* All Rights Reserved.
* @version 1.0 2014-9-17 下午2:44:52 by 黄磊(huanglei@d-heaven.com)创建
*/
public class PHPParserValidator extends AbstractBuildParticipant
{
public static final String ID = "com.aptana.editor.php.internal.validation.PHPParserValidator";
private int kind;
@Override
public void buildStarting(IProject project, int kind, IProgressMonitor monitor)
{
super.buildStarting(project, kind, monitor);
this.kind = kind;
}
public void buildFile(BuildContext context, IProgressMonitor monitor)
{
if(kind == CommonEditorPlugin.VALIDATOR_BUILD_TYPE){
try{
final PHPSourceEditor[] editor = new PHPSourceEditor[1];
Display.getDefault().syncExec(new Runnable(){
public void run()
{
IEditorPart edit = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if(edit instanceof PHPSourceEditor){
editor[0] = ((PHPSourceEditor)edit);
}
}
});
if(editor[0] != null){
editor[0].getAST(BuildType.BUILD.toString());
}
}
catch (Exception e)
{
IdeLog.logError(PHPEditorPlugin.getDefault(), e);
}
}
}
public void deleteFile(BuildContext context, IProgressMonitor monitor)
{
}
public void initContext(BuildContext context)
{
}
}