X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSyntaxParserThread.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSyntaxParserThread.java deleted file mode 100644 index b04c4f3..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSyntaxParserThread.java +++ /dev/null @@ -1,421 +0,0 @@ -package net.sourceforge.phpeclipse.phpeditor; - -import java.io.IOException; -import java.io.InputStream; - -import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.builder.PHPBuilder; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.editors.text.TextEditor; - -import test.PHPParserManager; -import test.PHPParserSuperclass; - - -public class PHPSyntaxParserThread extends Thread { - private static String[] EXTENSIONS = { ".php", ".php3", ".php4", ".inc", ".phtml" }; - - private String text = ""; - private String previousText = ""; - - private boolean stopValidation = false; - private boolean validationTerminated = false; - private boolean isActive = false; - - private TextEditor fTextEditor; - private ISourceViewer fSourceViewer; - - private int previousHashCode = 0; - // Defaults - private int validationInterval = 2000; //millis - private int waitForTermination = 400; // millis - private int maxErrorsShown = 10; - - public PHPSyntaxParserThread( - TextEditor textEditor, - ISourceViewer viewer) { - super(); - fTextEditor = textEditor; - fSourceViewer = viewer; - } - - public void setText(String text) { - if (!isActive) - this.text = text; - } - - public void setText(String text, boolean forceUpdate) { - if (!isActive) { - this.text = text; - } - - if (forceUpdate) { - this.previousText = ""; - this.previousHashCode = 0; - } - } - - public String getText() { - return text; - } - - public void setInterval(int millis) { - this.validationInterval = millis; - } - - public int getInterval() { - return validationInterval; - } - - public void setErrorsShown(int number) { - this.maxErrorsShown = number; - } - - public int getErrorsShown() { - return maxErrorsShown; - } - - public void dispose() { - this.stopValidation = true; - - if (validationTerminated == false) { - - try { - Thread.sleep(waitForTermination); - } catch (Exception e) { - } - } - } - - public void run() { - while (stopValidation == false) { - try { - - this.isActive = true; - boolean ret = this.validateSyntax(); - - this.previousText = this.text; - this.isActive = false; - - Thread.sleep(validationInterval); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - this.validationTerminated = true; - } - - public boolean validateSyntax() { - - boolean phpFlag = false; - try { - IFile fileToParse = getPHPFile(fTextEditor.getEditorInput()); - if (fileToParse == null) { - // should never happen - System.err.println("Error : no file in the editor"); - // should throw an exception - return false; - } - String name = fileToParse.getName(); - for (int i = 0; i 0) { -// content.append(new String(buffer)); -// } -// in.close(); -// -// //jjjjjjj -// // DEBUG start -// System.out.println("-----------------------------------------"); -// System.out.println(" OUTPUT"); -// System.out.println("-----------------------------------------"); -// System.out.println(content); -// System.out.println("-----------------------------------------"); -// // DEBUG END -// -// String line = null; -// List lines = new ArrayList(); -// int index; -// -// // Compare checksums -// int hashCode = content.toString().hashCode(); -// -// if (previousHashCode == hashCode) { -// -// return true; -// } -// -// previousHashCode = hashCode; -// -// StringTokenizer st = new StringTokenizer(content.toString(), "\n"); -// -// int lineCount = 0; -// -// while (st.hasMoreTokens()) { -// line = st.nextToken(); -// if (line.indexOf("\r") != -1) { -// line = line.substring(0, line.indexOf("\r")); -// } -// -// lines.add(line); -// if (++lineCount >= maxErrorsShown) { -// break; -// } -// -// } -// -// //Delete markers -// resource.deleteMarkers(IMarker.PROBLEM, true, 1); -// -// // Markers have to be added in reverse order -// // Otherwise lower line number will appear at the end of the list -// for (int i = lines.size() - 1; i >= 0; i--) { -// line = (String) lines.get(i); -// -// // If error message is not from temporary file, skip -// if (line.indexOf(tmpFileName) == -1) { -// continue; -// } -// -// // Delete filename from error message -// StringBuffer lineSb = new StringBuffer(line); -// replace(lineSb, tmpFileName + " ", "", true); -// line = lineSb.toString(); -// -// if ((index = line.indexOf(PERL_ERROR_INDICATOR)) != -1) { -// -// // truncatedLIne is the stripped error-line up to the next " " after the line number if present -// // To avoid cluttering with other "." and "," which might occur in the error message -// String truncatedLine = line; -// if (truncatedLine -// .indexOf(" ", index + PERL_ERROR_INDICATOR.length() + 1) -// != -1) { -// truncatedLine = -// truncatedLine.substring( -// 0, -// truncatedLine.indexOf( -// " ", -// index + PERL_ERROR_INDICATOR.length() + 1)); -// } -// -// int endIndex; -// if ((endIndex = truncatedLine.indexOf(".", index)) == -1) { -// endIndex = truncatedLine.indexOf(",", index); -// } -// -// if (endIndex == -1) { -// continue; -// } -// -// String lineNr = -// truncatedLine.substring( -// index + PERL_ERROR_INDICATOR.length(), -// endIndex); -// -// // If there is an addition to the error message -// if (i + 1 < lines.size()) { -// if (((String) lines.get(i + 1)).startsWith(" ")) { -// line += " " + (String) lines.get(i + 1); -// } -// } -// -// IMarker marker = resource.createMarker(IMarker.PROBLEM); -// -// // Check if it's a warning -// boolean isWarning = false; -// -// for (int x = 0; x < WARNING_STRINGS.length; x++) { -// if (truncatedLine.indexOf(WARNING_STRINGS[x]) != -1) { -// isWarning = true; -// } -// } -// -// if (isWarning) { -// marker.setAttribute( -// IMarker.SEVERITY, -// IMarker.SEVERITY_WARNING); -// } else { -// marker.setAttribute( -// IMarker.SEVERITY, -// IMarker.SEVERITY_ERROR); -// } -// -// marker.setAttribute(IMarker.MESSAGE, line); -// -// marker.setAttribute( -// IMarker.LINE_NUMBER, -// Integer.parseInt(lineNr)); -// -// Position pos = -// new Position( -// fSourceViewer.getDocument().getLineOffset( -// Integer.parseInt(lineNr) - 1)); -// fSourceViewer.getAnnotationModel().addAnnotation( -// new MarkerAnnotation(marker), -// pos); -// -// } -// } -// -// } catch (Exception e) { -// e.printStackTrace(); -// if (proc != null) { -// killProcess(proc); -// } -// return false; -// } finally { -// try { -// // Delete tmp file -// new File(tmpFileName).delete(); -// } catch (Exception ex) { -// ex.printStackTrace(); -// } -// } - - return true; - - } - - /** - * Finds the file that's currently opened in the PHP Text Editor - */ - protected IFile getPHPFile(IEditorInput editorInput) { - if (editorInput instanceof IFileEditorInput) - return ((IFileEditorInput) editorInput).getFile(); - - return null; - } - - protected void parse(IFile fileToParse, InputStream iStream) { - - StringBuffer buf = new StringBuffer(); - int c0; - try { - while ((c0 = iStream.read()) != (-1)) { - buf.append((char) c0); - } - } catch (IOException e) { - return; - } - String input = buf.toString(); - - PHPParserSuperclass parser = PHPParserManager.getParser(fileToParse); - try { - parser.parse(input); - } catch (CoreException e) { - } - } - - private void killProcess(Process proc) { - while (true) { - try { - proc.destroy(); - proc.exitValue(); - } catch (Exception ex) { - - continue; - } - break; - } - } - - // Replaces all instances of the String o with the String n in the - // StringBuffer orig if all is true, or only the first instance if all is false. - private static void replace( - StringBuffer orig, - String o, - String n, - boolean all) { - if (orig == null || o == null || o.length() == 0 || n == null) - throw new IllegalArgumentException("Null or zero-length String"); - - int i = 0; - - while (i + o.length() <= orig.length()) { - if (orig.substring(i, i + o.length()).equals(o)) { - orig.replace(i, i + o.length(), n); - if (!all) - break; - else - i += n.length(); - } else - i++; - } - } -}