1 package org.antlr.works.editor; 2 3 import org.antlr.works.ate.analysis.ATEAnalysisItem; 4 import org.antlr.works.ate.analysis.ATEAnalysisManager; 5 import org.antlr.works.components.grammar.CEditorGrammar; 6 7 import java.awt.*; 8 import java.util.ArrayList ; 9 import java.util.List ; 10 40 41 public class EditorAnalysisManager extends ATEAnalysisManager { 42 43 protected static final int ANALYSIS_ITEM_ERROR = 0; 44 protected static final int ANALYSIS_ITEM_WARNING = 1; 45 protected static final int ANALYSIS_ITEM_OTHER = 2; 46 47 protected final Color greenColor = new Color(0f, 0.9f, 0.25f, 1.0f); 48 49 protected CEditorGrammar editor; 50 51 protected int numberOfErrors; 52 protected int numberOfWarnings; 53 54 public EditorAnalysisManager(CEditorGrammar editor) { 55 this.editor = editor; 56 } 57 58 public int[] getAvailableTypes() { 59 return new int[] { ANALYSIS_ITEM_WARNING, ANALYSIS_ITEM_ERROR, ANALYSIS_ITEM_OTHER }; 60 } 61 62 public List <ATEAnalysisItem> getItemsForType(int type) { 63 switch(type) { 64 case ANALYSIS_ITEM_ERROR: 65 return getErrors(); 66 case ANALYSIS_ITEM_WARNING: 67 return getWarnings(); 68 case ANALYSIS_ITEM_OTHER: 69 return getOthers(); 70 } 71 return null; 72 } 73 74 public int getLinesCount() { 75 return editor.parserEngine.getMaxLines(); 76 } 77 78 public Color getAnalysisColor() { 79 if(numberOfErrors == 0 && numberOfWarnings == 0) 80 return greenColor; 81 else if(numberOfErrors == 0) 82 return Color.yellow; 83 else 84 return Color.red; 85 } 86 87 public String getAnalysisDescription() { 88 StringBuffer sb = new StringBuffer (); 89 if(numberOfErrors == 0) 90 sb.append("No error"); 91 else { 92 sb.append(numberOfErrors); 93 if(numberOfErrors > 1) 94 sb.append(" errors found"); 95 else 96 sb.append(" error found"); 97 } 98 if(numberOfWarnings > 0) { 99 sb.append("\n"); 100 sb.append(numberOfWarnings); 101 if(numberOfWarnings > 1) 102 sb.append(" warnings found"); 103 else 104 sb.append(" warning found"); 105 } 106 return sb.toString(); 107 } 108 109 public List <ATEAnalysisItem> getErrors() { 110 List <ATEAnalysisItem> errors = new ArrayList <ATEAnalysisItem>(); 111 for (EditorInspectorItem item : editor.editorInspector.getErrors()) { 112 errors.add(new ATEAnalysisItem(ANALYSIS_ITEM_ERROR, item.color, item.startLineNumber, item.startIndex, item.description)); 113 } 114 numberOfErrors = errors.size(); 115 return errors; 116 } 117 118 public List <ATEAnalysisItem> getWarnings() { 119 List <ATEAnalysisItem> warnings = new ArrayList <ATEAnalysisItem>(); 120 for (EditorInspectorItem item : editor.editorInspector.getWarnings()) { 121 warnings.add(new ATEAnalysisItem(ANALYSIS_ITEM_WARNING, item.color, item.startLineNumber, item.startIndex, item.description)); 122 } 123 numberOfWarnings = warnings.size(); 124 return warnings; 125 } 126 127 public List <ATEAnalysisItem> getOthers() { 128 List <ATEAnalysisItem> others = new ArrayList <ATEAnalysisItem>(); 129 for (EditorInspectorItem item : editor.editorInspector.getDecisionDFAs()) { 130 others.add(new ATEAnalysisItem(ANALYSIS_ITEM_OTHER, item.color, item.startLineNumber, item.startIndex, item.description)); 131 } 132 return others; 133 } 134 135 } 136 | Popular Tags |